diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml deleted file mode 100644 index be653401a4..0000000000 --- a/.github/workflows/docs.yaml +++ /dev/null @@ -1,66 +0,0 @@ -name: Documentation - -on: - push: - branches: - - master - paths: - - "docs/**" - - ".github/workflows/docs.yaml" - pull_request: - branches: - - master - paths: - - "docs/**" - - ".github/workflows/docs.yaml" - -env: - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - NETLIFY_ACCESS_TOKEN: ${{ secrets.NETLIFY_ACCESS_TOKEN }} - OUT_DIR: build/ - TARGET_OUT_DIR: build/cli/ - -jobs: - run: - runs-on: ubuntu-18.04 - steps: - - uses: actions/checkout@v2 - - name: Use Node.js - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: Build Docs - run: | - yarn - node ./node_modules/mdx-link-checker/index.js pages - yarn build - working-directory: ./docs - - name: Prepare Deployment - run: | - if [ ! -z "$NETLIFY_ACCESS_TOKEN" ] - then - rm -rf $OUT_DIR/docs/fragments $OUT_DIR/docs/**/fragments - mkdir -p tmp-$TARGET_OUT_DIR - mv $OUT_DIR/* tmp-$TARGET_OUT_DIR - mkdir -p $TARGET_OUT_DIR - mv tmp-$TARGET_OUT_DIR/* $TARGET_OUT_DIR - - npm install -g netlify-cli - fi - working-directory: ./docs - - name: Deploy Preview Site - if: github.ref != 'refs/heads/master' - run: | - if [ ! -z "$NETLIFY_ACCESS_TOKEN" ] - then - netlify deploy --auth=$NETLIFY_ACCESS_TOKEN --site=$NETLIFY_SITE_ID --dir=$OUT_DIR - fi - working-directory: ./docs - - name: Deploy Production Site - if: github.ref == 'refs/heads/master' - run: | - if [ ! -z "$NETLIFY_ACCESS_TOKEN" ] - then - netlify deploy --auth=$NETLIFY_ACCESS_TOKEN --site=$NETLIFY_SITE_ID --dir=$OUT_DIR --prod - fi - working-directory: ./docs diff --git a/.vscode/settings.json b/.vscode/settings.json index 6a42ad81e3..912f317ac8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "go.installDependenciesWhenBuilding": false, "go.formatTool": "goimports", "go.coverOnTestPackage": true, - "go.useLanguageServer": true + "go.useLanguageServer": true, + "editor.tabSize": 2 } diff --git a/cmd/init.go b/cmd/init.go index 71b25219de..24a09a269a 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -443,15 +443,14 @@ echo 'Anyone using this project can invoke it via "devspace run migrate-db"'`, // Add pipeline: dev config.Pipelines["dev"] = &latest.Pipeline{ - Run: ` -run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") -create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" -start_dev ` + imageName + ` # 3. Start dev mode "` + imageName + `" (see "dev" section)`, + Run: `run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") +create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" +start_dev ` + imageName + ` # 3. Start dev mode "` + imageName + `" (see "dev" section)`, } // Add pipeline: dev config.Pipelines["deploy"] = &latest.Pipeline{ - Run: `run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") + Run: `run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") build_images --all -t $(git describe --always) # 2. Build, tag (git commit hash) and push all images (see "images") create_deployments --all # 3. Deploy Helm charts and manifests specfied as "deployments"`, } @@ -670,9 +669,15 @@ func (cmd *InitCmd) addDevConfig(config *latest.Config, imageName, image string, devConfig.Sync = []*latest.SyncConfig{} } - devConfig.Sync = append(devConfig.Sync, &latest.SyncConfig{ + syncConfig := &latest.SyncConfig{ Path: "./", - }) + } + + if _, err := os.Stat(".dockerignore"); err == nil { + syncConfig.UploadExcludeFile = ".dockerignore" + } + + devConfig.Sync = append(devConfig.Sync, syncConfig) devConfig.Terminal = &latest.Terminal{ Command: "./" + startScriptName, diff --git a/docs/.nvmrc b/docs/.nvmrc new file mode 100644 index 0000000000..270c4d9c3b --- /dev/null +++ b/docs/.nvmrc @@ -0,0 +1 @@ +16.7 diff --git a/docs/README.md b/docs/README.md index 1699bf6322..8f0feddfc9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,43 +7,43 @@ This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern ### Installation ``` -$ yarn +yarn ``` -### Local Development - +### Development ``` -$ yarn start +yarn start ``` - This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. -### Build - +### Production Build ``` -$ yarn build +yarn build ``` - This command generates static content into the `build` directory and can be served using any static contents hosting service. -### Deployment - +### Create New Major Version +```bash +yarn run docusaurus docs:version 5.x ``` -$ GIT_USER= USE_SSH=true yarn deploy + +### Generate CLI Reference +```bash +cd ../ # main project directory +go run ./docs/hack/cli/main.go ``` -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. +### Generate Partials For Config (devspace.yaml) +```bash +cd ../ # main project directory +go run ./docs/hack/config/partials/main.go +``` -## Creating New Versions -### 1. Generate Command Docs +### Generate Schema For Config (devspace.yaml) ```bash cd ../ # main project directory -go run -mod=vendor ./hack/gen-docs.go -``` -### 2. Create Version -```bash -yarn run docusaurus docs:version 5.18 +go run ./docs/hack/config/schemas/main.go ``` diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 3ad8614739..917e9c7605 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,9 +1,9 @@ -__webpack_public_path__ = "/cli/" +__webpack_public_path__ = "/docs/" -const versions = require('./versions.json'); +const resolveGlob = require('resolve-glob'); module.exports = { - title: 'DevSpace CLI | Documentation', + title: 'DevSpace | Documentation', tagline: 'The tagline of my site', url: 'https://devspace.sh', baseUrl: __webpack_public_path__, @@ -15,52 +15,47 @@ module.exports = { disableSwitch: true }, navbar: { + //hideOnScroll: true, logo: { alt: 'DevSpace', - src: '/img/logo-devspace.svg', + src: '/media/logos/devspace-logo-primary.svg', href: 'https://devspace.sh/', target: '_self' }, items: [ { - to: 'versions', - label: `${versions[0]}`, - position: 'left', - className: 'version-link' + type: 'docsVersionDropdown', + position: 'left', }, { - href: 'https://devspace.sh/', - label: 'Website', - position: 'left', - target: '_self' + href: 'https://devspace.sh/', + label: 'Website', + position: 'left', + target: '_self' }, { - href: __webpack_public_path__ + 'docs/' + (process.env.NODE_ENV == 'production' ? '' : 'next/') + 'introduction', - label: 'Docs', - position: 'left', - target: '_self' + href: 'https://loft.sh/blog/tags/devspace', + label: 'Blog', + position: 'left', + target: '_self' }, { - href: 'https://devspace.cloud/blog', - label: 'Blog', - position: 'left' + href: 'https://slack.loft.sh/', + className: 'slack-link', + 'aria-label': 'Slack', + position: 'right', }, { - href: 'https://slack.k8s.io/#devspace', - className: 'slack-link', - 'aria-label': 'Slack', - position: 'right', - }, - { - href: 'https://github.com/loft-sh/devspace', - className: 'github-link', - 'aria-label': 'GitHub', - position: 'right', + href: 'https://github.com/loft-sh/devspace', + className: 'github-link', + 'aria-label': 'GitHub', + position: 'right', }, ], }, algolia: { - apiKey: "b9533b52dde7e23272dbd4211435c070", + apiKey: "9396b07e4ad34e90394fbfe79695d88d", + appId: "L1ZH1CZBMP", indexName: "devspace-cli", placeholder: "Search...", algoliaOptions: {}, @@ -68,7 +63,7 @@ module.exports = { footer: { style: 'light', links: [], - copyright: `Copyright © ${new Date().getFullYear()} DevSpace Authors`, + copyright: `Copyright © DevSpace Authors
DevSpace is an open-source project originally created by Loft Labs, Inc.`, }, }, presets: [ @@ -77,27 +72,92 @@ module.exports = { { docs: { path: 'pages', - routeBasePath: 'docs', + routeBasePath: '/', sidebarPath: require.resolve('./sidebars.js'), - editUrl: - 'https://github.com/loft-sh/devspace/edit/master/docs/', - }, + showLastUpdateTime: true, + editUrl: 'https://github.com/loft-sh/devspace/edit/master/docs/', + lastVersion: "current", + versions: { + current: { + label: "6.x (Latest)", + path: "" + } + }, + remarkPlugins: [ + [ + require('mdx-mermaid'), + { + mermaid: { + securityLevel: "loose", + theme: 'neutral', + themeVariables: { + primaryColor: '#00bdff', + lineColor: '#bdd6f3', + arrowheadColor: '#bdd6f3', + mainBkg: '#6c89ad', + contrast: '#3e5371', + textColor: '#fff', + primaryTextColor: '#fff', + secondaryTextColor: '#fff', + tertiaryTextColor: '#fff', + border1: 'transparent', + border2: 'transparent', + clusterBkg: 'transparent', + clusterBorder: '#bdd6f3', + edgeLabelBackground: '#bcd6f3', + + }, + flowchart: { + curve: 'basis', + nodeSpacing: 20, + rankSpacing: 50, + } + } + } + ] + ], + }, theme: { - customCss: require.resolve('./src/css/custom.css'), + customCss: resolveGlob.sync(['./src/css/**/*.scss']), }, }, ], + [ + 'redocusaurus', + { + specs: [ + { + spec: 'schemas/config-openapi.json', + }, + ], + theme: { + primaryColor: '#00bdff', + redocOptions: { + hideDownloadButton: false, + disableSearch: true, + colors: { + border: { + dark: '#00bdff', + light: '#00bdff', + } + } + }, + }, + }, + ], + ], + themes: [ + '@saucelabs/theme-github-codeblock' + ], + plugins: [ + 'docusaurus-plugin-sass', + 'plugin-image-zoom', ], scripts: [ { - src: - 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js', - async: true, - }, - { - src: - 'https://devspace.sh/docs.js', - async: true, + src: 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js', + async: true, }, ], + clientModules: resolveGlob.sync(['./src/js/**/*.js']), }; diff --git a/docs/hack/cli/main.go b/docs/hack/cli/main.go new file mode 100644 index 0000000000..d36350e3f0 --- /dev/null +++ b/docs/hack/cli/main.go @@ -0,0 +1,102 @@ +package main + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "path" + "path/filepath" + "regexp" + "strings" + + "github.com/loft-sh/devspace/cmd" + "github.com/loft-sh/devspace/pkg/util/factory" + "github.com/spf13/cobra/doc" +) + +const cliDocsDir = "./docs/pages/cli" +const headerTemplate = `--- +title: "%s --help" +sidebar_label: %s +--- + +` + +var fixSynopsisRegexp = regexp.MustCompile("(?si)(## devspace.*?\n)(.*?)#(## Synopsis\n*\\s*)(.*?)(\\s*\n\n\\s*)((```)(.*?))?#(## Options)(.*?)((### Options inherited from parent commands)(.*?)#(## See Also)(\\s*\\* \\[devspace\\][^\n]*)?(.*))|(#(## See Also)(\\s*\\* \\[devspace\\][^\n]*)?(.*))\n###### Auto generated by spf13/cobra on .*$") + +// Run executes the command logic +func main() { + filePrepender := func(filename string) string { + name := filepath.Base(filename) + base := strings.TrimSuffix(name, path.Ext(name)) + command := strings.Split(base, "_") + title := strings.Join(command, " ") + sidebarLabel := title + l := len(command) + + if l > 1 { + matches, err := filepath.Glob(cliDocsDir + "/devspace_" + command[1]) + if err != nil { + log.Fatal(err) + } + + if len(matches) > 2 { + sidebarLabel = command[l-1] + } + } + + return fmt.Sprintf(headerTemplate, title, sidebarLabel) + } + + linkHandler := func(name string) string { + base := strings.TrimSuffix(name, path.Ext(name)) + if base == "devspace" { + base = "README" + } + return strings.ToLower(base) + ".md" + } + + f := factory.DefaultFactory() + rootCmd := cmd.BuildRoot(f, true) + + err := doc.GenMarkdownTreeCustom(rootCmd, cliDocsDir, filePrepender, linkHandler) + if err != nil { + log.Fatal(err) + } + + err = filepath.Walk(cliDocsDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + stat, err := os.Stat(path) + if err != nil { + return err + } + + if stat.IsDir() { + return nil + } + + content, err := ioutil.ReadFile(path) + if err != nil { + return err + } + + newContents := fixSynopsisRegexp.ReplaceAllString(string(content), "$2$3$7$8```\n$4\n```\n\n\n## Flags$10\n## Global & Inherited Flags$13") + + err = ioutil.WriteFile(path, []byte(newContents), 0) + if err != nil { + return err + } + + if info.Name() == "devspace.md" { + os.Rename(path, filepath.Join(cliDocsDir, "..", "cli.md")) + } + + return nil + }) + if err != nil { + log.Fatal(err) + } +} diff --git a/docs/hack/config/partials/main.go b/docs/hack/config/partials/main.go new file mode 100644 index 0000000000..46831cfe8c --- /dev/null +++ b/docs/hack/config/partials/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/loft-sh/devspace/docs/hack/util" + "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest" +) + +const configPartialBasePath = "docs/pages/configuration/_partials/" + +func main() { + repository := "github.com/loft-sh/devspace" + configGoPackage := "./pkg/devspace/config/versions/latest" + versionedConfigBasePath := configPartialBasePath + latest.Version + "/" + + schema := util.GenerateSchema(latest.Config{}, repository, configGoPackage) + util.GenerateReference(schema, versionedConfigBasePath) + + schema = util.GenerateSchema(latest.ComponentConfig{}, repository, configGoPackage) + util.GenerateReference(schema, versionedConfigBasePath+"deployments/helm/componentChart/") +} diff --git a/docs/hack/config/schemas/main.go b/docs/hack/config/schemas/main.go new file mode 100644 index 0000000000..01016210a7 --- /dev/null +++ b/docs/hack/config/schemas/main.go @@ -0,0 +1,77 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "github.com/invopop/jsonschema" + "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest" +) + +const jsonschemaFile = "docs/schemas/config-jsonschema.json" +const openapiSchemaFile = "docs/schemas/config-openapi.json" + +// Run executes the command logic +func main() { + r := new(jsonschema.Reflector) + r.AllowAdditionalProperties = true + r.PreferYAMLSchema = true + r.RequiredFromJSONSchemaTags = false + r.YAMLEmbeddedStructs = false + r.ExpandedStruct = true + + err := r.AddGoComments("github.com/loft-sh/devspace", "./pkg/devspace/config/versions/latest") + if err != nil { + panic(err) + } + + schema := r.Reflect(&latest.Config{}) + + genSchema(schema, jsonschemaFile) + genSchema(schema, openapiSchemaFile) +} + +func genSchema(schema *jsonschema.Schema, schemaFile string) { + isOpenAPISpec := schemaFile == openapiSchemaFile + prefix := "" + if isOpenAPISpec { + prefix = " " + } + schemaJSON, err := json.MarshalIndent(schema, prefix, " ") + if err != nil { + panic(err) + } + + schemaString := string(schemaJSON) + + if isOpenAPISpec { + schemaString = strings.ReplaceAll(schemaString, "#/$defs/", "#/definitions/Config/$defs/") + + schemaString = fmt.Sprintf(`{ + "swagger": "2.0", + "info": { + "version": "%s", + "title": "devspace.yaml" + }, + "paths": {}, + "definitions": { + "Config": %s + } +} +`, latest.Version, schemaString) + } + + err = os.MkdirAll(filepath.Dir(schemaFile), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(schemaFile, []byte(schemaString), os.ModePerm) + if err != nil { + panic(err) + } +} diff --git a/docs/hack/functions/main.go b/docs/hack/functions/main.go new file mode 100644 index 0000000000..bcf58cface --- /dev/null +++ b/docs/hack/functions/main.go @@ -0,0 +1,426 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "reflect" + "strings" + + "github.com/loft-sh/devspace/docs/hack/util" + basiccommands "github.com/loft-sh/devspace/pkg/devspace/pipeline/engine/basichandler/commands" + "github.com/loft-sh/devspace/pkg/devspace/pipeline/engine/pipelinehandler/commands" +) + +const functionPartialBasePath = "docs/pages/configuration/_partials/functions/" + +type Function struct { + Name string + Handler interface{} + Flags interface{} + Description string + Args string + ArgEnum []string + Return string + Group string + IsGlobal bool +} + +func main() { + functionRefContent := "\n\n" + globalFunctionRefContent := "\n\n" + pipelineFunctionRefContent := "\n\n" + functionRefFile := functionPartialBasePath + "reference.mdx" + globalFunctionRefFile := functionPartialBasePath + "reference_global.mdx" + pipelineFunctionRefFile := functionPartialBasePath + "reference_pipeline.mdx" + + groups := map[string]*util.Group{} + + for i := range Functions { + function := Functions[i] + + functionFile := fmt.Sprintf(functionPartialBasePath+"%s.mdx", function.Name) + pageContent := []byte{} + + partialImports := &[]string{} + flagContent := "" + + if function.Flags != nil { + flagRef := reflect.ValueOf(function.Flags).Type() + flagContent = getFlagReference(function.Name, functionFile, flagRef, partialImports, string(pageContent)) + } + + importContent := "" + for _, partialImport := range *partialImports { + importContent = importContent + util.GetPartialImport(partialImport, functionFile) + } + + err := os.MkdirAll(filepath.Dir(functionFile), os.ModePerm) + if err != nil { + panic(err) + } + + argEnum := "" + if function.ArgEnum != nil { + argEnum = `` + strings.Join(function.ArgEnum, " ") + `` + } + + anchorName := function.Name + functionContent := importContent + "\n" + fmt.Sprintf(util.TemplateFunctionRef, flagContent != "", "", "### ", function.Name, function.Args, argEnum, function.Return, !function.IsGlobal, anchorName, function.Description, flagContent) + + err = ioutil.WriteFile(functionFile, []byte(functionContent), os.ModePerm) + if err != nil { + panic(err) + } + + partialImport := util.GetPartialImport(functionFile, functionRefFile) + partialUse := fmt.Sprintf(util.TemplatePartialUse, util.GetPartialImportName(function.Name)) + partialImportGlobal := partialImport + partialUseGlobal := partialUse + partialImportPipeline := partialImport + partialUsePipeline := partialUse + writeRef := true + writeGlobalRef := false + writePipelineRef := false + + if function.Group != "" { + groupID := strings.ToLower(function.Group) + + globalGroupID := fmt.Sprintf("%s_global", groupID) + globalGroup, globalGroupExists := groups[globalGroupID] + + pipelineGroupID := fmt.Sprintf("%s_pipeline", groupID) + pipelineGroup, pipelineGroupExists := groups[pipelineGroupID] + + group, groupExists := groups[groupID] + if !groupExists { + group = &util.Group{ + Name: function.Group, + File: fmt.Sprintf(functionPartialBasePath+"group_%s.mdx", groupID), + Imports: &[]string{}, + Content: "\n\n", + } + groups[groupID] = group + } + + writeRef = !groupExists + partialImportGlobal = "" + partialUseGlobal = "" + partialImportPipeline = "" + partialUsePipeline = "" + + if !globalGroupExists { + globalGroup = &util.Group{ + Name: function.Group, + File: fmt.Sprintf(functionPartialBasePath+"group_%s.mdx", globalGroupID), + Imports: &[]string{}, + Content: "\n\n", + } + groups[globalGroupID] = globalGroup + writeGlobalRef = true + partialImportGlobal = util.GetPartialImport(globalGroup.File, globalFunctionRefFile) + partialUseGlobal = fmt.Sprintf(util.TemplatePartialUse, util.GetPartialImportName(globalGroup.File)) + } + + if !pipelineGroupExists { + pipelineGroup = &util.Group{ + Name: function.Group, + File: fmt.Sprintf(functionPartialBasePath+"group_%s.mdx", pipelineGroupID), + Imports: &[]string{}, + Content: "\n\n", + } + groups[pipelineGroupID] = pipelineGroup + writePipelineRef = true + partialImportPipeline = util.GetPartialImport(pipelineGroup.File, pipelineFunctionRefFile) + partialUsePipeline = fmt.Sprintf(util.TemplatePartialUse, util.GetPartialImportName(pipelineGroup.File)) + } + + group.Content = partialImport + group.Content + partialUse + + if function.IsGlobal { + globalGroup.Content = partialImport + globalGroup.Content + partialUse + } else { + pipelineGroup.Content = partialImport + pipelineGroup.Content + partialUse + } + + partialImport = util.GetPartialImport(group.File, functionRefFile) + partialUse = fmt.Sprintf(util.TemplatePartialUse, util.GetPartialImportName(group.File)) + } + + if writeRef { + functionRefContent = partialImport + functionRefContent + partialUse + } + + if writeGlobalRef { + globalFunctionRefContent = partialImportGlobal + globalFunctionRefContent + partialUseGlobal + } + + if writePipelineRef { + pipelineFunctionRefContent = partialImportPipeline + pipelineFunctionRefContent + partialUsePipeline + } + } + + util.ProcessGroups(groups) + + err := ioutil.WriteFile(functionRefFile, []byte(functionRefContent), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(globalFunctionRefFile, []byte(globalFunctionRefContent), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(pipelineFunctionRefFile, []byte(pipelineFunctionRefContent), os.ModePerm) + if err != nil { + panic(err) + } +} + +func getFlagReference(functionName, functionFile string, flagRef reflect.Type, partialImports *[]string, pageContent string) string { + flagPartialContent := "" + + for i := 0; i < flagRef.NumField(); i++ { + flag := flagRef.Field(i) + if flag.Anonymous { + flagPartialContent = flagPartialContent + getFlagReference(functionName, functionFile, flag.Type, partialImports, pageContent) + continue + } + + long := flag.Tag.Get("long") + if long == "" { + continue + } + + short := flag.Tag.Get("short") + description := flag.Tag.Get("description") + + if short != "" { + short = " / -" + short + } + + anchorName := functionName + "-" + long + flagContent := fmt.Sprintf(util.TemplateFunctionRef, false, "", "#### ", "--"+long+short, flag.Type.String(), "", "", false, anchorName, description, "") + + flagFile := fmt.Sprintf(functionPartialBasePath+"%s/%s.mdx", functionName, long) + err := os.MkdirAll(filepath.Dir(flagFile), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(flagFile, []byte(flagContent), os.ModePerm) + if err != nil { + panic(err) + } + + flagPartialContent = flagPartialContent + fmt.Sprintf(util.TemplatePartialUse, util.GetPartialImportName(flagFile)) + *partialImports = append(*partialImports, flagFile) + } + + return flagPartialContent +} + +const groupImages = "Images" +const groupDeployments = "Deployments" +const groupDev = "Dev" +const groupPipelines = "Pipelines" +const groupChecks = "Checks" +const groupOther = "Other" + +var Functions = []Function{ + { + Name: "build_images", + Description: `Builds all images passed as arguments in parallel`, + Args: `[image-1] [image-2] ...`, + Handler: commands.BuildImages, + Flags: commands.BuildImagesOptions{}, + Group: groupImages, + }, + { + Name: "ensure_pull_secrets", + Description: `Creates pull secrets for all images passed as arguments`, + Args: `[image-1] [image-2] ...`, + Handler: commands.EnsurePullSecrets, + Flags: commands.EnsurePullSecretsOptions{}, + Group: groupImages, + }, + { + Name: "get_image", + Description: `Returns the most recently built image and/or tag for a given image name`, + Args: `[image]`, + Handler: commands.GetImage, + Flags: commands.GetImageOptions{}, + Return: reflect.String.String(), + Group: groupImages, + }, + { + Name: "create_deployments", + Description: `Creates all deployments passed as arguments in parallel`, + Args: `[deployment-1] [deployment-2] ...`, + Handler: commands.CreateDeployments, + Flags: commands.CreateDeploymentsOptions{}, + Group: groupDeployments, + }, + { + Name: "purge_deployments", + Description: `Purges all deployments passed as arguments`, + Args: `[deployment-1] [deployment-2] ...`, + Handler: commands.PurgeDeployments, + Flags: commands.PurgeDeploymentsOptions{}, + Group: groupDeployments, + }, + { + Name: "start_dev", + Description: `Starts all dev modes passed as arguments`, + Args: `[dev-1] [dev-2] ...`, + Handler: commands.StartDev, + Flags: commands.StartDevOptions{}, + Group: groupDev, + }, + { + Name: "stop_dev", + Description: `Stops all dev modes passed as arguments`, + Args: `[dev-1] [dev-2] ...`, + Handler: commands.StopDev, + Flags: commands.StopDevOptions{}, + Group: groupDev, + }, + { + Name: "run_pipelines", + Description: `Runs all pipelines passed as arguments`, + Args: `[pipeline-1] [pipeline-2] ...`, + Handler: commands.RunPipelines, + Flags: commands.RunPipelineOptions{}, + Group: groupPipelines, + }, + { + Name: "run_default_pipeline", + Description: `Runs the default pipeline passed as arguments`, + Args: `[pipeline]`, + Handler: commands.RunDefaultPipeline, + Group: groupPipelines, + }, + { + Name: "run_dependency_pipelines", + Description: `Runs a pipeline of each dependency passed as arguments`, + Args: `[dependency-1] [dependency-2] ...`, + Handler: commands.RunDependencyPipelines, + Flags: commands.RunDependencyPipelinesOptions{}, + Group: groupPipelines, + }, + { + Name: "is_dependency", + Description: `Returns true if the pipeline currently being executed is run because the project is a dependency of another project`, + Handler: commands.IsDependency, + Return: reflect.Bool.String(), + Group: groupChecks, + IsGlobal: true, + }, + { + Name: "is_empty", + Description: `Returns true if the value of the argument is empty string`, + Args: `[value]`, + Handler: basiccommands.IsEmpty, + Return: reflect.Bool.String(), + Group: groupChecks, + IsGlobal: true, + }, + { + Name: "is_equal", + Description: `Returns true if the values of both arguments provided are equal`, + Args: `[value-1] [value-2]`, + Handler: basiccommands.IsEqual, + Return: reflect.Bool.String(), + Group: groupChecks, + IsGlobal: true, + }, + { + Name: "is_os", + Description: `Returns true if the current operating system equals the value provided as argument`, + Args: `[os]`, + ArgEnum: []string{"darwin", "linux", "windows", "aix", "android", "dragonfly", "freebsd", "hurd", "illumos", "ios", "js", "nacl", "netbsd", "openbsd", "plan9", "solaris", "zos"}, + Handler: basiccommands.IsOS, + Return: reflect.Bool.String(), + Group: groupChecks, + IsGlobal: true, + }, + { + Name: "is_true", + Description: `Returns true if the value of the argument is "true"`, + Args: `[value]`, + Handler: basiccommands.IsTrue, + Return: reflect.Bool.String(), + Group: groupChecks, + IsGlobal: true, + }, + { + Name: "select_pod", + Description: `Returns the name of a Kubernetes pod`, + Handler: commands.SelectPod, + Flags: commands.SelectPodOptions{}, + Return: reflect.String.String(), + Group: groupOther, + }, + { + Name: "exec_container", + Description: `Executes the command provided as argument inside a container`, + Args: `[command]`, + Flags: commands.ExecContainerOptions{}, + Handler: commands.ExecContainer, + Group: groupOther, + }, + { + Name: "get_config_value", + Description: `Returns the value of the config loaded from devspace.yaml`, + Args: `[json.path]`, + Handler: commands.GetConfigValue, + Return: reflect.String.String(), + Group: groupOther, + }, + { + Name: "cat", + Description: `Returns the content of a file`, + Args: `[file-path]`, + Handler: basiccommands.Cat, + Return: reflect.String.String(), + Group: groupOther, + IsGlobal: true, + }, + { + Name: "get_flag", + Description: `Returns the value of the flag that is provided as argument`, + Args: `[flag-name]`, + Handler: basiccommands.GetFlag, + Return: reflect.String.String(), + Group: groupOther, + IsGlobal: true, + }, + { + Name: "run_watch", + Description: `Executes the command provided as argument and watches for conditions to restart the command`, + Args: `[command]`, + Handler: basiccommands.RunWatch, + Flags: basiccommands.RunWatchOptions{}, + Group: groupOther, + IsGlobal: true, + }, + { + Name: "sleep", + Description: `Pauses the script execution for the number of seconds provided as argument`, + Args: `[seconds]`, + Handler: basiccommands.Sleep, + Group: groupOther, + IsGlobal: true, + }, + { + Name: "xargs", + Description: "Reads from stdin, splits input by blanks and executes the command provided as argument for each blank-separated input value (often used in pipes, e.g. `echo 'image-1 image-2' | xargs build_images`)", + Args: `[command]`, + Handler: basiccommands.XArgs, + Flags: basiccommands.XArgsOptions{}, + Group: groupOther, + IsGlobal: true, + }, +} diff --git a/docs/hack/util/extract_content.go b/docs/hack/util/extract_content.go new file mode 100644 index 0000000000..332da06e66 --- /dev/null +++ b/docs/hack/util/extract_content.go @@ -0,0 +1,35 @@ +package util + +import ( + "regexp" +) + +func GetExistingDescription(pageContent string) string { + match := regexp.MustCompile(`(?is)^---.*?---\s*(import.*?\n)*\s*(.*?)\s*\n###? .*$`).ReplaceAllString(pageContent, "$2") + + if match != pageContent && match != "" { + return "\n" + match + "\n" + } + return "" +} + +func GetSection(headlineText, pageContent string) string { + regex := `(?is)^.*\s*\n###?\s+` + headlineText + `\s*(.*?)(\n+((##)|$).*)?$` + match := regexp.MustCompile(regex).ReplaceAllString(pageContent, "$1") + + if match != pageContent && match != "" { + return match + } + return "" +} + +/* +func GetPartOfAutogenSection(headlineText, pageContent string) string { + regex := "(?is)^.*" + AutoGenTagBegin + `\s*\n###?\s+` + headlineText + `.*?` + AutoGenTagEnd + `\s*(.*?)\s*` + AutoGenTagBegin + ".*$" + match := regexp.MustCompile(regex).ReplaceAllString(pageContent, "$1") + + if match != pageContent && match != "" { + return match + "\n\n" + } + return "" +}*/ diff --git a/docs/hack/util/groups.go b/docs/hack/util/groups.go new file mode 100644 index 0000000000..ceefd3688f --- /dev/null +++ b/docs/hack/util/groups.go @@ -0,0 +1,50 @@ +package util + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +type Group struct { + File string + Name string + Content string + Imports *[]string +} + +func ProcessGroups(groups map[string]*Group) { + for groupID, group := range groups { + groupContent := group.Content + groupFileContent := "" + + if strings.TrimSpace(group.Content) != "" { + if group.Name != "" { + groupContent = "\n" + `
` + group.Name + `
` + "\n\n" + groupContent + } + + groupImportContent := "" + for _, partialFile := range *group.Imports { + groupImportContent = groupImportContent + GetPartialImport(partialFile, group.File) + } + + if groupImportContent != "" { + groupImportContent = groupImportContent + "\n\n" + } + + groupFileContent = fmt.Sprintf(`%s
%s`+"\n"+`
`, groupImportContent, groupID, groupContent) + } + + err := os.MkdirAll(filepath.Dir(group.File), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(group.File, []byte(groupFileContent), os.ModePerm) + if err != nil { + panic(err) + } + } +} diff --git a/docs/hack/util/partials.go b/docs/hack/util/partials.go new file mode 100644 index 0000000000..97f6d8be61 --- /dev/null +++ b/docs/hack/util/partials.go @@ -0,0 +1,30 @@ +package util + +import ( + "fmt" + "path/filepath" + "regexp" + "strings" +) + +var partialNameRegex = regexp.MustCompile(`(\..*$)|[^a-zA-Z]`) + +func GetPartialImportName(partialImport string) string { + basename := filepath.Base(partialImport) + basename = partialNameRegex.ReplaceAllString(basename, "") + + return fmt.Sprintf("Partial%s", strings.Title(basename)) +} + +func GetPartialImport(partialFile, importingFile string) string { + partialImportPath, err := filepath.Rel(filepath.Dir(importingFile), partialFile) + if err != nil { + panic(err) + } + + if partialImportPath[0:1] != "." { + partialImportPath = "./" + partialImportPath + } + + return fmt.Sprintf(TemplatePartialImport, GetPartialImportName(partialFile), partialImportPath) +} diff --git a/docs/hack/util/schema.go b/docs/hack/util/schema.go new file mode 100644 index 0000000000..fafc8cef9f --- /dev/null +++ b/docs/hack/util/schema.go @@ -0,0 +1,297 @@ +package util + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strconv" + "strings" + + "github.com/gertd/go-pluralize" + "github.com/invopop/jsonschema" + "github.com/loft-sh/devspace/pkg/devspace/config/versions" +) + +const nameFieldName = "name" +const versionFieldName = "version" +const groupKey = "group" +const groupNameKey = "group_name" +const prefixSeparator = "/" +const anchorSeparator = "-" + +var pluralizeClient = pluralize.NewClient() + +func GenerateSchema(configInstance interface{}, repository, configGoPackage string) *jsonschema.Schema { + r := new(jsonschema.Reflector) + r.AllowAdditionalProperties = true + r.PreferYAMLSchema = true + r.RequiredFromJSONSchemaTags = true + r.YAMLEmbeddedStructs = false + r.ExpandedStruct = true + + if repository != "" && configGoPackage != "" { + err := r.AddGoComments(repository, configGoPackage) + if err != nil { + panic(err) + } + } + + return r.Reflect(configInstance) +} + +func GenerateReference(schema *jsonschema.Schema, basePath string) { + versionField, ok := schema.Properties.Get(versionFieldName) + if ok { + if fieldSchema, ok := versionField.(*jsonschema.Schema); ok { + versionEnum := []string{} + for version := range versions.VersionLoader { + versionEnum = append(versionEnum, version) + } + + sort.SliceStable(versionEnum, func(a, b int) bool { + majorA, _ := strconv.Atoi(string(versionEnum[a][1])) + majorB, _ := strconv.Atoi(string(versionEnum[b][1])) + minorA, _ := strconv.Atoi(string(versionEnum[a][6:])) + minorB, _ := strconv.Atoi(string(versionEnum[b][6:])) + + if majorA == majorB { + return minorA > minorB + } else { + return majorA > majorB + } + }) + + fieldSchema.Enum = []interface{}{} + for _, version := range versionEnum { + fieldSchema.Enum = append(fieldSchema.Enum, version) + } + } + } + + createSections(basePath, "", schema, schema.Definitions, 1, false) +} + +func createSections(basePath, prefix string, schema *jsonschema.Schema, definitions jsonschema.Definitions, depth int, parentIsNameObjectMap bool) string { + partialImports := &[]string{} + content := "" + headlinePrefix := strings.Repeat("#", depth+1) + " " + anchorPrefix := strings.TrimPrefix(strings.ReplaceAll(prefix, prefixSeparator, anchorSeparator), anchorSeparator) + + groups := map[string]*Group{} + + for _, fieldName := range schema.Properties.Keys() { + if parentIsNameObjectMap && fieldName == nameFieldName { + continue + } + + field, ok := schema.Properties.Get(fieldName) + if ok { + if fieldSchema, ok := field.(*jsonschema.Schema); ok { + fieldContent := "" + fieldFile := fmt.Sprintf("%s%s%s.mdx", basePath, prefix, fieldName) + fieldFileReference := fieldFile + fieldType := "object" + isNameObjectMap := false + groupID, _ := fieldSchema.Extras[groupKey].(string) + expandable := false + + var patternPropertySchema *jsonschema.Schema + var nestedSchema *jsonschema.Schema + + ref := "" + if fieldSchema.Type == "array" { + ref = fieldSchema.Items.Ref + fieldType = "object[]" + } else if patternPropertySchema, ok = fieldSchema.PatternProperties[".*"]; ok { + ref = patternPropertySchema.Ref + isNameObjectMap = true + } else if fieldSchema.Ref != "" { + ref = fieldSchema.Ref + } + + if ref != "" { + refSplit := strings.Split(ref, "/") + nestedSchema, ok = definitions[refSplit[len(refSplit)-1]] + + if ok { + newPrefix := prefix + fieldName + prefixSeparator + createSections(basePath, newPrefix, nestedSchema, definitions, depth+1, isNameObjectMap) + fieldFileReference = fmt.Sprintf("%s%s%s_reference.mdx", basePath, prefix, fieldName) + + fieldContent = GetPartialImport(fieldFileReference, fieldFile) + "\n\n" + fmt.Sprintf(TemplatePartialUse, GetPartialImportName(fieldFileReference)) + + expandable = true + } + } + + required := contains(schema.Required, fieldName) + fieldDefault := "" + + fieldType = fieldSchema.Type + if fieldType == "" && fieldSchema.OneOf != nil { + for _, oneOfType := range fieldSchema.OneOf { + if fieldType != "" { + fieldType = fieldType + "|" + } + fieldType = fieldType + oneOfType.Type + } + } + + if isNameObjectMap { + fieldNameSingular := pluralizeClient.Singular(fieldName) + fieldType = "<" + fieldNameSingular + "_name>:" + + if patternPropertySchema != nil && patternPropertySchema.Type != "" { + fieldType = fieldType + patternPropertySchema.Type + } else { + fieldType = fieldType + "object" + } + } + + if fieldType == "array" { + if fieldSchema.Items.Type == "" { + fieldType = "object[]" + } else { + fieldType = fieldSchema.Items.Type + "[]" + } + } + + fieldPartial := fmt.Sprintf(TemplatePartialUse, GetPartialImportName(fieldFileReference)) + if ref != "" { + if isNameObjectMap && nestedSchema != nil { + nameField, ok := nestedSchema.Properties.Get(nameFieldName) + if ok { + if nameFieldSchema, ok := nameField.(*jsonschema.Schema); ok { + fieldNameSingular := pluralizeClient.Singular(fieldName) + nameFieldRequired := true + nameFieldDefault := "" + nameFieldEnumValues := GetEumValues(nameFieldSchema, nameFieldRequired, &nameFieldDefault) + + anchorName := anchorPrefix + fieldName + anchorSeparator + nameFieldName + fieldPartial = fmt.Sprintf(TemplateConfigField, true, "open", headlinePrefix, "<"+fieldNameSingular+"_"+nameFieldName+">", nameFieldRequired, "string", nameFieldDefault, nameFieldEnumValues, anchorName, nameFieldSchema.Description, fieldPartial) + fieldType = "<" + fieldNameSingular + "_name>:object" + } + } + } + + anchorName := anchorPrefix + fieldName + + fieldContent = GetPartialImport(fieldFileReference, fieldFile) + "\n\n" + fmt.Sprintf(TemplateConfigField, true, " open", headlinePrefix, fieldName, false, fieldType, "", "", anchorName, fieldSchema.Description, fieldPartial) + + fieldPartial = fmt.Sprintf(TemplateConfigField, true, "", headlinePrefix, fieldName, false, fieldType, "", "", anchorName, fieldSchema.Description, fieldPartial) + } else { + if fieldType == "boolean" { + fieldDefault = "false" + if required { + fieldDefault = "true" + required = false + } + } else { + fieldDefault, ok = fieldSchema.Default.(string) + if !ok { + fieldDefault = "" + } + } + + enumValues := GetEumValues(fieldSchema, required, &fieldDefault) + + anchorName := anchorPrefix + fieldName + fieldContent = fmt.Sprintf(TemplateConfigField, expandable, " open", headlinePrefix, fieldName, required, fieldType, fieldDefault, enumValues, anchorName, fieldSchema.Description, fieldContent) + } + + err := os.MkdirAll(filepath.Dir(fieldFileReference), os.ModePerm) + if err != nil { + panic(err) + } + + err = ioutil.WriteFile(fieldFile, []byte(fieldContent), os.ModePerm) + if err != nil { + panic(err) + } + + if groupID != "" { + groupID = strings.ToLower(groupID) + group, ok := groups[groupID] + if !ok { + group = &Group{ + File: fmt.Sprintf("%s%sgroup_%s.mdx", basePath, prefix, groupID), + Imports: &[]string{}, + } + groups[groupID] = group + + groupPartial := fmt.Sprintf(TemplatePartialUse, GetPartialImportName(group.File)) + + content = content + "\n\n" + groupPartial + *partialImports = append(*partialImports, group.File) + } + + if groupName, ok := fieldSchema.Extras[groupNameKey]; ok { + group.Name = groupName.(string) + } + + group.Content = group.Content + fieldPartial + *group.Imports = append(*group.Imports, fieldFileReference) + } else { + content = content + "\n\n" + fieldPartial + *partialImports = append(*partialImports, fieldFileReference) + } + } + } + } + + ProcessGroups(groups) + + if prefix == "" { + prefix = "reference" + } else { + prefix = strings.TrimSuffix(prefix, "/") + "_reference" + } + + pageFile := fmt.Sprintf("%s%s.mdx", basePath, strings.TrimSuffix(prefix, "/")) + + importContent := "" + for _, partialFile := range *partialImports { + importContent = importContent + GetPartialImport(partialFile, pageFile) + } + + content = fmt.Sprintf("%s%s", importContent, content) + + err := ioutil.WriteFile(pageFile, []byte(content), os.ModePerm) + if err != nil { + panic(err) + } + + return content +} + +func GetEumValues(fieldSchema *jsonschema.Schema, required bool, fieldDefault *string) string { + enumValues := "" + if fieldSchema.Enum != nil { + for i, enumVal := range fieldSchema.Enum { + enumValString, ok := enumVal.(string) + if ok { + if i == 0 && !required && *fieldDefault == "" { + *fieldDefault = enumValString + } + + if enumValues != "" { + enumValues = enumValues + "
" + } + enumValues = enumValues + enumValString + } + } + enumValues = fmt.Sprintf("%s", enumValues) + } + return enumValues +} + +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} diff --git a/docs/hack/util/templates.go b/docs/hack/util/templates.go new file mode 100644 index 0000000000..a8faa42fc0 --- /dev/null +++ b/docs/hack/util/templates.go @@ -0,0 +1,36 @@ +package util + +const TemplatePartialImport = ` +import %s from "%s"` +const TemplatePartialUse = `<%s /> +` +const TemplatePartialUseConfig = `<%s /> +` +const TemplateConfigField = ` +
+ + +%s` + "`%s`" + ` required %s %s %s {#%s} + +%s + + + +%s + +
+` +const TemplateFunctionRef = ` +
+ + +%s` + "`%s`" + ` %s %s %s pipeline only {#%s} + +%s + + + +%s + +
+` diff --git a/docs/package.json b/docs/package.json index 522379539c..68ba8ca011 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,12 +9,20 @@ "deploy": "docusaurus deploy" }, "dependencies": { - "@docusaurus/core": "^2.0.0-alpha.72", - "@docusaurus/preset-classic": "^2.0.0-alpha.72", - "classnames": "^2.3.1", - "mdx-link-checker": "^0.0.7", - "react": "^16.14.0", - "react-dom": "^16.14.0" + "@docusaurus/core": "2.0.0-beta.17", + "@docusaurus/preset-classic": "2.0.0-beta.17", + "@saucelabs/theme-github-codeblock": "^0.1.1", + "classnames": "^2.2.6", + "docusaurus-plugin-sass": "^0.2.2", + "mdx-link-checker": "^0.1.1", + "mdx-mermaid": "^1.2.2", + "mermaid": "^8.14.0", + "plugin-image-zoom": "ataft/plugin-image-zoom", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "redocusaurus": "^1.0.0", + "resolve-glob": "^1.0.0", + "sass": "^1.49.9" }, "browserslist": { "production": [ diff --git a/docs/pages/fragments/choose-project.mdx b/docs/pages/_partials/choose-project.mdx similarity index 100% rename from docs/pages/fragments/choose-project.mdx rename to docs/pages/_partials/choose-project.mdx diff --git a/docs/pages/_partials/command_cat.mdx b/docs/pages/_partials/command_cat.mdx new file mode 100644 index 0000000000..7482239eeb --- /dev/null +++ b/docs/pages/_partials/command_cat.mdx @@ -0,0 +1,22 @@ +The function `cat` prints the content of a given filename to the terminal. + +## Arguments + +### `[filename]` + +Takes an existing filename. + +``` +cat [filename] +``` + +### Examples + +Use `cat` as a function under your pipeline definitions: + +```yaml +pipelines: + dev: + run: |- + cat file.txt +``` diff --git a/docs/pages/_partials/command_is_command.mdx b/docs/pages/_partials/command_is_command.mdx new file mode 100644 index 0000000000..a975354ab6 --- /dev/null +++ b/docs/pages/_partials/command_is_command.mdx @@ -0,0 +1,20 @@ +The function `is_command` checks if a given argument is a command in DevSpace. + +## Arguments + +### `[DevSpace command]` + +``` +is_command [command] +``` + +### Example + +```yaml +pipelines: + dev: + run: |- + if is_command dev; then + start_dev --all + fi +``` diff --git a/docs/pages/_partials/command_is_equal.mdx b/docs/pages/_partials/command_is_equal.mdx new file mode 100644 index 0000000000..c9cea7ead8 --- /dev/null +++ b/docs/pages/_partials/command_is_equal.mdx @@ -0,0 +1,29 @@ +The function `is_equal` checks if two given arguments are a command in DevSpace. + +## Arguments + +### `[arg1 arg2]` + +``` +is_equal [arg1] [arg2] +``` + +### Example + +Use `is_equal` as a function under your pipeline definitions: + +```yaml +pipelines: + dev: + run: |- + is_equal 1 1 +``` +Returns exit status 0 + +```yaml +pipelines: + dev: + run: |- + is_equal 1 2 +``` +Returns exist status 1 (fatal) diff --git a/docs/pages/_partials/command_is_os.mdx b/docs/pages/_partials/command_is_os.mdx new file mode 100644 index 0000000000..2df4ee7fa3 --- /dev/null +++ b/docs/pages/_partials/command_is_os.mdx @@ -0,0 +1,20 @@ +The function `is_os` checks if a given argument is the current runtime GOOS. + +## Arguments + +### `[operatingSystemString]` + +``` +is_os [os] +``` + +### Example + +```yaml +pipelines: + dev: + run: |- + if is_os windows; then + echo "Running on Windows!" + fi +``` diff --git a/docs/pages/_partials/command_is_true.mdx b/docs/pages/_partials/command_is_true.mdx new file mode 100644 index 0000000000..7835abe15b --- /dev/null +++ b/docs/pages/_partials/command_is_true.mdx @@ -0,0 +1,29 @@ +The function `is_true` checks for the string "true". NOTE: This function does not check for a boolean value. + +## Arguments + +### `["true"|]` + +``` +is_true [value] +``` + +### Example + +Use `is_true` as a function under your pipeline definitions: + +```yaml +pipelines: + dev: + run: |- + is_true true +``` +Returns exit status 0 + +```yaml +pipelines: + dev: + run: |- + is_true nope! +``` +Returns exit status 1 (fatal) diff --git a/docs/pages/_partials/command_run_watch.mdx b/docs/pages/_partials/command_run_watch.mdx new file mode 100644 index 0000000000..9f23a8a342 --- /dev/null +++ b/docs/pages/_partials/command_run_watch.mdx @@ -0,0 +1,27 @@ +The function `run_watch` takes in a path to watch and a subcommand to run on that path. + +## Arguments + +### `--fail-on-error` + +If true, the command will fail on an error while running the subcommand. + +``` +run_watch --path [MY_PATH] -- [my_command] +``` + +### `--path`, `-p` + +The paths to watch. Can be patterns in the form of `./**/my-file.txt`. + +``` +``` + +### Example + +```yaml +commands: + # Overwrites dev + dev: |- + run_watch -p devspace.yaml -p *.go -- devspace run-pipeline dev $@ +``` diff --git a/docs/pages/_partials/command_sleep.mdx b/docs/pages/_partials/command_sleep.mdx new file mode 100644 index 0000000000..5702437b19 --- /dev/null +++ b/docs/pages/_partials/command_sleep.mdx @@ -0,0 +1,20 @@ +The function `sleep` takes in the number of seconds for a process to wait before continuing. + +## Arguments + +### [seconds] + +``` +sleep 5 # process waits for 5 seconds +``` + +### Example + +Use `sleep` as a function under your pipeline definitions: + +```yaml +pipelines: + dev: + run: |- + sleep 5 +``` diff --git a/docs/pages/_partials/command_xargs.mdx b/docs/pages/_partials/command_xargs.mdx new file mode 100644 index 0000000000..d1af4cdea1 --- /dev/null +++ b/docs/pages/_partials/command_xargs.mdx @@ -0,0 +1,18 @@ +The function `xargs` allows a user to overwrite current flags and utilities. + +## Usage + +``` +xargs [utility [argument ...]] +``` + +## Arguments + +### Example + +```yaml +pipelines: + dev: + run: |- + echo [image1] [image2] | xargs build_images +``` diff --git a/docs/pages/fragments/config-commands.mdx b/docs/pages/_partials/config-commands.mdx similarity index 100% rename from docs/pages/fragments/config-commands.mdx rename to docs/pages/_partials/config-commands.mdx diff --git a/docs/pages/fragments/config-dependencies.mdx b/docs/pages/_partials/config-dependencies.mdx similarity index 100% rename from docs/pages/fragments/config-dependencies.mdx rename to docs/pages/_partials/config-dependencies.mdx diff --git a/docs/pages/fragments/config-deployments.mdx b/docs/pages/_partials/config-deployments.mdx similarity index 100% rename from docs/pages/fragments/config-deployments.mdx rename to docs/pages/_partials/config-deployments.mdx diff --git a/docs/pages/fragments/config-dev.mdx b/docs/pages/_partials/config-dev.mdx similarity index 100% rename from docs/pages/fragments/config-dev.mdx rename to docs/pages/_partials/config-dev.mdx diff --git a/docs/pages/fragments/config-hooks.mdx b/docs/pages/_partials/config-hooks.mdx similarity index 100% rename from docs/pages/fragments/config-hooks.mdx rename to docs/pages/_partials/config-hooks.mdx diff --git a/docs/pages/fragments/config-images.mdx b/docs/pages/_partials/config-images.mdx similarity index 100% rename from docs/pages/fragments/config-images.mdx rename to docs/pages/_partials/config-images.mdx diff --git a/docs/pages/_partials/config-overwrite-flags.mdx b/docs/pages/_partials/config-overwrite-flags.mdx new file mode 100644 index 0000000000..b7a5a8603b --- /dev/null +++ b/docs/pages/_partials/config-overwrite-flags.mdx @@ -0,0 +1,41 @@ +## Config Overwrite Flags + +These flags can be used to overwrite values in the current configuration. + +### `--set` + +Set configuration. + +Assigns argument to configuration. + +``` +devspace [command] --set=[configuration value] +``` + +### `--set-string` + +Set configuration as string. + +Takes a map and parses values to their new configuration keys. + +``` +devspace [command] --set-string=[key1:value1, key2:value2] +``` + +### `--from` + +Reuse an existing configuration. + +``` +devspace [command] --from=[existing configuration] +``` + +### `--from-file` + +Reuse an existing configuration from a file + +``` +devspace [command] --from-file=[path to existing configuration file] +``` + +### Example diff --git a/docs/pages/fragments/config-profiles.mdx b/docs/pages/_partials/config-profiles.mdx similarity index 100% rename from docs/pages/fragments/config-profiles.mdx rename to docs/pages/_partials/config-profiles.mdx diff --git a/docs/pages/fragments/config-vars.mdx b/docs/pages/_partials/config-vars.mdx similarity index 100% rename from docs/pages/fragments/config-vars.mdx rename to docs/pages/_partials/config-vars.mdx diff --git a/docs/pages/fragments/dependency-dev.mdx b/docs/pages/_partials/dependency-dev.mdx similarity index 100% rename from docs/pages/fragments/dependency-dev.mdx rename to docs/pages/_partials/dependency-dev.mdx diff --git a/docs/pages/fragments/dependency-ignoreDependencies.mdx b/docs/pages/_partials/dependency-ignoreDependencies.mdx similarity index 100% rename from docs/pages/fragments/dependency-ignoreDependencies.mdx rename to docs/pages/_partials/dependency-ignoreDependencies.mdx diff --git a/docs/pages/fragments/dependency-name.mdx b/docs/pages/_partials/dependency-name.mdx similarity index 100% rename from docs/pages/fragments/dependency-name.mdx rename to docs/pages/_partials/dependency-name.mdx diff --git a/docs/pages/fragments/dependency-namespace.mdx b/docs/pages/_partials/dependency-namespace.mdx similarity index 100% rename from docs/pages/fragments/dependency-namespace.mdx rename to docs/pages/_partials/dependency-namespace.mdx diff --git a/docs/pages/fragments/dependency-overwrite-vars.mdx b/docs/pages/_partials/dependency-overwrite-vars.mdx similarity index 100% rename from docs/pages/fragments/dependency-overwrite-vars.mdx rename to docs/pages/_partials/dependency-overwrite-vars.mdx diff --git a/docs/pages/fragments/dependency-profile.mdx b/docs/pages/_partials/dependency-profile.mdx similarity index 100% rename from docs/pages/fragments/dependency-profile.mdx rename to docs/pages/_partials/dependency-profile.mdx diff --git a/docs/pages/fragments/dependency-skipBuild.mdx b/docs/pages/_partials/dependency-skipBuild.mdx similarity index 100% rename from docs/pages/fragments/dependency-skipBuild.mdx rename to docs/pages/_partials/dependency-skipBuild.mdx diff --git a/docs/pages/fragments/dependency-vars.mdx b/docs/pages/_partials/dependency-vars.mdx similarity index 100% rename from docs/pages/fragments/dependency-vars.mdx rename to docs/pages/_partials/dependency-vars.mdx diff --git a/docs/pages/fragments/faq-image-context.mdx b/docs/pages/_partials/faq-image-context.mdx similarity index 100% rename from docs/pages/fragments/faq-image-context.mdx rename to docs/pages/_partials/faq-image-context.mdx diff --git a/docs/pages/_partials/info-component-chart.mdx b/docs/pages/_partials/info-component-chart.mdx new file mode 100644 index 0000000000..53e7bd7a85 --- /dev/null +++ b/docs/pages/_partials/info-component-chart.mdx @@ -0,0 +1,3 @@ +:::info Component Chart Docs +The component chart is a flexible Helm chart for deploying custom applications in a standardized manner. Learn more about **[configuring component-chart deployments](../configuration/deployments/helm/chart/component-chart.mdx)**. +::: diff --git a/docs/pages/fragments/install-cli.mdx b/docs/pages/_partials/install-cli.mdx similarity index 100% rename from docs/pages/fragments/install-cli.mdx rename to docs/pages/_partials/install-cli.mdx diff --git a/docs/pages/fragments/kube-context.mdx b/docs/pages/_partials/kube-context.mdx similarity index 100% rename from docs/pages/fragments/kube-context.mdx rename to docs/pages/_partials/kube-context.mdx diff --git a/docs/pages/_partials/kubectl-kustomize.mdx b/docs/pages/_partials/kubectl-kustomize.mdx new file mode 100644 index 0000000000..2f747d4ce8 --- /dev/null +++ b/docs/pages/_partials/kubectl-kustomize.mdx @@ -0,0 +1,21 @@ +The `kustomize` option expects a boolean stating if DevSpace should deploy using `kustomize` (or alternatively: `kubectl apply -k` when `kustomize` is not installed). + +:::warning +If you set `kustomize: true`, all of your `manifests` must be paths to Kustomizations. If you want to deploy some plain manifests and some Kustomizations, create multiple deployments for each of them. +::: + +#### Default Value for `kustomize` +```yaml +kustomize: false +``` + +#### Example: Kustomize +```yaml {4} +deployments: + backend: + kubectl: + kustomize: true + manifests: + - kustomization1/ + - glob/path/to/more/kustomizations/ +``` diff --git a/docs/pages/_partials/kubectl-options-applyArgs.mdx b/docs/pages/_partials/kubectl-options-applyArgs.mdx new file mode 100644 index 0000000000..f92efaae2e --- /dev/null +++ b/docs/pages/_partials/kubectl-options-applyArgs.mdx @@ -0,0 +1,23 @@ +The `applyArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl apply`. + +:::info Apply for Kustomize Deployments +Even if you set `kustomize: true`, DevSpace only renders the manifest templates using kustomize but the actual deployment will be executed using `kubectl apply`. +::: + +#### Example: Custom Kubectl Args & Flags +```yaml +deployments: + backend: + kubectl: + manifests: + - backend/ + applyArgs: + - "--timeout" + - "10s" + - "--grace-period" + - "30" +``` +Deploying the above example would roughly be equivalent to this command: +```bash +kubectl apply --timeout=10s --grace-period=30 -f backend/ +``` diff --git a/docs/pages/_partials/kubectl-options-binaryPath.mdx b/docs/pages/_partials/kubectl-options-binaryPath.mdx new file mode 100644 index 0000000000..cf4232dc6b --- /dev/null +++ b/docs/pages/_partials/kubectl-options-binaryPath.mdx @@ -0,0 +1,20 @@ +The `kubectlBinaryPath` is optional expects a path to the `kubectl` binary. By default, DevSpace will use the `kustomize` located on your `$PATH`. Use this to specify a location for `kubectl` if it is not on your `$PATH` and you do not want DevSpace to download the latest version. + +:::warning +Setting `kubectlBinaryPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kubectl` to your `$PATH` environment variable instead. +::: + +#### Example: Setting Path To Kubectl Binary +```yaml +deployments: + backend: + kubectl: + kubectlBinaryPath: /path/to/kubectl + manifests: + - backend/ +``` +**Explanation:** +Deploying the above example would roughly be equivalent to this command: +```bash +/path/to/kubectl apply -f backend/ +``` diff --git a/docs/pages/_partials/kubectl-updateImageTags.mdx b/docs/pages/_partials/kubectl-updateImageTags.mdx new file mode 100644 index 0000000000..ad1f02e843 --- /dev/null +++ b/docs/pages/_partials/kubectl-updateImageTags.mdx @@ -0,0 +1,17 @@ +If the `updateImageTags` field is set to `true` for a deployment, DevSpace will replace/update all image tags before deploying the project. + +When enabled, DevSpace searches all your manifests for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. + +#### Example: Enable Tag Updates +```yaml {3} +deployments: + backend: + updateImageTags: true + kubectl: + manifests: + - backend/ +``` + +:::info In-Memory Tag Replacement +Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. +::: diff --git a/docs/pages/_partials/kustomize-options-kustomizeArgs.mdx b/docs/pages/_partials/kustomize-options-kustomizeArgs.mdx new file mode 100644 index 0000000000..64e2baa69e --- /dev/null +++ b/docs/pages/_partials/kustomize-options-kustomizeArgs.mdx @@ -0,0 +1,20 @@ +The `kustomizeArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kustomize build`. + +#### Example: Custom Kustomize Args & Flags +```yaml +deployments: +- name: backend + kubectl: + manifests: + - backend/ + kustomize: true + kustomizeArgs: + - "--timeout" + - "10s" + - "--grace-period" + - "30" +``` +Deploying the above example would roughly be equivalent to this command: +```bash +kustomize build --timeout=10s --grace-period=30 -f backend/ +``` diff --git a/docs/pages/fragments/note-create-space.mdx b/docs/pages/_partials/note-create-space.mdx similarity index 100% rename from docs/pages/fragments/note-create-space.mdx rename to docs/pages/_partials/note-create-space.mdx diff --git a/docs/pages/fragments/note-general-purpose-command.mdx b/docs/pages/_partials/note-general-purpose-command.mdx similarity index 100% rename from docs/pages/fragments/note-general-purpose-command.mdx rename to docs/pages/_partials/note-general-purpose-command.mdx diff --git a/docs/pages/fragments/profiles-apply-multiple.mdx b/docs/pages/_partials/profiles-apply-multiple.mdx similarity index 100% rename from docs/pages/fragments/profiles-apply-multiple.mdx rename to docs/pages/_partials/profiles-apply-multiple.mdx diff --git a/docs/pages/fragments/selector-image-selector.mdx b/docs/pages/_partials/selector-image-selector.mdx similarity index 100% rename from docs/pages/fragments/selector-image-selector.mdx rename to docs/pages/_partials/selector-image-selector.mdx diff --git a/docs/pages/fragments/selector-label-selector.mdx b/docs/pages/_partials/selector-label-selector.mdx similarity index 100% rename from docs/pages/fragments/selector-label-selector.mdx rename to docs/pages/_partials/selector-label-selector.mdx diff --git a/docs/pages/fragments/start-app.mdx b/docs/pages/_partials/start-app.mdx similarity index 100% rename from docs/pages/fragments/start-app.mdx rename to docs/pages/_partials/start-app.mdx diff --git a/docs/pages/fragments/tip-print-config.mdx b/docs/pages/_partials/tip-print-config.mdx similarity index 100% rename from docs/pages/fragments/tip-print-config.mdx rename to docs/pages/_partials/tip-print-config.mdx diff --git a/docs/pages/fragments/tip-use-namespace.mdx b/docs/pages/_partials/tip-use-namespace.mdx similarity index 100% rename from docs/pages/fragments/tip-use-namespace.mdx rename to docs/pages/_partials/tip-use-namespace.mdx diff --git a/docs/pages/fragments/vars-default.mdx b/docs/pages/_partials/vars-default.mdx similarity index 100% rename from docs/pages/fragments/vars-default.mdx rename to docs/pages/_partials/vars-default.mdx diff --git a/docs/pages/fragments/vars-force-string.mdx b/docs/pages/_partials/vars-force-string.mdx similarity index 100% rename from docs/pages/fragments/vars-force-string.mdx rename to docs/pages/_partials/vars-force-string.mdx diff --git a/docs/pages/fragments/vars-name.mdx b/docs/pages/_partials/vars-name.mdx similarity index 100% rename from docs/pages/fragments/vars-name.mdx rename to docs/pages/_partials/vars-name.mdx diff --git a/docs/pages/fragments/warning-build-tool-priority.mdx b/docs/pages/_partials/warning-build-tool-priority.mdx similarity index 100% rename from docs/pages/fragments/warning-build-tool-priority.mdx rename to docs/pages/_partials/warning-build-tool-priority.mdx diff --git a/docs/pages/_partials/warning-multiple-dev.mdx b/docs/pages/_partials/warning-multiple-dev.mdx new file mode 100644 index 0000000000..a0f4e3650d --- /dev/null +++ b/docs/pages/_partials/warning-multiple-dev.mdx @@ -0,0 +1,3 @@ +:::warning +Running `devspace dev` multiple times in parallel for the same project does not work and returns a fatal error because multiple instances of port forwarding and file sync will disturb each other. However, running `devspace dev` for several different projects (i.e. 2 different `devspace.yaml` files with different `name`) works seamlessly. +::: diff --git a/docs/pages/fragments/workflow-build-images.mdx b/docs/pages/_partials/workflow-build-images.mdx similarity index 100% rename from docs/pages/fragments/workflow-build-images.mdx rename to docs/pages/_partials/workflow-build-images.mdx diff --git a/docs/pages/fragments/workflow-deploy-dependencies.mdx b/docs/pages/_partials/workflow-deploy-dependencies.mdx similarity index 100% rename from docs/pages/fragments/workflow-deploy-dependencies.mdx rename to docs/pages/_partials/workflow-deploy-dependencies.mdx diff --git a/docs/pages/fragments/workflow-deploy-project.mdx b/docs/pages/_partials/workflow-deploy-project.mdx similarity index 100% rename from docs/pages/fragments/workflow-deploy-project.mdx rename to docs/pages/_partials/workflow-deploy-project.mdx diff --git a/docs/pages/_partials/workflow-open-links.mdx b/docs/pages/_partials/workflow-open-links.mdx new file mode 100644 index 0000000000..94f9790451 --- /dev/null +++ b/docs/pages/_partials/workflow-open-links.mdx @@ -0,0 +1,4 @@ + +1. DevSpace starts to periodically send `HTTP GET` requests to the URLs provideded via `dev.*.open[*].url`. +2. As soon as the first HTTP response has a status code which is neither 502 (Bad Gateway) nor 503 (Service Unavailable), DevSpace assumes that the application is now started, stops sending any further requests and opens the provided URL in the browser. +3. If the URL is still returning status code 502 or 503 after 4min, DevSpace will stop trying to open it. To not disturb the log streaming or the interactive terminal session, DevSpace will not show an error when hitting the 4min timeout. diff --git a/docs/pages/fragments/workflow-replace-tags.mdx b/docs/pages/_partials/workflow-replace-tags.mdx similarity index 100% rename from docs/pages/fragments/workflow-replace-tags.mdx rename to docs/pages/_partials/workflow-replace-tags.mdx diff --git a/docs/pages/cli.md b/docs/pages/cli.md new file mode 100644 index 0000000000..962cc7d3b6 --- /dev/null +++ b/docs/pages/cli.md @@ -0,0 +1,27 @@ +--- +title: "devspace --help" +sidebar_label: devspace +--- + +### Synopsis +``` +DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes. Get started by running the init command in one of your projects: + + devspace init +``` + +### Global Flags +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + -h, --help help for devspace + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` diff --git a/docs/pages/cli/devspace_add.md b/docs/pages/cli/devspace_add.md new file mode 100644 index 0000000000..eb06717275 --- /dev/null +++ b/docs/pages/cli/devspace_add.md @@ -0,0 +1,42 @@ +--- +title: "devspace add --help" +sidebar_label: devspace add +--- + + +Adds something to devspace.yaml + +## Synopsis + + +``` +####################################################### +#################### devspace add ##################### +####################################################### +Adds config sections to devspace.yaml +``` + + +## Flags + +``` + -h, --help help for add +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_add_plugin.md b/docs/pages/cli/devspace_add_plugin.md new file mode 100644 index 0000000000..271592b292 --- /dev/null +++ b/docs/pages/cli/devspace_add_plugin.md @@ -0,0 +1,50 @@ +--- +title: "devspace add plugin --help" +sidebar_label: devspace add plugin +--- + + +Adds a plugin to devspace + +## Synopsis + + +``` +devspace add plugin [flags] +``` + +``` +####################################################### +############### devspace add plugin ################### +####################################################### +Adds a new plugin to devspace + +devspace add plugin https://github.com/my-plugin/plugin +####################################################### +``` + + +## Flags + +``` + -h, --help help for plugin + --version string The git tag to use +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_analyze.md b/docs/pages/cli/devspace_analyze.md new file mode 100644 index 0000000000..11f482f30f --- /dev/null +++ b/docs/pages/cli/devspace_analyze.md @@ -0,0 +1,56 @@ +--- +title: "devspace analyze --help" +sidebar_label: devspace analyze +--- + + +Analyzes a kubernetes namespace and checks for potential problems + +## Synopsis + + +``` +devspace analyze [flags] +``` + +``` +####################################################### +################## devspace analyze ################### +####################################################### +Analyze checks a namespaces events, replicasets, services +and pods for potential problems + +Example: +devspace analyze +devspace analyze --namespace=mynamespace +####################################################### +``` + + +## Flags + +``` + -h, --help help for analyze + --ignore-pod-restarts If true, analyze will ignore the restart events of running pods + --patient If true, analyze will ignore failing pods and events until every deployment, statefulset, replicaset and pods are ready or the timeout is reached + --timeout int Timeout until analyze should stop waiting (default 120) + --wait Wait for pods to get ready if they are just starting (default true) +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_attach.md b/docs/pages/cli/devspace_attach.md new file mode 100644 index 0000000000..4b62f73897 --- /dev/null +++ b/docs/pages/cli/devspace_attach.md @@ -0,0 +1,57 @@ +--- +title: "devspace attach --help" +sidebar_label: devspace attach +--- + + +Attaches to a container + +## Synopsis + + +``` +devspace attach [flags] +``` + +``` +####################################################### +################# devspace attach ##################### +####################################################### +Attaches to a running container + +devspace attach +devspace attach --pick # Select pod to enter +devspace attach -c my-container +devspace attach -n my-namespace +####################################################### +``` + + +## Flags + +``` + -c, --container string Container name within pod where to execute command + -h, --help help for attach + --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) + -l, --label-selector string Comma separated key=value selector list (e.g. release=test) + --pick Select a pod (default true) + --pod string Pod to open a shell to +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_build.md b/docs/pages/cli/devspace_build.md new file mode 100644 index 0000000000..1666ec300d --- /dev/null +++ b/docs/pages/cli/devspace_build.md @@ -0,0 +1,62 @@ +--- +title: "devspace build --help" +sidebar_label: devspace build +--- + + +Builds all defined images and pushes them + +## Synopsis + + +``` +devspace build [flags] +``` + +``` +####################################################### +################## devspace build ##################### +####################################################### +Builds all defined images and pushes them +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image (default true) + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for build + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute (default "build") + --render If true will render manifests and print them instead of actually deploying them + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_cleanup.md b/docs/pages/cli/devspace_cleanup.md new file mode 100644 index 0000000000..8efc0fa8c6 --- /dev/null +++ b/docs/pages/cli/devspace_cleanup.md @@ -0,0 +1,41 @@ +--- +title: "devspace cleanup --help" +sidebar_label: devspace cleanup +--- + + +Cleans up resources + +## Synopsis + + +``` +####################################################### +################## devspace cleanup ################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for cleanup +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_cleanup_images.md b/docs/pages/cli/devspace_cleanup_images.md new file mode 100644 index 0000000000..4467c479f7 --- /dev/null +++ b/docs/pages/cli/devspace_cleanup_images.md @@ -0,0 +1,47 @@ +--- +title: "devspace cleanup images --help" +sidebar_label: devspace cleanup images +--- + + +Deletes all locally created images from docker + +## Synopsis + + +``` +devspace cleanup images [flags] +``` + +``` +####################################################### +############# devspace cleanup images ################# +####################################################### +Deletes all locally created docker images from docker +####################################################### +``` + + +## Flags + +``` + -h, --help help for images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_completion.md b/docs/pages/cli/devspace_completion.md new file mode 100644 index 0000000000..616a0423ca --- /dev/null +++ b/docs/pages/cli/devspace_completion.md @@ -0,0 +1,58 @@ +--- +title: "devspace completion --help" +sidebar_label: devspace completion +--- + + +Outputs shell completion for the given shell (bash or zsh) + +## Synopsis + + + ``` +devspace completion SHELL [flags] +``` + +``` +Outputs shell completion for the given shell (bash or zsh) + + This depends on the bash-completion binary. Example installation instructions: + OS X: + $ brew install bash-completion + $ source $(brew --prefix)/etc/bash_completion + $ devspace completion bash > ~/.devspace-completion # for bash users + $ devspace completion zsh > ~/.devspace-completion # for zsh users + $ source ~/.devspace-completion + Ubuntu: + $ apt-get install bash-completion + $ source /etc/bash-completion + $ source <(devspace completion bash) # for bash users + $ source <(devspace completion zsh) # for zsh users + + Additionally, you may want to output the completion to a file and source in your .bashrc +``` + + +## Flags + +``` + -h, --help help for completion +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_deploy.md b/docs/pages/cli/devspace_deploy.md new file mode 100644 index 0000000000..98fa6eee18 --- /dev/null +++ b/docs/pages/cli/devspace_deploy.md @@ -0,0 +1,66 @@ +--- +title: "devspace deploy --help" +sidebar_label: devspace deploy +--- + + +Deploys the project + +## Synopsis + + +``` +devspace deploy [flags] +``` + +``` +####################################################### +################## devspace deploy #################### +####################################################### +Deploys the current project to a Space or namespace: + +devspace deploy +devspace deploy -n some-namespace +devspace deploy --kube-context=deploy-context +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for deploy + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute (default "deploy") + --render If true will render manifests and print them instead of actually deploying them + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_dev.md b/docs/pages/cli/devspace_dev.md new file mode 100644 index 0000000000..3938b4ecb9 --- /dev/null +++ b/docs/pages/cli/devspace_dev.md @@ -0,0 +1,62 @@ +--- +title: "devspace dev --help" +sidebar_label: devspace dev +--- + + +Starts the development mode + +## Synopsis + + +``` +devspace dev [flags] +``` + +``` +####################################################### +################### devspace dev ###################### +####################################################### +Starts your project in development mode +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for dev + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute (default "dev") + --render If true will render manifests and print them instead of actually deploying them + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_enter.md b/docs/pages/cli/devspace_enter.md new file mode 100644 index 0000000000..e496f32681 --- /dev/null +++ b/docs/pages/cli/devspace_enter.md @@ -0,0 +1,67 @@ +--- +title: "devspace enter --help" +sidebar_label: devspace enter +--- + + +Open a shell to a container + +## Synopsis + + +``` +devspace enter [flags] +``` + +``` +####################################################### +################## devspace enter ##################### +####################################################### +Execute a command or start a new terminal in your +devspace: + +devspace enter +devspace enter --pick # Select pod to enter +devspace enter bash +devspace enter -c my-container +devspace enter bash -n my-namespace +devspace enter bash -l release=test +devspace enter bash --image-selector nginx:latest +devspace enter bash --image-selector "${runtime.images.app.image}:${runtime.images.app.tag}" +####################################################### +``` + + +## Flags + +``` + -c, --container string Container name within pod where to execute command + -h, --help help for enter + --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) + -l, --label-selector string Comma separated key=value selector list (e.g. release=test) + --pick Select a pod / container if multiple are found (default true) + --pod string Pod to open a shell to + --reconnect Will reconnect the terminal if an unexpected return code is encountered + --screen Use a screen session to connect + --screen-session string The screen session to create or connect to (default "enter") + --wait Wait for the pod(s) to start if they are not running + --workdir string The working directory where to open the terminal or execute the command +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_init.md b/docs/pages/cli/devspace_init.md new file mode 100644 index 0000000000..16fcfcc3e7 --- /dev/null +++ b/docs/pages/cli/devspace_init.md @@ -0,0 +1,52 @@ +--- +title: "devspace init --help" +sidebar_label: devspace init +--- + + +Initializes DevSpace in the current folder + +## Synopsis + + +``` +devspace init [flags] +``` + +``` +####################################################### +#################### devspace init #################### +####################################################### +Initializes a new devspace project within the current +folder. Creates a devspace.yaml as a starting point. +####################################################### +``` + + +## Flags + +``` + --context string Context path to use for intialization + --dockerfile string Dockerfile to use for initialization (default "./Dockerfile") + -h, --help help for init + --provider string The cloud provider to use + -r, --reconfigure Change existing configuration +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list.md b/docs/pages/cli/devspace_list.md new file mode 100644 index 0000000000..92f17ae4c2 --- /dev/null +++ b/docs/pages/cli/devspace_list.md @@ -0,0 +1,41 @@ +--- +title: "devspace list --help" +sidebar_label: devspace list +--- + + +Lists configuration + +## Synopsis + + +``` +####################################################### +#################### devspace list #################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for list +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_commands.md b/docs/pages/cli/devspace_list_commands.md new file mode 100644 index 0000000000..9323ab2ae8 --- /dev/null +++ b/docs/pages/cli/devspace_list_commands.md @@ -0,0 +1,48 @@ +--- +title: "devspace list commands --help" +sidebar_label: devspace list commands +--- + + +Lists all custom DevSpace commands + +## Synopsis + + +``` +devspace list commands [flags] +``` + +``` +####################################################### +############## devspace list commands ################# +####################################################### +Lists all DevSpace custom commands defined in the +devspace.yaml +####################################################### +``` + + +## Flags + +``` + -h, --help help for commands +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_contexts.md b/docs/pages/cli/devspace_list_contexts.md new file mode 100644 index 0000000000..59fa7fb786 --- /dev/null +++ b/docs/pages/cli/devspace_list_contexts.md @@ -0,0 +1,50 @@ +--- +title: "devspace list contexts --help" +sidebar_label: devspace list contexts +--- + + +Lists all kube contexts + +## Synopsis + + +``` +devspace list contexts [flags] +``` + +``` +####################################################### +############## devspace list contexts ################# +####################################################### +Lists all available kube contexts + +Example: +devspace list contexts +####################################################### +``` + + +## Flags + +``` + -h, --help help for contexts +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_deployments.md b/docs/pages/cli/devspace_list_deployments.md new file mode 100644 index 0000000000..ef284b6adc --- /dev/null +++ b/docs/pages/cli/devspace_list_deployments.md @@ -0,0 +1,47 @@ +--- +title: "devspace list deployments --help" +sidebar_label: devspace list deployments +--- + + +Lists and shows the status of all deployments + +## Synopsis + + +``` +devspace list deployments [flags] +``` + +``` +####################################################### +############# devspace list deployments ############### +####################################################### +Lists the status of all deployments +####################################################### +``` + + +## Flags + +``` + -h, --help help for deployments +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_namespaces.md b/docs/pages/cli/devspace_list_namespaces.md new file mode 100644 index 0000000000..bb1d78f2ff --- /dev/null +++ b/docs/pages/cli/devspace_list_namespaces.md @@ -0,0 +1,47 @@ +--- +title: "devspace list namespaces --help" +sidebar_label: devspace list namespaces +--- + + +Lists all namespaces in the current context + +## Synopsis + + +``` +devspace list namespaces [flags] +``` + +``` +####################################################### +############ devspace list namespaces ################# +####################################################### +Lists all namespaces in the selected kube context +####################################################### +``` + + +## Flags + +``` + -h, --help help for namespaces +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_plugins.md b/docs/pages/cli/devspace_list_plugins.md new file mode 100644 index 0000000000..48a66c4b95 --- /dev/null +++ b/docs/pages/cli/devspace_list_plugins.md @@ -0,0 +1,49 @@ +--- +title: "devspace list plugins --help" +sidebar_label: devspace list plugins +--- + + +Lists all installed devspace plugins + +## Synopsis + + +``` +devspace list plugins [flags] +``` + +``` +####################################################### +############# devspace list plugins ################## +####################################################### +Lists all installed plugins + +devspace list plugins +####################################################### +``` + + +## Flags + +``` + -h, --help help for plugins +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_ports.md b/docs/pages/cli/devspace_list_ports.md new file mode 100644 index 0000000000..631cdd99be --- /dev/null +++ b/docs/pages/cli/devspace_list_ports.md @@ -0,0 +1,47 @@ +--- +title: "devspace list ports --help" +sidebar_label: devspace list ports +--- + + +Lists port forwarding configurations + +## Synopsis + + +``` +devspace list ports [flags] +``` + +``` +####################################################### +############### devspace list ports ################### +####################################################### +Lists the port forwarding configurations +####################################################### +``` + + +## Flags + +``` + -h, --help help for ports +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_profiles.md b/docs/pages/cli/devspace_list_profiles.md new file mode 100644 index 0000000000..ece49509e7 --- /dev/null +++ b/docs/pages/cli/devspace_list_profiles.md @@ -0,0 +1,47 @@ +--- +title: "devspace list profiles --help" +sidebar_label: devspace list profiles +--- + + +Lists all DevSpace profiles + +## Synopsis + + +``` +devspace list profiles [flags] +``` + +``` +####################################################### +############## devspace list profiles ################# +####################################################### +Lists all DevSpace configurations for this project +####################################################### +``` + + +## Flags + +``` + -h, --help help for profiles +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_sync.md b/docs/pages/cli/devspace_list_sync.md new file mode 100644 index 0000000000..daf7ad3160 --- /dev/null +++ b/docs/pages/cli/devspace_list_sync.md @@ -0,0 +1,47 @@ +--- +title: "devspace list sync --help" +sidebar_label: devspace list sync +--- + + +Lists sync configuration + +## Synopsis + + +``` +devspace list sync [flags] +``` + +``` +####################################################### +################# devspace list sync ################## +####################################################### +Lists the sync configuration +####################################################### +``` + + +## Flags + +``` + -h, --help help for sync +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_list_vars.md b/docs/pages/cli/devspace_list_vars.md new file mode 100644 index 0000000000..0cb6b40438 --- /dev/null +++ b/docs/pages/cli/devspace_list_vars.md @@ -0,0 +1,49 @@ +--- +title: "devspace list vars --help" +sidebar_label: devspace list vars +--- + + +Lists the vars in the active config + +## Synopsis + + +``` +devspace list vars [flags] +``` + +``` +####################################################### +############### devspace list vars #################### +####################################################### +Lists the defined vars in the devspace config with their +values +####################################################### +``` + + +## Flags + +``` + -h, --help help for vars + -o, --output string The output format of the command. Can be either empty, keyvalue or json +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_logs.md b/docs/pages/cli/devspace_logs.md new file mode 100644 index 0000000000..be594be8c6 --- /dev/null +++ b/docs/pages/cli/devspace_logs.md @@ -0,0 +1,60 @@ +--- +title: "devspace logs --help" +sidebar_label: devspace logs +--- + + +Prints the logs of a pod and attaches to it + +## Synopsis + + +``` +devspace logs [flags] +``` + +``` +####################################################### +#################### devspace logs #################### +####################################################### +Prints the last log of a pod container and attachs +to it + +Example: +devspace logs +devspace logs --namespace=mynamespace +####################################################### +``` + + +## Flags + +``` + -c, --container string Container name within pod where to execute command + -f, --follow Attach to logs afterwards + -h, --help help for logs + --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) + -l, --label-selector string Comma separated key=value selector list (e.g. release=test) + --lines int Max amount of lines to print from the last log (default 200) + --pick Select a pod (default true) + --pod string Pod to print the logs of + --wait Wait for the pod(s) to start if they are not running +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_open.md b/docs/pages/cli/devspace_open.md new file mode 100644 index 0000000000..f59374d95a --- /dev/null +++ b/docs/pages/cli/devspace_open.md @@ -0,0 +1,52 @@ +--- +title: "devspace open --help" +sidebar_label: devspace open +--- + + +Opens the space in the browser + +## Synopsis + + +``` +devspace open [flags] +``` + +``` +####################################################### +#################### devspace open #################### +####################################################### +Opens the space domain in the browser + +Example: +devspace open +####################################################### +``` + + +## Flags + +``` + -h, --help help for open + --port int The port on the localhost to listen on + --provider string The cloud provider to use +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_print.md b/docs/pages/cli/devspace_print.md new file mode 100644 index 0000000000..30ad1429f0 --- /dev/null +++ b/docs/pages/cli/devspace_print.md @@ -0,0 +1,50 @@ +--- +title: "devspace print --help" +sidebar_label: devspace print +--- + + +Prints displays the configuration + +## Synopsis + + +``` +devspace print [flags] +``` + +``` +####################################################### +################## devspace print ##################### +####################################################### +Prints the configuration for the current or given +profile after all patching and variable substitution +####################################################### +``` + + +## Flags + +``` + --dependency string The dependency to print the config from. Use dot to access nested dependencies (e.g. dep1.dep2) + -h, --help help for print + --skip-info When enabled, only prints the configuration without additional information +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_purge.md b/docs/pages/cli/devspace_purge.md new file mode 100644 index 0000000000..5505891d54 --- /dev/null +++ b/docs/pages/cli/devspace_purge.md @@ -0,0 +1,64 @@ +--- +title: "devspace purge --help" +sidebar_label: devspace purge +--- + + +Deletes deployed resources + +## Synopsis + + +``` +devspace purge [flags] +``` + +``` +####################################################### +################### devspace purge #################### +####################################################### +Deletes the deployed kubernetes resources: + +devspace purge +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for purge + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute (default "purge") + --render If true will render manifests and print them instead of actually deploying them + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_remove.md b/docs/pages/cli/devspace_remove.md new file mode 100644 index 0000000000..fef21bdf61 --- /dev/null +++ b/docs/pages/cli/devspace_remove.md @@ -0,0 +1,41 @@ +--- +title: "devspace remove --help" +sidebar_label: devspace remove +--- + + +Removes devspace configuration + +## Synopsis + + +``` +####################################################### +################## devspace remove #################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for remove +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_remove_context.md b/docs/pages/cli/devspace_remove_context.md new file mode 100644 index 0000000000..5a1017148a --- /dev/null +++ b/docs/pages/cli/devspace_remove_context.md @@ -0,0 +1,50 @@ +--- +title: "devspace remove context --help" +sidebar_label: devspace remove context +--- + + +Removes a kubectl-context + +## Synopsis + + +``` +devspace remove context [flags] +``` + +``` +####################################################### +############# devspace remove context ################# +####################################################### +Removes a kubectl-context + +Example: +devspace remove context myspace +####################################################### +``` + + +## Flags + +``` + -h, --help help for context +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_remove_plugin.md b/docs/pages/cli/devspace_remove_plugin.md new file mode 100644 index 0000000000..55068ea730 --- /dev/null +++ b/docs/pages/cli/devspace_remove_plugin.md @@ -0,0 +1,49 @@ +--- +title: "devspace remove plugin --help" +sidebar_label: devspace remove plugin +--- + + +Removes a devspace plugin + +## Synopsis + + +``` +devspace remove plugin [flags] +``` + +``` +####################################################### +############# devspace remove plugin ################## +####################################################### +Removes a plugin + +devspace remove plugin my-plugin +####################################################### +``` + + +## Flags + +``` + -h, --help help for plugin +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_render.md b/docs/pages/cli/devspace_render.md new file mode 100644 index 0000000000..40c1cb0feb --- /dev/null +++ b/docs/pages/cli/devspace_render.md @@ -0,0 +1,64 @@ +--- +title: "devspace render --help" +sidebar_label: devspace render +--- + + +Builds all defined images and shows the yamls that would be deployed + +## Synopsis + + +``` +devspace render [flags] +``` + +``` +####################################################### +################## devspace render ##################### +####################################################### +Builds all defined images and shows the yamls that would +be deployed via helm and kubectl, but skips actual +deployment. +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for render + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute (default "deploy") + --render If true will render manifests and print them instead of actually deploying them (default true) + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_reset.md b/docs/pages/cli/devspace_reset.md new file mode 100644 index 0000000000..41c7b5a971 --- /dev/null +++ b/docs/pages/cli/devspace_reset.md @@ -0,0 +1,41 @@ +--- +title: "devspace reset --help" +sidebar_label: devspace reset +--- + + +Resets an cluster token + +## Synopsis + + +``` +####################################################### +################## devspace reset ##################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for reset +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_reset_dependencies.md b/docs/pages/cli/devspace_reset_dependencies.md new file mode 100644 index 0000000000..33e99ce556 --- /dev/null +++ b/docs/pages/cli/devspace_reset_dependencies.md @@ -0,0 +1,50 @@ +--- +title: "devspace reset dependencies --help" +sidebar_label: devspace reset dependencies +--- + + +Resets the dependencies cache + +## Synopsis + + +``` +devspace reset dependencies [flags] +``` + +``` +####################################################### +############ devspace reset dependencies ############## +####################################################### +Deletes the complete dependency cache + +Examples: +devspace reset dependencies +####################################################### +``` + + +## Flags + +``` + -h, --help help for dependencies +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_reset_pods.md b/docs/pages/cli/devspace_reset_pods.md new file mode 100644 index 0000000000..bdd24cca22 --- /dev/null +++ b/docs/pages/cli/devspace_reset_pods.md @@ -0,0 +1,51 @@ +--- +title: "devspace reset pods --help" +sidebar_label: devspace reset pods +--- + + +Resets the replaced pods + +## Synopsis + + +``` +devspace reset pods [flags] +``` + +``` +####################################################### +############### devspace reset pods ################### +####################################################### +Resets the replaced pods to its original state + +Examples: +devspace reset pods +####################################################### +``` + + +## Flags + +``` + --force If true will force resetting pods even though they might be still used by other DevSpace projects + -h, --help help for pods +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_reset_vars.md b/docs/pages/cli/devspace_reset_vars.md new file mode 100644 index 0000000000..31559f06c9 --- /dev/null +++ b/docs/pages/cli/devspace_reset_vars.md @@ -0,0 +1,50 @@ +--- +title: "devspace reset vars --help" +sidebar_label: devspace reset vars +--- + + +Resets the current config vars + +## Synopsis + + +``` +devspace reset vars [flags] +``` + +``` +####################################################### +############### devspace reset vars ################### +####################################################### +Resets the saved variables of the current config + +Examples: +devspace reset vars +####################################################### +``` + + +## Flags + +``` + -h, --help help for vars +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_restart.md b/docs/pages/cli/devspace_restart.md new file mode 100644 index 0000000000..2835fd6871 --- /dev/null +++ b/docs/pages/cli/devspace_restart.md @@ -0,0 +1,56 @@ +--- +title: "devspace restart --help" +sidebar_label: devspace restart +--- + + +Restarts containers where the sync restart helper is injected + +## Synopsis + + +``` +devspace restart [flags] +``` + +``` +####################################################### +################## devspace restart ################### +####################################################### +Restarts containers where the sync restart helper +is injected: + +devspace restart +devspace restart -n my-namespace +####################################################### +``` + + +## Flags + +``` + -c, --container string Container name within pod to restart + -h, --help help for restart + -l, --label-selector string Comma separated key=value selector list (e.g. release=test) + --name string The sync path name to restart + --pick Select a pod (default true) + --pod string Pod to restart +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_run-pipeline.md b/docs/pages/cli/devspace_run-pipeline.md new file mode 100644 index 0000000000..51fbbb3cb5 --- /dev/null +++ b/docs/pages/cli/devspace_run-pipeline.md @@ -0,0 +1,64 @@ +--- +title: "devspace run-pipeline --help" +sidebar_label: devspace run-pipeline +--- + + +Starts a DevSpace pipeline + +## Synopsis + + +``` +devspace run-pipeline [flags] +``` + +``` +####################################################### +############## devspace run-pipeline ################## +####################################################### +Execute a pipeline: +devspace run-pipeline my-pipeline +devspace run-pipeline dev +####################################################### +``` + + +## Flags + +``` + --build-sequential Builds the images one after another instead of in parallel + --dependency strings Deploys only the specified named dependencies + -b, --force-build Forces to build every image + -d, --force-deploy Forces to deploy every deployment + --force-purge Forces to purge every deployment even though it might be in use by another DevSpace project + -h, --help help for run-pipeline + --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) + --pipeline string The pipeline to execute + --render If true will render manifests and print them instead of actually deploying them + --show-ui Shows the ui server + --skip-build Skips building of images + --skip-dependency strings Skips the following dependencies for deployment + --skip-deploy If enabled will skip deploying + --skip-push Skips image pushing, useful for minikube deployment + --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) + -t, --tag strings Use the given tag for all built images +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_run.md b/docs/pages/cli/devspace_run.md new file mode 100644 index 0000000000..22072fda9e --- /dev/null +++ b/docs/pages/cli/devspace_run.md @@ -0,0 +1,53 @@ +--- +title: "devspace run --help" +sidebar_label: devspace run +--- + + +Executes a predefined command + +## Synopsis + + +``` +devspace run [flags] +``` + +``` +####################################################### +##################### devspace run #################### +####################################################### +Executes a predefined command from the devspace.yaml + +Examples: +devspace run mycommand --myarg 123 +devspace run mycommand2 1 2 3 +devspace --dependency my-dependency run any-command --any-command-flag +####################################################### +``` + + +## Flags + +``` + --dependency string Run a command from a specific dependency + -h, --help help for run +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_set.md b/docs/pages/cli/devspace_set.md new file mode 100644 index 0000000000..9df1a7dd9d --- /dev/null +++ b/docs/pages/cli/devspace_set.md @@ -0,0 +1,41 @@ +--- +title: "devspace set --help" +sidebar_label: devspace set +--- + + +Sets global configuration changes + +## Synopsis + + +``` +####################################################### +#################### devspace set ##################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for set +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_set_var.md b/docs/pages/cli/devspace_set_var.md new file mode 100644 index 0000000000..533b98266c --- /dev/null +++ b/docs/pages/cli/devspace_set_var.md @@ -0,0 +1,52 @@ +--- +title: "devspace set var --help" +sidebar_label: devspace set var +--- + + +Sets a variable + +## Synopsis + + +``` +devspace set var [flags] +``` + +``` +####################################################### +################# devspace set var #################### +####################################################### +Sets a specific variable + +Examples: +devspace set var key=value +devspace set var key=value key2=value2 +####################################################### +``` + + +## Flags + +``` + -h, --help help for var + --overwrite If true will overwrite the variables value even if its set already (default true) +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_sync.md b/docs/pages/cli/devspace_sync.md new file mode 100644 index 0000000000..047c5a2666 --- /dev/null +++ b/docs/pages/cli/devspace_sync.md @@ -0,0 +1,68 @@ +--- +title: "devspace sync --help" +sidebar_label: devspace sync +--- + + +Starts a bi-directional sync between the target container and the local path + +## Synopsis + + +``` +devspace sync [flags] +``` + +``` +####################################################### +################### devspace sync ##################### +####################################################### +Starts a bi-directionaly sync between the target container +and the current path: + +devspace sync +devspace sync --local-path=subfolder --container-path=/app +devspace sync --exclude=node_modules --exclude=test +devspace sync --pod=my-pod --container=my-container +devspace sync --container-path=/my-path +####################################################### +``` + + +## Flags + +``` + -c, --container string Container name within pod where to sync to + --download-on-initial-sync DEPRECATED: Downloads all locally non existing remote files in the beginning (default true) + --download-only If set DevSpace will only download files + -e, --exclude strings Exclude directory from sync + -h, --help help for sync + --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) + --initial-sync string The initial sync strategy to use (mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll) + -l, --label-selector string Comma separated key=value selector list (e.g. release=test) + --no-watch Synchronizes local and remote and then stops + --path string Path to use (Default is current directory). Example: ./local-path:/remote-path or local-path:. + --pick Select a pod (default true) + --pod string Pod to sync to + --polling If polling should be used to detect file changes in the container + --upload-only If set DevSpace will only upload files + --wait Wait for the pod(s) to start if they are not running (default true) +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_ui.md b/docs/pages/cli/devspace_ui.md new file mode 100644 index 0000000000..9aef1545a0 --- /dev/null +++ b/docs/pages/cli/devspace_ui.md @@ -0,0 +1,51 @@ +--- +title: "devspace ui --help" +sidebar_label: devspace ui +--- + + +Opens the localhost UI in the browser + +## Synopsis + + +``` +devspace ui [flags] +``` + +``` +####################################################### +##################### devspace ui ##################### +####################################################### +Opens the localhost UI in the browser +####################################################### +``` + + +## Flags + +``` + --dev Ignore errors when downloading UI + -h, --help help for ui + --host string The host to use when opening the ui server (default "localhost") + --port int The port to use when opening the ui server + --server If enabled will force start a server (otherwise an existing UI server is searched) +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_update.md b/docs/pages/cli/devspace_update.md new file mode 100644 index 0000000000..8bdcd89a95 --- /dev/null +++ b/docs/pages/cli/devspace_update.md @@ -0,0 +1,41 @@ +--- +title: "devspace update --help" +sidebar_label: devspace update +--- + + +Updates the current config + +## Synopsis + + +``` +####################################################### +################## devspace update #################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for update +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_update_plugin.md b/docs/pages/cli/devspace_update_plugin.md new file mode 100644 index 0000000000..9bdac7236b --- /dev/null +++ b/docs/pages/cli/devspace_update_plugin.md @@ -0,0 +1,50 @@ +--- +title: "devspace update plugin --help" +sidebar_label: devspace update plugin +--- + + +Updates a devspace plugin + +## Synopsis + + +``` +devspace update plugin [flags] +``` + +``` +####################################################### +############# devspace update plugin ################## +####################################################### +Updates a plugin + +devspace update plugin my-plugin +####################################################### +``` + + +## Flags + +``` + -h, --help help for plugin + --version string The git tag to use +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_upgrade.md b/docs/pages/cli/devspace_upgrade.md new file mode 100644 index 0000000000..57e3c18b1d --- /dev/null +++ b/docs/pages/cli/devspace_upgrade.md @@ -0,0 +1,48 @@ +--- +title: "devspace upgrade --help" +sidebar_label: devspace upgrade +--- + + +Upgrades the DevSpace CLI to the newest version + +## Synopsis + + +``` +devspace upgrade [flags] +``` + +``` +####################################################### +################## devspace upgrade ################### +####################################################### +Upgrades the DevSpace CLI to the newest version +####################################################### +``` + + +## Flags + +``` + -h, --help help for upgrade + --version string The version to update devspace to. Defaults to the latest stable version available +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_use.md b/docs/pages/cli/devspace_use.md new file mode 100644 index 0000000000..3c83e69b89 --- /dev/null +++ b/docs/pages/cli/devspace_use.md @@ -0,0 +1,41 @@ +--- +title: "devspace use --help" +sidebar_label: devspace use +--- + + +Uses specific config + +## Synopsis + + +``` +####################################################### +#################### devspace use ##################### +####################################################### +``` + + +## Flags + +``` + -h, --help help for use +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_use_context.md b/docs/pages/cli/devspace_use_context.md new file mode 100644 index 0000000000..e79112e92d --- /dev/null +++ b/docs/pages/cli/devspace_use_context.md @@ -0,0 +1,50 @@ +--- +title: "devspace use context --help" +sidebar_label: devspace use context +--- + + +Tells DevSpace which kube context to use + +## Synopsis + + +``` +devspace use context [flags] +``` + +``` +####################################################### +############### devspace use context ################## +####################################################### +Switches the current kube-context + +Example: +devspace use context my-context +####################################################### +``` + + +## Flags + +``` + -h, --help help for context +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_use_namespace.md b/docs/pages/cli/devspace_use_namespace.md new file mode 100644 index 0000000000..ce9a72e76c --- /dev/null +++ b/docs/pages/cli/devspace_use_namespace.md @@ -0,0 +1,51 @@ +--- +title: "devspace use namespace --help" +sidebar_label: devspace use namespace +--- + + +Tells DevSpace which namespace to use + +## Synopsis + + +``` +devspace use namespace [flags] +``` + +``` +####################################################### +############## devspace use namespace ################# +####################################################### +Sets the default namespace to deploy to + +Example: +devspace use namespace my-namespace +####################################################### +``` + + +## Flags + +``` + -h, --help help for namespace + --reset Resets the default namespace of the current kube-context +``` + + +## Global & Inherited Flags + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + diff --git a/docs/pages/cli/devspace_version.md b/docs/pages/cli/devspace_version.md new file mode 100644 index 0000000000..0dce421fe0 --- /dev/null +++ b/docs/pages/cli/devspace_version.md @@ -0,0 +1,42 @@ +--- +title: "devspace version --help" +sidebar_label: devspace version +--- + +## devspace version + +Prints version of devspace + +``` +devspace version [flags] +``` + +### Options + +``` + -h, --help help for version +``` + +### Options inherited from parent commands + +``` + --debug Prints the stack trace if an error occurs + --disable-profile-activation If true will ignore all profile activations + --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems + --kube-context string The kubernetes context to use + -n, --namespace string The kubernetes namespace to use + --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before + --override-name string If specified will override the devspace.yaml name + -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified + --silent Run in silent mode and prevents any devspace log output except panics & fatals + -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project + --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) +``` + +``` + +``` + + +## Flags +## Global & Inherited Flags \ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/build_images.mdx b/docs/pages/configuration/_partials/functions/build_images.mdx new file mode 100755 index 0000000000..db7d944fdb --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images.mdx @@ -0,0 +1,38 @@ + +import PartialTag from "./build_images/tag.mdx" +import PartialSkip from "./build_images/skip.mdx" +import PartialSkippush from "./build_images/skip-push.mdx" +import PartialSkippushonlocalkubernetes from "./build_images/skip-push-on-local-kubernetes.mdx" +import PartialForcerebuild from "./build_images/force-rebuild.mdx" +import PartialSequential from "./build_images/sequential.mdx" +import PartialMaxconcurrent from "./build_images/max-concurrent.mdx" +import PartialAll from "./build_images/all.mdx" +import PartialSet from "./build_images/set.mdx" +import PartialSetstring from "./build_images/set-string.mdx" +import PartialFrom from "./build_images/from.mdx" +import PartialFromfile from "./build_images/from-file.mdx" + +
+ + +### `build_images` [image-1] [image-2] ... pipeline only {#build_images} + +Builds all images passed as arguments in parallel + + + + + + + + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/all.mdx b/docs/pages/configuration/_partials/functions/build_images/all.mdx new file mode 100755 index 0000000000..4dea3a81d3 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#build_images-all} + +Build all images + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/force-rebuild.mdx b/docs/pages/configuration/_partials/functions/build_images/force-rebuild.mdx new file mode 100755 index 0000000000..50304cdf97 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/force-rebuild.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--force-rebuild` bool pipeline only {#build_images-force-rebuild} + +Skip pushing + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/from-file.mdx b/docs/pages/configuration/_partials/functions/build_images/from-file.mdx new file mode 100755 index 0000000000..86b38f455f --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/from-file.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from-file` []string pipeline only {#build_images-from-file} + +Reuse an existing configuration from a file + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/from.mdx b/docs/pages/configuration/_partials/functions/build_images/from.mdx new file mode 100755 index 0000000000..c9b24008bd --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/from.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from` []string pipeline only {#build_images-from} + +Reuse an existing configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/max-concurrent.mdx b/docs/pages/configuration/_partials/functions/build_images/max-concurrent.mdx new file mode 100755 index 0000000000..2a5aaaa22f --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/max-concurrent.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--max-concurrent` int pipeline only {#build_images-max-concurrent} + +A pointer to an integer + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/sequential.mdx b/docs/pages/configuration/_partials/functions/build_images/sequential.mdx new file mode 100755 index 0000000000..2e6df799c5 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/sequential.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--sequential` bool pipeline only {#build_images-sequential} + +Skip pushing + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/set-string.mdx b/docs/pages/configuration/_partials/functions/build_images/set-string.mdx new file mode 100755 index 0000000000..c7cea6f3d3 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/set-string.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set-string` []string pipeline only {#build_images-set-string} + +Set configuration as string + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/set.mdx b/docs/pages/configuration/_partials/functions/build_images/set.mdx new file mode 100755 index 0000000000..1af374b613 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/set.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set` []string pipeline only {#build_images-set} + +Set configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/skip-push-on-local-kubernetes.mdx b/docs/pages/configuration/_partials/functions/build_images/skip-push-on-local-kubernetes.mdx new file mode 100755 index 0000000000..b388ee25ed --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/skip-push-on-local-kubernetes.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--skip-push-on-local-kubernetes` bool pipeline only {#build_images-skip-push-on-local-kubernetes} + +Skip pushing + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/skip-push.mdx b/docs/pages/configuration/_partials/functions/build_images/skip-push.mdx new file mode 100755 index 0000000000..477bdb5e07 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/skip-push.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--skip-push` bool pipeline only {#build_images-skip-push} + +Skip pushing + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/skip.mdx b/docs/pages/configuration/_partials/functions/build_images/skip.mdx new file mode 100755 index 0000000000..4671368b41 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/skip.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--skip` bool pipeline only {#build_images-skip} + +If enabled will skip building + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/build_images/tag.mdx b/docs/pages/configuration/_partials/functions/build_images/tag.mdx new file mode 100755 index 0000000000..924ee2e680 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/build_images/tag.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--tag / -t` []string pipeline only {#build_images-tag} + +If enabled will override the default tags + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/cat.mdx b/docs/pages/configuration/_partials/functions/cat.mdx new file mode 100755 index 0000000000..85f8f03302 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/cat.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `cat` [file-path] string pipeline only {#cat} + +Returns the content of a file + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments.mdx b/docs/pages/configuration/_partials/functions/create_deployments.mdx new file mode 100755 index 0000000000..49e05146be --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments.mdx @@ -0,0 +1,32 @@ + +import PartialSkip from "./create_deployments/skip.mdx" +import PartialForceredeploy from "./create_deployments/force-redeploy.mdx" +import PartialSequential from "./create_deployments/sequential.mdx" +import PartialRender from "./create_deployments/render.mdx" +import PartialSet from "./create_deployments/set.mdx" +import PartialSetstring from "./create_deployments/set-string.mdx" +import PartialFrom from "./create_deployments/from.mdx" +import PartialFromfile from "./create_deployments/from-file.mdx" +import PartialAll from "./create_deployments/all.mdx" + +
+ + +### `create_deployments` [deployment-1] [deployment-2] ... pipeline only {#create_deployments} + +Creates all deployments passed as arguments in parallel + + + + + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/all.mdx b/docs/pages/configuration/_partials/functions/create_deployments/all.mdx new file mode 100755 index 0000000000..e863e90368 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#create_deployments-all} + +Deploy all deployments + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/force-redeploy.mdx b/docs/pages/configuration/_partials/functions/create_deployments/force-redeploy.mdx new file mode 100755 index 0000000000..53eb952893 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/force-redeploy.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--force-redeploy` bool pipeline only {#create_deployments-force-redeploy} + +Forces redeployment + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/from-file.mdx b/docs/pages/configuration/_partials/functions/create_deployments/from-file.mdx new file mode 100755 index 0000000000..2c3b411de2 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/from-file.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from-file` []string pipeline only {#create_deployments-from-file} + +Reuse an existing configuration from a file + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/from.mdx b/docs/pages/configuration/_partials/functions/create_deployments/from.mdx new file mode 100755 index 0000000000..ac158c5eef --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/from.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from` []string pipeline only {#create_deployments-from} + +Reuse an existing configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/render.mdx b/docs/pages/configuration/_partials/functions/create_deployments/render.mdx new file mode 100755 index 0000000000..6c5d88046c --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/render.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--render` bool pipeline only {#create_deployments-render} + +If true, prints the rendered manifests to the stdout instead of deploying them + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/sequential.mdx b/docs/pages/configuration/_partials/functions/create_deployments/sequential.mdx new file mode 100755 index 0000000000..82803631d5 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/sequential.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--sequential` bool pipeline only {#create_deployments-sequential} + +Sequentially deploys the deployments + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/set-string.mdx b/docs/pages/configuration/_partials/functions/create_deployments/set-string.mdx new file mode 100755 index 0000000000..96296a6ca7 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/set-string.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set-string` []string pipeline only {#create_deployments-set-string} + +Set configuration as string + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/set.mdx b/docs/pages/configuration/_partials/functions/create_deployments/set.mdx new file mode 100755 index 0000000000..270c6c6675 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/set.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set` []string pipeline only {#create_deployments-set} + +Set configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/create_deployments/skip.mdx b/docs/pages/configuration/_partials/functions/create_deployments/skip.mdx new file mode 100755 index 0000000000..0df9dbb78d --- /dev/null +++ b/docs/pages/configuration/_partials/functions/create_deployments/skip.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--skip` bool pipeline only {#create_deployments-skip} + +If enabled, will skip deploying + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets.mdx new file mode 100755 index 0000000000..2f0cd0af87 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets.mdx @@ -0,0 +1,24 @@ + +import PartialSet from "./ensure_pull_secrets/set.mdx" +import PartialSetstring from "./ensure_pull_secrets/set-string.mdx" +import PartialFrom from "./ensure_pull_secrets/from.mdx" +import PartialFromfile from "./ensure_pull_secrets/from-file.mdx" +import PartialAll from "./ensure_pull_secrets/all.mdx" + +
+ + +### `ensure_pull_secrets` [image-1] [image-2] ... pipeline only {#ensure_pull_secrets} + +Creates pull secrets for all images passed as arguments + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets/all.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/all.mdx new file mode 100755 index 0000000000..69a50fa6d9 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#ensure_pull_secrets-all} + +Ensure all pull secrets + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from-file.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from-file.mdx new file mode 100755 index 0000000000..5dc00537d6 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from-file.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from-file` []string pipeline only {#ensure_pull_secrets-from-file} + +Reuse an existing configuration from a file + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from.mdx new file mode 100755 index 0000000000..cc88a082ca --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/from.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from` []string pipeline only {#ensure_pull_secrets-from} + +Reuse an existing configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set-string.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set-string.mdx new file mode 100755 index 0000000000..acb554539d --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set-string.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set-string` []string pipeline only {#ensure_pull_secrets-set-string} + +Set configuration as string + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set.mdx b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set.mdx new file mode 100755 index 0000000000..8d33de85a6 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/ensure_pull_secrets/set.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set` []string pipeline only {#ensure_pull_secrets-set} + +Set configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container.mdx b/docs/pages/configuration/_partials/functions/exec_container.mdx new file mode 100755 index 0000000000..fa0bf782a7 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container.mdx @@ -0,0 +1,26 @@ + +import PartialImageselector from "./exec_container/image-selector.mdx" +import PartialLabelselector from "./exec_container/label-selector.mdx" +import PartialContainer from "./exec_container/container.mdx" +import PartialNamespace from "./exec_container/namespace.mdx" +import PartialDisablewait from "./exec_container/disable-wait.mdx" +import PartialTimeout from "./exec_container/timeout.mdx" + +
+ + +### `exec_container` [command] pipeline only {#exec_container} + +Executes the command provided as argument inside a container + + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/container.mdx b/docs/pages/configuration/_partials/functions/exec_container/container.mdx new file mode 100755 index 0000000000..003b65b2ae --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/container.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--container` string pipeline only {#exec_container-container} + +The container to use + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/disable-wait.mdx b/docs/pages/configuration/_partials/functions/exec_container/disable-wait.mdx new file mode 100755 index 0000000000..edc4a82ad1 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/disable-wait.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-wait` bool pipeline only {#exec_container-disable-wait} + +If true, will not wait for the container to become ready + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/image-selector.mdx b/docs/pages/configuration/_partials/functions/exec_container/image-selector.mdx new file mode 100755 index 0000000000..b8cae17a66 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/image-selector.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--image-selector` string pipeline only {#exec_container-image-selector} + +The image selector to use to select the container + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/label-selector.mdx b/docs/pages/configuration/_partials/functions/exec_container/label-selector.mdx new file mode 100755 index 0000000000..b4c9404077 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/label-selector.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--label-selector` string pipeline only {#exec_container-label-selector} + +The label selector to use to select the container + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/namespace.mdx b/docs/pages/configuration/_partials/functions/exec_container/namespace.mdx new file mode 100755 index 0000000000..7832238834 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--namespace / -n` string pipeline only {#exec_container-namespace} + +The namespace to use + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/exec_container/timeout.mdx b/docs/pages/configuration/_partials/functions/exec_container/timeout.mdx new file mode 100755 index 0000000000..6e08c89b09 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/exec_container/timeout.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--timeout` int64 pipeline only {#exec_container-timeout} + +The timeout to wait. Defaults to 5 minutes + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/get_config_value.mdx b/docs/pages/configuration/_partials/functions/get_config_value.mdx new file mode 100755 index 0000000000..61835e47ab --- /dev/null +++ b/docs/pages/configuration/_partials/functions/get_config_value.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `get_config_value` [json.path] string pipeline only {#get_config_value} + +Returns the value of the config loaded from devspace.yaml + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/get_flag.mdx b/docs/pages/configuration/_partials/functions/get_flag.mdx new file mode 100755 index 0000000000..efb19884e8 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/get_flag.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `get_flag` [flag-name] string pipeline only {#get_flag} + +Returns the value of the flag that is provided as argument + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/get_image.mdx b/docs/pages/configuration/_partials/functions/get_image.mdx new file mode 100755 index 0000000000..6d15e5491f --- /dev/null +++ b/docs/pages/configuration/_partials/functions/get_image.mdx @@ -0,0 +1,18 @@ + +import PartialDependency from "./get_image/dependency.mdx" +import PartialOnly from "./get_image/only.mdx" + +
+ + +### `get_image` [image] string pipeline only {#get_image} + +Returns the most recently built image and/or tag for a given image name + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/get_image/dependency.mdx b/docs/pages/configuration/_partials/functions/get_image/dependency.mdx new file mode 100755 index 0000000000..b5102a3ca6 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/get_image/dependency.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--dependency` string pipeline only {#get_image-dependency} + +Retrieves the image from the named dependency + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/get_image/only.mdx b/docs/pages/configuration/_partials/functions/get_image/only.mdx new file mode 100755 index 0000000000..d7fc7aa449 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/get_image/only.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--only` string pipeline only {#get_image-only} + +Displays either only the tag or only the image + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/group_checks.mdx b/docs/pages/configuration/_partials/functions/group_checks.mdx new file mode 100755 index 0000000000..2be03a4bb3 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_checks.mdx @@ -0,0 +1,17 @@ +
+
Checks
+ + +import PartialIstrue from "./is_true.mdx" +import PartialIsos from "./is_os.mdx" +import PartialIsequal from "./is_equal.mdx" +import PartialIsempty from "./is_empty.mdx" +import PartialIsdependency from "./is_dependency.mdx" + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_checks_global.mdx b/docs/pages/configuration/_partials/functions/group_checks_global.mdx new file mode 100755 index 0000000000..01f8eb8b49 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_checks_global.mdx @@ -0,0 +1,17 @@ +
+
Checks
+ + +import PartialIstrue from "./is_true.mdx" +import PartialIsos from "./is_os.mdx" +import PartialIsequal from "./is_equal.mdx" +import PartialIsempty from "./is_empty.mdx" +import PartialIsdependency from "./is_dependency.mdx" + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_checks_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_checks_pipeline.mdx new file mode 100755 index 0000000000..e69de29bb2 diff --git a/docs/pages/configuration/_partials/functions/group_deployments.mdx b/docs/pages/configuration/_partials/functions/group_deployments.mdx new file mode 100755 index 0000000000..35c1eddd2a --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_deployments.mdx @@ -0,0 +1,11 @@ +
+
Deployments
+ + +import PartialPurgedeployments from "./purge_deployments.mdx" +import PartialCreatedeployments from "./create_deployments.mdx" + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_deployments_global.mdx b/docs/pages/configuration/_partials/functions/group_deployments_global.mdx new file mode 100755 index 0000000000..e69de29bb2 diff --git a/docs/pages/configuration/_partials/functions/group_deployments_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_deployments_pipeline.mdx new file mode 100755 index 0000000000..8c0e093c00 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_deployments_pipeline.mdx @@ -0,0 +1,11 @@ +
+
Deployments
+ + +import PartialPurgedeployments from "./purge_deployments.mdx" +import PartialCreatedeployments from "./create_deployments.mdx" + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_dev.mdx b/docs/pages/configuration/_partials/functions/group_dev.mdx new file mode 100755 index 0000000000..caa27b6178 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_dev.mdx @@ -0,0 +1,11 @@ +
+
Dev
+ + +import PartialStopdev from "./stop_dev.mdx" +import PartialStartdev from "./start_dev.mdx" + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_dev_global.mdx b/docs/pages/configuration/_partials/functions/group_dev_global.mdx new file mode 100755 index 0000000000..e69de29bb2 diff --git a/docs/pages/configuration/_partials/functions/group_dev_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_dev_pipeline.mdx new file mode 100755 index 0000000000..717ebd9709 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_dev_pipeline.mdx @@ -0,0 +1,11 @@ +
+
Dev
+ + +import PartialStopdev from "./stop_dev.mdx" +import PartialStartdev from "./start_dev.mdx" + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_images.mdx b/docs/pages/configuration/_partials/functions/group_images.mdx new file mode 100755 index 0000000000..ba95720fb1 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_images.mdx @@ -0,0 +1,13 @@ +
+
Images
+ + +import PartialGetimage from "./get_image.mdx" +import PartialEnsurepullsecrets from "./ensure_pull_secrets.mdx" +import PartialBuildimages from "./build_images.mdx" + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_images_global.mdx b/docs/pages/configuration/_partials/functions/group_images_global.mdx new file mode 100755 index 0000000000..e69de29bb2 diff --git a/docs/pages/configuration/_partials/functions/group_images_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_images_pipeline.mdx new file mode 100755 index 0000000000..a641d562e1 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_images_pipeline.mdx @@ -0,0 +1,13 @@ +
+
Images
+ + +import PartialGetimage from "./get_image.mdx" +import PartialEnsurepullsecrets from "./ensure_pull_secrets.mdx" +import PartialBuildimages from "./build_images.mdx" + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_other.mdx b/docs/pages/configuration/_partials/functions/group_other.mdx new file mode 100755 index 0000000000..c32711fff2 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_other.mdx @@ -0,0 +1,23 @@ +
+
Other
+ + +import PartialXargs from "./xargs.mdx" +import PartialSleep from "./sleep.mdx" +import PartialRunwatch from "./run_watch.mdx" +import PartialGetflag from "./get_flag.mdx" +import PartialCat from "./cat.mdx" +import PartialGetconfigvalue from "./get_config_value.mdx" +import PartialExeccontainer from "./exec_container.mdx" +import PartialSelectpod from "./select_pod.mdx" + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_other_global.mdx b/docs/pages/configuration/_partials/functions/group_other_global.mdx new file mode 100755 index 0000000000..51ab7867c8 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_other_global.mdx @@ -0,0 +1,17 @@ +
+
Other
+ + +import PartialXargs from "./xargs.mdx" +import PartialSleep from "./sleep.mdx" +import PartialRunwatch from "./run_watch.mdx" +import PartialGetflag from "./get_flag.mdx" +import PartialCat from "./cat.mdx" + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_other_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_other_pipeline.mdx new file mode 100755 index 0000000000..d9bafcffa4 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_other_pipeline.mdx @@ -0,0 +1,13 @@ +
+
Other
+ + +import PartialGetconfigvalue from "./get_config_value.mdx" +import PartialExeccontainer from "./exec_container.mdx" +import PartialSelectpod from "./select_pod.mdx" + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_pipelines.mdx b/docs/pages/configuration/_partials/functions/group_pipelines.mdx new file mode 100755 index 0000000000..572557117c --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_pipelines.mdx @@ -0,0 +1,13 @@ +
+
Pipelines
+ + +import PartialRundependencypipelines from "./run_dependency_pipelines.mdx" +import PartialRundefaultpipeline from "./run_default_pipeline.mdx" +import PartialRunpipelines from "./run_pipelines.mdx" + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/group_pipelines_global.mdx b/docs/pages/configuration/_partials/functions/group_pipelines_global.mdx new file mode 100755 index 0000000000..e69de29bb2 diff --git a/docs/pages/configuration/_partials/functions/group_pipelines_pipeline.mdx b/docs/pages/configuration/_partials/functions/group_pipelines_pipeline.mdx new file mode 100755 index 0000000000..bd601f650b --- /dev/null +++ b/docs/pages/configuration/_partials/functions/group_pipelines_pipeline.mdx @@ -0,0 +1,13 @@ +
+
Pipelines
+ + +import PartialRundependencypipelines from "./run_dependency_pipelines.mdx" +import PartialRundefaultpipeline from "./run_default_pipeline.mdx" +import PartialRunpipelines from "./run_pipelines.mdx" + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/functions/is_dependency.mdx b/docs/pages/configuration/_partials/functions/is_dependency.mdx new file mode 100755 index 0000000000..d986b74f12 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/is_dependency.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `is_dependency` bool pipeline only {#is_dependency} + +Returns true if the pipeline currently being executed is run because the project is a dependency of another project + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/is_empty.mdx b/docs/pages/configuration/_partials/functions/is_empty.mdx new file mode 100755 index 0000000000..a2fadf7706 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/is_empty.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `is_empty` [value] bool pipeline only {#is_empty} + +Returns true if the value of the argument is empty string + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/is_equal.mdx b/docs/pages/configuration/_partials/functions/is_equal.mdx new file mode 100755 index 0000000000..6cff87e91b --- /dev/null +++ b/docs/pages/configuration/_partials/functions/is_equal.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `is_equal` [value-1] [value-2] bool pipeline only {#is_equal} + +Returns true if the values of both arguments provided are equal + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/is_os.mdx b/docs/pages/configuration/_partials/functions/is_os.mdx new file mode 100755 index 0000000000..0821df67c7 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/is_os.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `is_os` [os] darwin linux windows aix android dragonfly freebsd hurd illumos ios js nacl netbsd openbsd plan9 solaris zos bool pipeline only {#is_os} + +Returns true if the current operating system equals the value provided as argument + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/is_true.mdx b/docs/pages/configuration/_partials/functions/is_true.mdx new file mode 100755 index 0000000000..2e0d268b36 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/is_true.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `is_true` [value] bool pipeline only {#is_true} + +Returns true if the value of the argument is "true" + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/purge_deployments.mdx b/docs/pages/configuration/_partials/functions/purge_deployments.mdx new file mode 100755 index 0000000000..ed8e078d86 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/purge_deployments.mdx @@ -0,0 +1,20 @@ + +import PartialForcepurge from "./purge_deployments/force-purge.mdx" +import PartialAll from "./purge_deployments/all.mdx" +import PartialSequential from "./purge_deployments/sequential.mdx" + +
+ + +### `purge_deployments` [deployment-1] [deployment-2] ... pipeline only {#purge_deployments} + +Purges all deployments passed as arguments + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/purge_deployments/all.mdx b/docs/pages/configuration/_partials/functions/purge_deployments/all.mdx new file mode 100755 index 0000000000..4624b50be3 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/purge_deployments/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#purge_deployments-all} + +Deploy all deployments + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/purge_deployments/force-purge.mdx b/docs/pages/configuration/_partials/functions/purge_deployments/force-purge.mdx new file mode 100755 index 0000000000..3c4a0a6664 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/purge_deployments/force-purge.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--force-purge` bool pipeline only {#purge_deployments-force-purge} + +Forces purging of deployments even though they might be still in use by other DevSpace projects + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/purge_deployments/sequential.mdx b/docs/pages/configuration/_partials/functions/purge_deployments/sequential.mdx new file mode 100755 index 0000000000..db29b02cbd --- /dev/null +++ b/docs/pages/configuration/_partials/functions/purge_deployments/sequential.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--sequential` bool pipeline only {#purge_deployments-sequential} + +Sequentially purges the deployments + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/reference.mdx b/docs/pages/configuration/_partials/functions/reference.mdx new file mode 100755 index 0000000000..41c9a6b3f4 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/reference.mdx @@ -0,0 +1,14 @@ + +import PartialGroupother from "./group_other.mdx" +import PartialGroupchecks from "./group_checks.mdx" +import PartialGrouppipelines from "./group_pipelines.mdx" +import PartialGroupdev from "./group_dev.mdx" +import PartialGroupdeployments from "./group_deployments.mdx" +import PartialGroupimages from "./group_images.mdx" + + + + + + + diff --git a/docs/pages/configuration/_partials/functions/reference_global.mdx b/docs/pages/configuration/_partials/functions/reference_global.mdx new file mode 100755 index 0000000000..245d1fac6a --- /dev/null +++ b/docs/pages/configuration/_partials/functions/reference_global.mdx @@ -0,0 +1,14 @@ + +import PartialGroupotherglobal from "./group_other_global.mdx" +import PartialGroupchecksglobal from "./group_checks_global.mdx" +import PartialGrouppipelinesglobal from "./group_pipelines_global.mdx" +import PartialGroupdevglobal from "./group_dev_global.mdx" +import PartialGroupdeploymentsglobal from "./group_deployments_global.mdx" +import PartialGroupimagesglobal from "./group_images_global.mdx" + + + + + + + diff --git a/docs/pages/configuration/_partials/functions/reference_pipeline.mdx b/docs/pages/configuration/_partials/functions/reference_pipeline.mdx new file mode 100755 index 0000000000..e297f1cff3 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/reference_pipeline.mdx @@ -0,0 +1,14 @@ + +import PartialGroupotherpipeline from "./group_other_pipeline.mdx" +import PartialGroupcheckspipeline from "./group_checks_pipeline.mdx" +import PartialGrouppipelinespipeline from "./group_pipelines_pipeline.mdx" +import PartialGroupdevpipeline from "./group_dev_pipeline.mdx" +import PartialGroupdeploymentspipeline from "./group_deployments_pipeline.mdx" +import PartialGroupimagespipeline from "./group_images_pipeline.mdx" + + + + + + + diff --git a/docs/pages/configuration/_partials/functions/run_default_pipeline.mdx b/docs/pages/configuration/_partials/functions/run_default_pipeline.mdx new file mode 100755 index 0000000000..22fc8f094e --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_default_pipeline.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `run_default_pipeline` [pipeline] pipeline only {#run_default_pipeline} + +Runs the default pipeline passed as arguments + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines.mdx new file mode 100755 index 0000000000..997a58d800 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines.mdx @@ -0,0 +1,24 @@ + +import PartialPipeline from "./run_dependency_pipelines/pipeline.mdx" +import PartialExclude from "./run_dependency_pipelines/exclude.mdx" +import PartialOnly from "./run_dependency_pipelines/only.mdx" +import PartialSequential from "./run_dependency_pipelines/sequential.mdx" +import PartialAll from "./run_dependency_pipelines/all.mdx" + +
+ + +### `run_dependency_pipelines` [dependency-1] [dependency-2] ... pipeline only {#run_dependency_pipelines} + +Runs a pipeline of each dependency passed as arguments + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines/all.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/all.mdx new file mode 100755 index 0000000000..2419bc2563 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#run_dependency_pipelines-all} + +Deploy all dependencies + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines/exclude.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/exclude.mdx new file mode 100755 index 0000000000..54d0816d14 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/exclude.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--exclude` []string pipeline only {#run_dependency_pipelines-exclude} + +Dependencies to exclude + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines/only.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/only.mdx new file mode 100755 index 0000000000..e90c031c52 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/only.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--only` []string pipeline only {#run_dependency_pipelines-only} + +Dependencies to include + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines/pipeline.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/pipeline.mdx new file mode 100755 index 0000000000..6021446d96 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/pipeline.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--pipeline` string pipeline only {#run_dependency_pipelines-pipeline} + +The pipeline to deploy from the dependency + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_dependency_pipelines/sequential.mdx b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/sequential.mdx new file mode 100755 index 0000000000..ea48754ff9 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_dependency_pipelines/sequential.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--sequential` bool pipeline only {#run_dependency_pipelines-sequential} + +Run dependencies one after another + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_pipelines.mdx b/docs/pages/configuration/_partials/functions/run_pipelines.mdx new file mode 100755 index 0000000000..81aac85c08 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_pipelines.mdx @@ -0,0 +1,18 @@ + +import PartialBackground from "./run_pipelines/background.mdx" +import PartialSequential from "./run_pipelines/sequential.mdx" + +
+ + +### `run_pipelines` [pipeline-1] [pipeline-2] ... pipeline only {#run_pipelines} + +Runs all pipelines passed as arguments + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_pipelines/background.mdx b/docs/pages/configuration/_partials/functions/run_pipelines/background.mdx new file mode 100755 index 0000000000..ce24741ba8 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_pipelines/background.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--background` bool pipeline only {#run_pipelines-background} + +Run the pipeline in the background + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_pipelines/sequential.mdx b/docs/pages/configuration/_partials/functions/run_pipelines/sequential.mdx new file mode 100755 index 0000000000..4933fce9fc --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_pipelines/sequential.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--sequential` bool pipeline only {#run_pipelines-sequential} + +Run pipelines one after another + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_watch.mdx b/docs/pages/configuration/_partials/functions/run_watch.mdx new file mode 100755 index 0000000000..b58053e1a2 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_watch.mdx @@ -0,0 +1,18 @@ + +import PartialFailonerror from "./run_watch/fail-on-error.mdx" +import PartialPath from "./run_watch/path.mdx" + +
+ + +### `run_watch` [command] pipeline only {#run_watch} + +Executes the command provided as argument and watches for conditions to restart the command + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_watch/fail-on-error.mdx b/docs/pages/configuration/_partials/functions/run_watch/fail-on-error.mdx new file mode 100755 index 0000000000..5efcf7b030 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_watch/fail-on-error.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--fail-on-error` bool pipeline only {#run_watch-fail-on-error} + +If true the command will fail on an error while running the sub command + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/run_watch/path.mdx b/docs/pages/configuration/_partials/functions/run_watch/path.mdx new file mode 100755 index 0000000000..bca47e16b5 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/run_watch/path.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--path / -p` []string pipeline only {#run_watch-path} + +The paths to watch. Can be patterns in the form of ./**/my-file.txt + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod.mdx b/docs/pages/configuration/_partials/functions/select_pod.mdx new file mode 100755 index 0000000000..66e01f168a --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod.mdx @@ -0,0 +1,26 @@ + +import PartialImageselector from "./select_pod/image-selector.mdx" +import PartialLabelselector from "./select_pod/label-selector.mdx" +import PartialContainer from "./select_pod/container.mdx" +import PartialNamespace from "./select_pod/namespace.mdx" +import PartialDisablewait from "./select_pod/disable-wait.mdx" +import PartialTimeout from "./select_pod/timeout.mdx" + +
+ + +### `select_pod` string pipeline only {#select_pod} + +Returns the name of a Kubernetes pod + + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/container.mdx b/docs/pages/configuration/_partials/functions/select_pod/container.mdx new file mode 100755 index 0000000000..7174da9713 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/container.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--container` string pipeline only {#select_pod-container} + +The container to use + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/disable-wait.mdx b/docs/pages/configuration/_partials/functions/select_pod/disable-wait.mdx new file mode 100755 index 0000000000..e0ea00820d --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/disable-wait.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-wait` bool pipeline only {#select_pod-disable-wait} + +If true, will not wait for the container to become ready + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/image-selector.mdx b/docs/pages/configuration/_partials/functions/select_pod/image-selector.mdx new file mode 100755 index 0000000000..6b83664bdf --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/image-selector.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--image-selector` string pipeline only {#select_pod-image-selector} + +The image selector to use to select the container + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/label-selector.mdx b/docs/pages/configuration/_partials/functions/select_pod/label-selector.mdx new file mode 100755 index 0000000000..cbc2963ef2 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/label-selector.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--label-selector` string pipeline only {#select_pod-label-selector} + +The label selector to use to select the container + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/namespace.mdx b/docs/pages/configuration/_partials/functions/select_pod/namespace.mdx new file mode 100755 index 0000000000..e6d6fe6299 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--namespace / -n` string pipeline only {#select_pod-namespace} + +The namespace to use + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/select_pod/timeout.mdx b/docs/pages/configuration/_partials/functions/select_pod/timeout.mdx new file mode 100755 index 0000000000..cda020bd7a --- /dev/null +++ b/docs/pages/configuration/_partials/functions/select_pod/timeout.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--timeout` int64 pipeline only {#select_pod-timeout} + +The timeout to wait. Defaults to 5 minutes + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/sleep.mdx b/docs/pages/configuration/_partials/functions/sleep.mdx new file mode 100755 index 0000000000..fb4e2bd79f --- /dev/null +++ b/docs/pages/configuration/_partials/functions/sleep.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `sleep` [seconds] pipeline only {#sleep} + +Pauses the script execution for the number of seconds provided as argument + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev.mdx b/docs/pages/configuration/_partials/functions/start_dev.mdx new file mode 100755 index 0000000000..75dd8c13d9 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev.mdx @@ -0,0 +1,34 @@ + +import PartialContinueonterminalexit from "./start_dev/continue-on-terminal-exit.mdx" +import PartialDisablesync from "./start_dev/disable-sync.mdx" +import PartialDisableportforwarding from "./start_dev/disable-port-forwarding.mdx" +import PartialDisablepodreplace from "./start_dev/disable-pod-replace.mdx" +import PartialDisableopen from "./start_dev/disable-open.mdx" +import PartialSet from "./start_dev/set.mdx" +import PartialSetstring from "./start_dev/set-string.mdx" +import PartialFrom from "./start_dev/from.mdx" +import PartialFromfile from "./start_dev/from-file.mdx" +import PartialAll from "./start_dev/all.mdx" + +
+ + +### `start_dev` [dev-1] [dev-2] ... pipeline only {#start_dev} + +Starts all dev modes passed as arguments + + + + + + + + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/all.mdx b/docs/pages/configuration/_partials/functions/start_dev/all.mdx new file mode 100755 index 0000000000..698a658997 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#start_dev-all} + +Start all dev configurations + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/continue-on-terminal-exit.mdx b/docs/pages/configuration/_partials/functions/start_dev/continue-on-terminal-exit.mdx new file mode 100755 index 0000000000..c7fea07e0e --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/continue-on-terminal-exit.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--continue-on-terminal-exit` bool pipeline only {#start_dev-continue-on-terminal-exit} + +Continue on terminal exit + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/disable-open.mdx b/docs/pages/configuration/_partials/functions/start_dev/disable-open.mdx new file mode 100755 index 0000000000..0f6474da8f --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/disable-open.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-open` bool pipeline only {#start_dev-disable-open} + +If enabled will not replace any pods + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/disable-pod-replace.mdx b/docs/pages/configuration/_partials/functions/start_dev/disable-pod-replace.mdx new file mode 100755 index 0000000000..b7281ff135 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/disable-pod-replace.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-pod-replace` bool pipeline only {#start_dev-disable-pod-replace} + +If enabled will not replace any pods + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/disable-port-forwarding.mdx b/docs/pages/configuration/_partials/functions/start_dev/disable-port-forwarding.mdx new file mode 100755 index 0000000000..93c878047e --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/disable-port-forwarding.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-port-forwarding` bool pipeline only {#start_dev-disable-port-forwarding} + +If enabled will not start any port forwarding configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/disable-sync.mdx b/docs/pages/configuration/_partials/functions/start_dev/disable-sync.mdx new file mode 100755 index 0000000000..b676d95f42 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/disable-sync.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--disable-sync` bool pipeline only {#start_dev-disable-sync} + +If enabled will not start any sync configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/from-file.mdx b/docs/pages/configuration/_partials/functions/start_dev/from-file.mdx new file mode 100755 index 0000000000..6b0abc0a93 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/from-file.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from-file` []string pipeline only {#start_dev-from-file} + +Reuse an existing configuration from a file + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/from.mdx b/docs/pages/configuration/_partials/functions/start_dev/from.mdx new file mode 100755 index 0000000000..fb11a373f5 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/from.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--from` []string pipeline only {#start_dev-from} + +Reuse an existing configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/set-string.mdx b/docs/pages/configuration/_partials/functions/start_dev/set-string.mdx new file mode 100755 index 0000000000..f5cfdce7b5 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/set-string.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set-string` []string pipeline only {#start_dev-set-string} + +Set configuration as string + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/start_dev/set.mdx b/docs/pages/configuration/_partials/functions/start_dev/set.mdx new file mode 100755 index 0000000000..2d2ea9cc0b --- /dev/null +++ b/docs/pages/configuration/_partials/functions/start_dev/set.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--set` []string pipeline only {#start_dev-set} + +Set configuration + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/stop_dev.mdx b/docs/pages/configuration/_partials/functions/stop_dev.mdx new file mode 100755 index 0000000000..b4c529443d --- /dev/null +++ b/docs/pages/configuration/_partials/functions/stop_dev.mdx @@ -0,0 +1,18 @@ + +import PartialForcepurge from "./stop_dev/force-purge.mdx" +import PartialAll from "./stop_dev/all.mdx" + +
+ + +### `stop_dev` [dev-1] [dev-2] ... pipeline only {#stop_dev} + +Stops all dev modes passed as arguments + + + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/stop_dev/all.mdx b/docs/pages/configuration/_partials/functions/stop_dev/all.mdx new file mode 100755 index 0000000000..2acb7d6c20 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/stop_dev/all.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--all` bool pipeline only {#stop_dev-all} + +Stop all dev configurations + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/stop_dev/force-purge.mdx b/docs/pages/configuration/_partials/functions/stop_dev/force-purge.mdx new file mode 100755 index 0000000000..2a895b8624 --- /dev/null +++ b/docs/pages/configuration/_partials/functions/stop_dev/force-purge.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `--force-purge` bool pipeline only {#stop_dev-force-purge} + +Forces purging of deployments even though they might be still in use by other DevSpace projects + + + + + +
diff --git a/docs/pages/configuration/_partials/functions/xargs.mdx b/docs/pages/configuration/_partials/functions/xargs.mdx new file mode 100755 index 0000000000..2ff2f6c77d --- /dev/null +++ b/docs/pages/configuration/_partials/functions/xargs.mdx @@ -0,0 +1,14 @@ + + +
+ + +### `xargs` [command] pipeline only {#xargs} + +Reads from stdin, splits input by blanks and executes the command provided as argument for each blank-separated input value (often used in pipes, e.g. `echo 'image-1 image-2' | xargs build_images`) + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands.mdx b/docs/pages/configuration/_partials/v2beta1/commands.mdx new file mode 100755 index 0000000000..159b8c88e6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands.mdx @@ -0,0 +1,31 @@ + +import PartialCommandsreference from "./commands_reference.mdx" + + +
+ + +## `commands` required <command_name>:object {#commands} + +Commands are custom commands that can be executed via 'devspace run COMMAND'. These commands are run within a pseudo bash +that also allows executing special commands such as run_watch or is_equal. + + + + +
+ + +## `` required string {#commands-name} + +Name is the name of a command that is used via `devspace run NAME` + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/after.mdx b/docs/pages/configuration/_partials/v2beta1/commands/after.mdx new file mode 100755 index 0000000000..e1c816fd59 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/after.mdx @@ -0,0 +1,16 @@ + +
+ + +### `after` required string {#commands-after} + +After is executed after the command was run. It is executed also when +the command was interrupted which will set the env variable COMMAND_INTERRUPT +to true as well as when the command errored which will set the error string to +COMMAND_ERROR. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/appendArgs.mdx b/docs/pages/configuration/_partials/v2beta1/commands/appendArgs.mdx new file mode 100755 index 0000000000..48658bc131 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/appendArgs.mdx @@ -0,0 +1,14 @@ + +
+ + +### `appendArgs` required boolean false {#commands-appendArgs} + +AppendArgs will append arguments passed to the DevSpace command automatically to +the specified command. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/args.mdx b/docs/pages/configuration/_partials/v2beta1/commands/args.mdx new file mode 100755 index 0000000000..f97bd07167 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/args.mdx @@ -0,0 +1,14 @@ + +
+ + +### `args` required string[] {#commands-args} + +Args are optional and if defined, command is not executed within a shell +and rather directly. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/command.mdx b/docs/pages/configuration/_partials/v2beta1/commands/command.mdx new file mode 100755 index 0000000000..fabc4914a3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/command.mdx @@ -0,0 +1,13 @@ + +
+ + +### `command` required string {#commands-command} + +Command is the command that should be executed. For example: 'echo 123' + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/description.mdx b/docs/pages/configuration/_partials/v2beta1/commands/description.mdx new file mode 100755 index 0000000000..04a73ca324 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/description.mdx @@ -0,0 +1,13 @@ + +
+ + +### `description` required string {#commands-description} + +Description describes what the command is doing and can be seen in `devspace list commands` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/internal.mdx b/docs/pages/configuration/_partials/v2beta1/commands/internal.mdx new file mode 100755 index 0000000000..81de5f1c8c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/internal.mdx @@ -0,0 +1,13 @@ + +
+ + +### `internal` required boolean false {#commands-internal} + +Internal commands are not show in list and are usable through run_command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands/section.mdx b/docs/pages/configuration/_partials/v2beta1/commands/section.mdx new file mode 100755 index 0000000000..e22c8c0d24 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands/section.mdx @@ -0,0 +1,13 @@ + +
+ + +### `section` required string {#commands-section} + +Section can be used to group similar commands together in `devspace list commands` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/commands_reference.mdx b/docs/pages/configuration/_partials/v2beta1/commands_reference.mdx new file mode 100755 index 0000000000..d0ca2cd0e2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/commands_reference.mdx @@ -0,0 +1,28 @@ + +import PartialSection from "./commands/section.mdx" +import PartialCommand from "./commands/command.mdx" +import PartialArgs from "./commands/args.mdx" +import PartialAppendArgs from "./commands/appendArgs.mdx" +import PartialDescription from "./commands/description.mdx" +import PartialInternal from "./commands/internal.mdx" +import PartialAfter from "./commands/after.mdx" + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies.mdx new file mode 100755 index 0000000000..a86ebf9508 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies.mdx @@ -0,0 +1,34 @@ + +import PartialDependenciesreference from "./dependencies_reference.mdx" + + +
+ + +## `dependencies` required <dependency_name>:object {#dependencies} + +Dependencies are sub devspace projects that lie in a local folder or remote git repository that can be executed +from within the pipeline. In contrast to imports, these projects pose as separate fully functional DevSpace projects +that typically lie including source code in a different folder and can be used to compose a full microservice +application that will be deployed by DevSpace. Each dependency name can only be used once and if you want to use +the same project multiple times, make sure to use a different name for each of those instances. + + + + +
+ + +## `` required string {#dependencies-name} + +Name is used internally + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/branch.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/branch.mdx new file mode 100755 index 0000000000..083a55cc42 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/branch.mdx @@ -0,0 +1,13 @@ + +
+ + +### `branch` required string {#dependencies-branch} + +Branch is the git branch to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/cloneArgs.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/cloneArgs.mdx new file mode 100755 index 0000000000..9130ab776d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/cloneArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +### `cloneArgs` required string[] {#dependencies-cloneArgs} + +CloneArgs are additional arguments that should be supplied to the git CLI + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/disablePull.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/disablePull.mdx new file mode 100755 index 0000000000..fe90d41fe3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/disablePull.mdx @@ -0,0 +1,13 @@ + +
+ + +### `disablePull` required boolean false {#dependencies-disablePull} + +DisablePull will disable pulling every time DevSpace is reevaluating this source + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/disableShallow.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/disableShallow.mdx new file mode 100755 index 0000000000..5f9902a9c2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/disableShallow.mdx @@ -0,0 +1,14 @@ + +
+ + +### `disableShallow` required boolean false {#dependencies-disableShallow} + +DisableShallow can be used to turn off shallow clones as these are the default used +by devspace + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/git.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/git.mdx new file mode 100755 index 0000000000..43bdd15846 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/git.mdx @@ -0,0 +1,15 @@ + +
+ + +### `git` required string {#dependencies-git} + +Git is the remote repository to download the artifact from. You can either use +https projects or ssh projects here, but need to make sure git can pull the project. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/group_execution.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/group_execution.mdx new file mode 100755 index 0000000000..d1a8bdd918 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/group_execution.mdx @@ -0,0 +1,17 @@ + +import PartialPipeline from "./pipeline.mdx" +import PartialVars from "./vars.mdx" +import PartialOverwriteVars from "./overwriteVars.mdx" +import PartialIgnoreDependencies from "./ignoreDependencies.mdx" +import PartialNamespace from "./namespace.mdx" + +
+
Execution
+ + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/group_git.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/group_git.mdx new file mode 100755 index 0000000000..0029b76e3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/group_git.mdx @@ -0,0 +1,23 @@ + +import PartialGit from "./git.mdx" +import PartialSubPath from "./subPath.mdx" +import PartialBranch from "./branch.mdx" +import PartialTag from "./tag.mdx" +import PartialRevision from "./revision.mdx" +import PartialCloneArgs from "./cloneArgs.mdx" +import PartialDisableShallow from "./disableShallow.mdx" +import PartialDisablePull from "./disablePull.mdx" + +
+
Source: Git Repository
+ + + + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/group_path.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/group_path.mdx new file mode 100755 index 0000000000..beea804e5f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/group_path.mdx @@ -0,0 +1,9 @@ + +import PartialPath from "./path.mdx" + +
+
Source: Local Filesystem
+ + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/ignoreDependencies.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/ignoreDependencies.mdx new file mode 100755 index 0000000000..7f1044053e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/ignoreDependencies.mdx @@ -0,0 +1,13 @@ + +
+ + +### `ignoreDependencies` required boolean false {#dependencies-ignoreDependencies} + +IgnoreDependencies defines if dependencies of the dependency should be excluded + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/namespace.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/namespace.mdx new file mode 100755 index 0000000000..70565fa7e6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +### `namespace` required string {#dependencies-namespace} + +Namespace specifies the namespace this dependency should be deployed to + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/overwriteVars.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/overwriteVars.mdx new file mode 100755 index 0000000000..58660b5edb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/overwriteVars.mdx @@ -0,0 +1,13 @@ + +
+ + +### `overwriteVars` required boolean false {#dependencies-overwriteVars} + +OverwriteVars specifies if DevSpace should pass the parent variables to the dependency + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/path.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/path.mdx new file mode 100755 index 0000000000..dacb44eac7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/path.mdx @@ -0,0 +1,14 @@ + +
+ + +### `path` required string {#dependencies-path} + +Path is the local path where DevSpace can find the artifact. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/pipeline.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/pipeline.mdx new file mode 100755 index 0000000000..bfd1c9e1be --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/pipeline.mdx @@ -0,0 +1,13 @@ + +
+ + +### `pipeline` required string deploy {#dependencies-pipeline} + +Pipeline is the pipeline to deploy by default. Defaults to 'deploy' + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/revision.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/revision.mdx new file mode 100755 index 0000000000..cad5706aab --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/revision.mdx @@ -0,0 +1,13 @@ + +
+ + +### `revision` required string {#dependencies-revision} + +Revision is the git revision to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/subPath.mdx new file mode 100755 index 0000000000..5a7c43895b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/subPath.mdx @@ -0,0 +1,13 @@ + +
+ + +### `subPath` required string {#dependencies-subPath} + +SubPath is a path within the git repository where the artifact lies in + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/tag.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/tag.mdx new file mode 100755 index 0000000000..a0377f507b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/tag.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tag` required string {#dependencies-tag} + +Tag is the tag to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies/vars.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies/vars.mdx new file mode 100755 index 0000000000..3914e5c812 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies/vars.mdx @@ -0,0 +1,13 @@ + +
+ + +### `vars` required <var_name>:string {#dependencies-vars} + +Vars are variables that should be passed to the dependency + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dependencies_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dependencies_reference.mdx new file mode 100755 index 0000000000..46cd422d46 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dependencies_reference.mdx @@ -0,0 +1,12 @@ + +import PartialGrouppath from "./dependencies/group_path.mdx" +import PartialGroupgit from "./dependencies/group_git.mdx" +import PartialGroupexecution from "./dependencies/group_execution.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments.mdx b/docs/pages/configuration/_partials/v2beta1/deployments.mdx new file mode 100755 index 0000000000..06aafb881f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments.mdx @@ -0,0 +1,32 @@ + +import PartialDeploymentsreference from "./deployments_reference.mdx" + + +
+ + +## `deployments` required <deployment_name>:object {#deployments} + +Deployments holds configuration of how DevSpace should deploy resources to Kubernetes. By default, DevSpace will deploy all defined deployments. +If you are using a custom pipeline, you can dynamically define which deployment is deployed at which time during the +execution. + + + + +
+ + +## `` required string {#deployments-name} + +Name of the deployment + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm.mdx new file mode 100755 index 0000000000..79d9b57401 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm.mdx @@ -0,0 +1,17 @@ + +import PartialHelmreference from "./helm_reference.mdx" + + +
+ + +### `helm` required {#deployments-helm} + +Helm tells DevSpace to deploy this deployment via helm + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart.mdx new file mode 100755 index 0000000000..8066856ac7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart.mdx @@ -0,0 +1,17 @@ + +import PartialChartreference from "./chart_reference.mdx" + + +
+ + +#### `chart` required {#deployments-helm-chart} + +Chart holds the chart configuration and where DevSpace can find the chart + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/branch.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/branch.mdx new file mode 100755 index 0000000000..2ce25f42d4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/branch.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `branch` required string {#deployments-helm-chart-branch} + +Branch is the git branch to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/cloneArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/cloneArgs.mdx new file mode 100755 index 0000000000..9866271a0b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/cloneArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `cloneArgs` required string[] {#deployments-helm-chart-cloneArgs} + +CloneArgs are additional arguments that should be supplied to the git CLI + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disablePull.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disablePull.mdx new file mode 100755 index 0000000000..24a6b7f9f9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disablePull.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `disablePull` required boolean false {#deployments-helm-chart-disablePull} + +DisablePull will disable pulling every time DevSpace is reevaluating this source + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disableShallow.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disableShallow.mdx new file mode 100755 index 0000000000..9c90ae3ba7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/disableShallow.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `disableShallow` required boolean false {#deployments-helm-chart-disableShallow} + +DisableShallow can be used to turn off shallow clones as these are the default used +by devspace + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/git.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/git.mdx new file mode 100755 index 0000000000..29d293d90a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/git.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `git` required string {#deployments-helm-chart-git} + +Git is the remote repository to download the artifact from. You can either use +https projects or ssh projects here, but need to make sure git can pull the project. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_git.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_git.mdx new file mode 100755 index 0000000000..0029b76e3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_git.mdx @@ -0,0 +1,23 @@ + +import PartialGit from "./git.mdx" +import PartialSubPath from "./subPath.mdx" +import PartialBranch from "./branch.mdx" +import PartialTag from "./tag.mdx" +import PartialRevision from "./revision.mdx" +import PartialCloneArgs from "./cloneArgs.mdx" +import PartialDisableShallow from "./disableShallow.mdx" +import PartialDisablePull from "./disablePull.mdx" + +
+
Source: Git Repository
+ + + + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_path.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_path.mdx new file mode 100755 index 0000000000..beea804e5f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_path.mdx @@ -0,0 +1,9 @@ + +import PartialPath from "./path.mdx" + +
+
Source: Local Filesystem
+ + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_repo.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_repo.mdx new file mode 100755 index 0000000000..b42b43c1e5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/group_repo.mdx @@ -0,0 +1,17 @@ + +import PartialName from "./name.mdx" +import PartialVersion from "./version.mdx" +import PartialRepo from "./repo.mdx" +import PartialUsername from "./username.mdx" +import PartialPassword from "./password.mdx" + +
+
Source: Helm Repository
+ + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/name.mdx new file mode 100755 index 0000000000..ea51ddf244 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/name.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `name` required string {#deployments-helm-chart-name} + +Name is the name of the helm chart to deploy. Can also be a local path + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/password.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/password.mdx new file mode 100755 index 0000000000..5ce4af440a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/password.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `password` required string {#deployments-helm-chart-password} + +Password is the password to authenticate to the chart repo + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/path.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/path.mdx new file mode 100755 index 0000000000..331c81a404 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/path.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `path` required string {#deployments-helm-chart-path} + +Path is the local path where DevSpace can find the artifact. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/repo.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/repo.mdx new file mode 100755 index 0000000000..ad5e188470 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/repo.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `repo` required string {#deployments-helm-chart-repo} + +RepoURL is the url of the repo to deploy the chart from + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/revision.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/revision.mdx new file mode 100755 index 0000000000..e3280501ae --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/revision.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `revision` required string {#deployments-helm-chart-revision} + +Revision is the git revision to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/subPath.mdx new file mode 100755 index 0000000000..c3f04bd21d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/subPath.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `subPath` required string {#deployments-helm-chart-subPath} + +SubPath is a path within the git repository where the artifact lies in + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/tag.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/tag.mdx new file mode 100755 index 0000000000..7f6aa8a888 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/tag.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `tag` required string {#deployments-helm-chart-tag} + +Tag is the tag to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/username.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/username.mdx new file mode 100755 index 0000000000..6af258eeae --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/username.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `username` required string {#deployments-helm-chart-username} + +Username is the username to authenticate to the chart repo + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/version.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/version.mdx new file mode 100755 index 0000000000..1fabd76281 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart/version.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `version` required string {#deployments-helm-chart-version} + +Version is the version of the helm chart to deploy + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart_reference.mdx new file mode 100755 index 0000000000..4840e94f78 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/chart_reference.mdx @@ -0,0 +1,12 @@ + +import PartialGrouprepo from "./chart/group_repo.mdx" +import PartialGrouppath from "./chart/group_path.mdx" +import PartialGroupgit from "./chart/group_git.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/activeDeadlineSeconds.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/activeDeadlineSeconds.mdx new file mode 100755 index 0000000000..ee9373051e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/activeDeadlineSeconds.mdx @@ -0,0 +1,13 @@ + +
+ + +## `activeDeadlineSeconds` required integer {#activeDeadlineSeconds} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/affinity.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/affinity.mdx new file mode 100755 index 0000000000..021b97c93d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/affinity.mdx @@ -0,0 +1,13 @@ + +
+ + +## `affinity` required object {#affinity} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/annotations.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/annotations.mdx new file mode 100755 index 0000000000..9335724f74 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/annotations.mdx @@ -0,0 +1,13 @@ + +
+ + +## `annotations` required <annotation_name>:string {#annotations} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling.mdx new file mode 100755 index 0000000000..222d5acc1e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling.mdx @@ -0,0 +1,17 @@ + +import PartialAutoScalingreference from "./autoScaling_reference.mdx" + + +
+ + +## `autoScaling` required {#autoScaling} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal.mdx new file mode 100755 index 0000000000..b95b6c216c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal.mdx @@ -0,0 +1,17 @@ + +import PartialHorizontalreference from "./horizontal_reference.mdx" + + +
+ + +### `horizontal` required {#autoScaling-horizontal} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageCPU.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageCPU.mdx new file mode 100755 index 0000000000..ea47b65096 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageCPU.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `averageCPU` required string {#autoScaling-horizontal-averageCPU} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageMemory.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageMemory.mdx new file mode 100755 index 0000000000..53ef0604ad --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageMemory.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `averageMemory` required string {#autoScaling-horizontal-averageMemory} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeCPU.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeCPU.mdx new file mode 100755 index 0000000000..d85a4c23c9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeCPU.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `averageRelativeCPU` required string {#autoScaling-horizontal-averageRelativeCPU} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeMemory.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeMemory.mdx new file mode 100755 index 0000000000..3c0786b557 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/averageRelativeMemory.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `averageRelativeMemory` required string {#autoScaling-horizontal-averageRelativeMemory} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/maxReplicas.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/maxReplicas.mdx new file mode 100755 index 0000000000..92938dd0ad --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal/maxReplicas.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `maxReplicas` required integer {#autoScaling-horizontal-maxReplicas} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal_reference.mdx new file mode 100755 index 0000000000..e58b26b23a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling/horizontal_reference.mdx @@ -0,0 +1,20 @@ + +import PartialMaxReplicas from "./horizontal/maxReplicas.mdx" +import PartialAverageCPU from "./horizontal/averageCPU.mdx" +import PartialAverageRelativeCPU from "./horizontal/averageRelativeCPU.mdx" +import PartialAverageMemory from "./horizontal/averageMemory.mdx" +import PartialAverageRelativeMemory from "./horizontal/averageRelativeMemory.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling_reference.mdx new file mode 100755 index 0000000000..014e8a568b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/autoScaling_reference.mdx @@ -0,0 +1,17 @@ + +import PartialHorizontalreference from "./autoScaling/horizontal_reference.mdx" + + +
+ + +### `horizontal` required {#autoScaling-horizontal} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/automountServiceAccountToken.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/automountServiceAccountToken.mdx new file mode 100755 index 0000000000..7ec1d45fd6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/automountServiceAccountToken.mdx @@ -0,0 +1,13 @@ + +
+ + +## `automountServiceAccountToken` required boolean false {#automountServiceAccountToken} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers.mdx new file mode 100755 index 0000000000..cb806dfb61 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers.mdx @@ -0,0 +1,17 @@ + +import PartialContainersreference from "./containers_reference.mdx" + + +
+ + +## `containers` required object[] {#containers} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/args.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/args.mdx new file mode 100755 index 0000000000..625f7c4cb4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/args.mdx @@ -0,0 +1,13 @@ + +
+ + +### `args` required string[] {#containers-args} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/command.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/command.mdx new file mode 100755 index 0000000000..c4b22b19f9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/command.mdx @@ -0,0 +1,13 @@ + +
+ + +### `command` required string[] {#containers-command} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/env.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/env.mdx new file mode 100755 index 0000000000..4c3815c2fc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/env.mdx @@ -0,0 +1,13 @@ + +
+ + +### `env` required object[] {#containers-env} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/envFrom.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/envFrom.mdx new file mode 100755 index 0000000000..7f151c9dfa --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/envFrom.mdx @@ -0,0 +1,13 @@ + +
+ + +### `envFrom` required object[] {#containers-envFrom} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/image.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/image.mdx new file mode 100755 index 0000000000..ccceeca20e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/image.mdx @@ -0,0 +1,13 @@ + +
+ + +### `image` required string {#containers-image} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/imagePullPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/imagePullPolicy.mdx new file mode 100755 index 0000000000..c47ea54f61 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/imagePullPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +### `imagePullPolicy` required string {#containers-imagePullPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/lifecycle.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/lifecycle.mdx new file mode 100755 index 0000000000..bebcf5587e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/lifecycle.mdx @@ -0,0 +1,13 @@ + +
+ + +### `lifecycle` required object {#containers-lifecycle} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/livenessProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/livenessProbe.mdx new file mode 100755 index 0000000000..538798a75d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/livenessProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `livenessProbe` required object {#containers-livenessProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/name.mdx new file mode 100755 index 0000000000..e852d7c3a7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/name.mdx @@ -0,0 +1,13 @@ + +
+ + +### `name` required string {#containers-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/readinessProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/readinessProbe.mdx new file mode 100755 index 0000000000..ef3e5b53b8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/readinessProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `readinessProbe` required object {#containers-readinessProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/resources.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/resources.mdx new file mode 100755 index 0000000000..ae61ac40d1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/resources.mdx @@ -0,0 +1,13 @@ + +
+ + +### `resources` required object {#containers-resources} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/securityContext.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/securityContext.mdx new file mode 100755 index 0000000000..b190663934 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/securityContext.mdx @@ -0,0 +1,13 @@ + +
+ + +### `securityContext` required object {#containers-securityContext} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/startupProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/startupProbe.mdx new file mode 100755 index 0000000000..f2a3801c83 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/startupProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `startupProbe` required object {#containers-startupProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdin.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdin.mdx new file mode 100755 index 0000000000..5f075af157 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdin.mdx @@ -0,0 +1,13 @@ + +
+ + +### `stdin` required boolean false {#containers-stdin} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdinOnce.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdinOnce.mdx new file mode 100755 index 0000000000..5fd7f669c5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/stdinOnce.mdx @@ -0,0 +1,13 @@ + +
+ + +### `stdinOnce` required boolean false {#containers-stdinOnce} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePath.mdx new file mode 100755 index 0000000000..2275ffde90 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePath.mdx @@ -0,0 +1,13 @@ + +
+ + +### `terminationMessagePath` required string {#containers-terminationMessagePath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePolicy.mdx new file mode 100755 index 0000000000..edd71814c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/terminationMessagePolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +### `terminationMessagePolicy` required string {#containers-terminationMessagePolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/tty.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/tty.mdx new file mode 100755 index 0000000000..8c715d333e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/tty.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tty` required boolean false {#containers-tty} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeDevices.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeDevices.mdx new file mode 100755 index 0000000000..86d4fd7b6c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeDevices.mdx @@ -0,0 +1,13 @@ + +
+ + +### `volumeDevices` required object[] {#containers-volumeDevices} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts.mdx new file mode 100755 index 0000000000..a30e10495a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts.mdx @@ -0,0 +1,17 @@ + +import PartialVolumeMountsreference from "./volumeMounts_reference.mdx" + + +
+ + +### `volumeMounts` required object[] {#containers-volumeMounts} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/containerPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/containerPath.mdx new file mode 100755 index 0000000000..fdeff55989 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/containerPath.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `containerPath` required string {#containers-volumeMounts-containerPath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume.mdx new file mode 100755 index 0000000000..618bbe9b1f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume.mdx @@ -0,0 +1,17 @@ + +import PartialVolumereference from "./volume_reference.mdx" + + +
+ + +#### `volume` required {#containers-volumeMounts-volume} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/name.mdx new file mode 100755 index 0000000000..19388c2b43 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/name.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `name` required string {#containers-volumeMounts-volume-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/readOnly.mdx new file mode 100755 index 0000000000..db935cfe34 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/readOnly.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `readOnly` required boolean false {#containers-volumeMounts-volume-readOnly} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/shared.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/shared.mdx new file mode 100755 index 0000000000..b3663da944 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/shared.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `shared` required boolean false {#containers-volumeMounts-volume-shared} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/subPath.mdx new file mode 100755 index 0000000000..7f43cf2710 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume/subPath.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `subPath` required string {#containers-volumeMounts-volume-subPath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume_reference.mdx new file mode 100755 index 0000000000..3f51525809 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts/volume_reference.mdx @@ -0,0 +1,16 @@ + +import PartialName from "./volume/name.mdx" +import PartialSubPath from "./volume/subPath.mdx" +import PartialReadOnly from "./volume/readOnly.mdx" +import PartialShared from "./volume/shared.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts_reference.mdx new file mode 100755 index 0000000000..0db49632b8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/volumeMounts_reference.mdx @@ -0,0 +1,21 @@ + +import PartialContainerPath from "./volumeMounts/containerPath.mdx" +import PartialVolumereference from "./volumeMounts/volume_reference.mdx" + + + + + +
+ + +#### `volume` required {#containers-volumeMounts-volume} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/workingDir.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/workingDir.mdx new file mode 100755 index 0000000000..f76b5ff21c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers/workingDir.mdx @@ -0,0 +1,13 @@ + +
+ + +### `workingDir` required string {#containers-workingDir} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers_reference.mdx new file mode 100755 index 0000000000..1e8f25fe08 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/containers_reference.mdx @@ -0,0 +1,97 @@ + +import PartialName from "./containers/name.mdx" +import PartialImage from "./containers/image.mdx" +import PartialCommand from "./containers/command.mdx" +import PartialArgs from "./containers/args.mdx" +import PartialStdin from "./containers/stdin.mdx" +import PartialTty from "./containers/tty.mdx" +import PartialEnv from "./containers/env.mdx" +import PartialEnvFrom from "./containers/envFrom.mdx" +import PartialVolumeMountsreference from "./containers/volumeMounts_reference.mdx" +import PartialResources from "./containers/resources.mdx" +import PartialLivenessProbe from "./containers/livenessProbe.mdx" +import PartialReadinessProbe from "./containers/readinessProbe.mdx" +import PartialStartupProbe from "./containers/startupProbe.mdx" +import PartialSecurityContext from "./containers/securityContext.mdx" +import PartialLifecycle from "./containers/lifecycle.mdx" +import PartialVolumeDevices from "./containers/volumeDevices.mdx" +import PartialImagePullPolicy from "./containers/imagePullPolicy.mdx" +import PartialWorkingDir from "./containers/workingDir.mdx" +import PartialStdinOnce from "./containers/stdinOnce.mdx" +import PartialTerminationMessagePath from "./containers/terminationMessagePath.mdx" +import PartialTerminationMessagePolicy from "./containers/terminationMessagePolicy.mdx" + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +### `volumeMounts` required object[] {#containers-volumeMounts} + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsConfig.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsConfig.mdx new file mode 100755 index 0000000000..34bfb5cfc3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsConfig.mdx @@ -0,0 +1,13 @@ + +
+ + +## `dnsConfig` required object {#dnsConfig} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsPolicy.mdx new file mode 100755 index 0000000000..1e9ad8ae0d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/dnsPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +## `dnsPolicy` required string {#dnsPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/enableServiceLinks.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/enableServiceLinks.mdx new file mode 100755 index 0000000000..d7fce4fc55 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/enableServiceLinks.mdx @@ -0,0 +1,13 @@ + +
+ + +## `enableServiceLinks` required boolean false {#enableServiceLinks} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ephemeralContainers.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ephemeralContainers.mdx new file mode 100755 index 0000000000..29a169a798 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ephemeralContainers.mdx @@ -0,0 +1,13 @@ + +
+ + +## `ephemeralContainers` required object[] {#ephemeralContainers} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostAliases.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostAliases.mdx new file mode 100755 index 0000000000..bf9be9bafe --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostAliases.mdx @@ -0,0 +1,13 @@ + +
+ + +## `hostAliases` required object[] {#hostAliases} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostIPC.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostIPC.mdx new file mode 100755 index 0000000000..6bd3c9a974 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostIPC.mdx @@ -0,0 +1,13 @@ + +
+ + +## `hostIPC` required boolean false {#hostIPC} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostNetwork.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostNetwork.mdx new file mode 100755 index 0000000000..fbc8f2fe87 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostNetwork.mdx @@ -0,0 +1,13 @@ + +
+ + +## `hostNetwork` required boolean false {#hostNetwork} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostPID.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostPID.mdx new file mode 100755 index 0000000000..05b36726b4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostPID.mdx @@ -0,0 +1,13 @@ + +
+ + +## `hostPID` required boolean false {#hostPID} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostname.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostname.mdx new file mode 100755 index 0000000000..54f7090ba5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/hostname.mdx @@ -0,0 +1,13 @@ + +
+ + +## `hostname` required string {#hostname} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress.mdx new file mode 100755 index 0000000000..cc81d46e73 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress.mdx @@ -0,0 +1,17 @@ + +import PartialIngressreference from "./ingress_reference.mdx" + + +
+ + +## `ingress` required {#ingress} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/annotations.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/annotations.mdx new file mode 100755 index 0000000000..939f8e7446 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/annotations.mdx @@ -0,0 +1,13 @@ + +
+ + +### `annotations` required <annotation_name>:string {#ingress-annotations} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/backend.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/backend.mdx new file mode 100755 index 0000000000..12d44fa7a8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/backend.mdx @@ -0,0 +1,13 @@ + +
+ + +### `backend` required object {#ingress-backend} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClass.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClass.mdx new file mode 100755 index 0000000000..63be82cd78 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClass.mdx @@ -0,0 +1,13 @@ + +
+ + +### `ingressClass` required string {#ingress-ingressClass} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClassName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClassName.mdx new file mode 100755 index 0000000000..81645cb702 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/ingressClassName.mdx @@ -0,0 +1,13 @@ + +
+ + +### `ingressClassName` required string {#ingress-ingressClassName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/labels.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/labels.mdx new file mode 100755 index 0000000000..aa7bfdcc4b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/labels.mdx @@ -0,0 +1,13 @@ + +
+ + +### `labels` required <label_name>:string {#ingress-labels} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/name.mdx new file mode 100755 index 0000000000..dfdc7cc2df --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/name.mdx @@ -0,0 +1,13 @@ + +
+ + +### `name` required string {#ingress-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules.mdx new file mode 100755 index 0000000000..de4b545487 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules.mdx @@ -0,0 +1,17 @@ + +import PartialRulesreference from "./rules_reference.mdx" + + +
+ + +### `rules` required object[] {#ingress-rules} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/host.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/host.mdx new file mode 100755 index 0000000000..823f19cf3f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/host.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `host` required string {#ingress-rules-host} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/path.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/path.mdx new file mode 100755 index 0000000000..5ed9d65ba9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/path.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `path` required string {#ingress-rules-path} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/pathType.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/pathType.mdx new file mode 100755 index 0000000000..cfa7a9b9f8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/pathType.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `pathType` required string {#ingress-rules-pathType} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/serviceName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/serviceName.mdx new file mode 100755 index 0000000000..e87c74d20f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/serviceName.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `serviceName` required string {#ingress-rules-serviceName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/servicePort.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/servicePort.mdx new file mode 100755 index 0000000000..ddd23a6350 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/servicePort.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `servicePort` required integer {#ingress-rules-servicePort} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/tls.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/tls.mdx new file mode 100755 index 0000000000..1f76e9a7bd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules/tls.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `tls` required string {#ingress-rules-tls} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules_reference.mdx new file mode 100755 index 0000000000..fd744d1c77 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/rules_reference.mdx @@ -0,0 +1,24 @@ + +import PartialHost from "./rules/host.mdx" +import PartialTls from "./rules/tls.mdx" +import PartialPath from "./rules/path.mdx" +import PartialServicePort from "./rules/servicePort.mdx" +import PartialServiceName from "./rules/serviceName.mdx" +import PartialPathType from "./rules/pathType.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tls.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tls.mdx new file mode 100755 index 0000000000..70dba7b468 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tls.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tls` required string {#ingress-tls} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tlsClusterIssuer.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tlsClusterIssuer.mdx new file mode 100755 index 0000000000..16e018e51f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress/tlsClusterIssuer.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tlsClusterIssuer` required string {#ingress-tlsClusterIssuer} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress_reference.mdx new file mode 100755 index 0000000000..b1061d2c6d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/ingress_reference.mdx @@ -0,0 +1,49 @@ + +import PartialName from "./ingress/name.mdx" +import PartialLabels from "./ingress/labels.mdx" +import PartialAnnotations from "./ingress/annotations.mdx" +import PartialTls from "./ingress/tls.mdx" +import PartialTlsClusterIssuer from "./ingress/tlsClusterIssuer.mdx" +import PartialIngressClass from "./ingress/ingressClass.mdx" +import PartialRulesreference from "./ingress/rules_reference.mdx" +import PartialBackend from "./ingress/backend.mdx" +import PartialIngressClassName from "./ingress/ingressClassName.mdx" + + + + + + + + + + + + + + + + + + + + +
+ + +### `rules` required object[] {#ingress-rules} + + + + + + + + +
+ + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers.mdx new file mode 100755 index 0000000000..7c82d3f1c9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers.mdx @@ -0,0 +1,17 @@ + +import PartialInitContainersreference from "./initContainers_reference.mdx" + + +
+ + +## `initContainers` required object[] {#initContainers} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/args.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/args.mdx new file mode 100755 index 0000000000..a2c0b5efb2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/args.mdx @@ -0,0 +1,13 @@ + +
+ + +### `args` required string[] {#initContainers-args} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/command.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/command.mdx new file mode 100755 index 0000000000..0a3d4f3fff --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/command.mdx @@ -0,0 +1,13 @@ + +
+ + +### `command` required string[] {#initContainers-command} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/env.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/env.mdx new file mode 100755 index 0000000000..d6671db62a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/env.mdx @@ -0,0 +1,13 @@ + +
+ + +### `env` required object[] {#initContainers-env} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/envFrom.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/envFrom.mdx new file mode 100755 index 0000000000..8b4f2783cc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/envFrom.mdx @@ -0,0 +1,13 @@ + +
+ + +### `envFrom` required object[] {#initContainers-envFrom} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/image.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/image.mdx new file mode 100755 index 0000000000..c992e04ef9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/image.mdx @@ -0,0 +1,13 @@ + +
+ + +### `image` required string {#initContainers-image} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/imagePullPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/imagePullPolicy.mdx new file mode 100755 index 0000000000..9a625140f2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/imagePullPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +### `imagePullPolicy` required string {#initContainers-imagePullPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/lifecycle.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/lifecycle.mdx new file mode 100755 index 0000000000..c17f5f68ef --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/lifecycle.mdx @@ -0,0 +1,13 @@ + +
+ + +### `lifecycle` required object {#initContainers-lifecycle} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/livenessProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/livenessProbe.mdx new file mode 100755 index 0000000000..3b7cb74e07 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/livenessProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `livenessProbe` required object {#initContainers-livenessProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/name.mdx new file mode 100755 index 0000000000..a33f53d56d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/name.mdx @@ -0,0 +1,13 @@ + +
+ + +### `name` required string {#initContainers-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/readinessProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/readinessProbe.mdx new file mode 100755 index 0000000000..492f9fe0e1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/readinessProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `readinessProbe` required object {#initContainers-readinessProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/resources.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/resources.mdx new file mode 100755 index 0000000000..399cccfb70 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/resources.mdx @@ -0,0 +1,13 @@ + +
+ + +### `resources` required object {#initContainers-resources} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/securityContext.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/securityContext.mdx new file mode 100755 index 0000000000..306d44c6d0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/securityContext.mdx @@ -0,0 +1,13 @@ + +
+ + +### `securityContext` required object {#initContainers-securityContext} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/startupProbe.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/startupProbe.mdx new file mode 100755 index 0000000000..8fed896a82 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/startupProbe.mdx @@ -0,0 +1,13 @@ + +
+ + +### `startupProbe` required object {#initContainers-startupProbe} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdin.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdin.mdx new file mode 100755 index 0000000000..8d01deb803 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdin.mdx @@ -0,0 +1,13 @@ + +
+ + +### `stdin` required boolean false {#initContainers-stdin} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdinOnce.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdinOnce.mdx new file mode 100755 index 0000000000..0bfc88d71b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/stdinOnce.mdx @@ -0,0 +1,13 @@ + +
+ + +### `stdinOnce` required boolean false {#initContainers-stdinOnce} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePath.mdx new file mode 100755 index 0000000000..eb7fade000 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePath.mdx @@ -0,0 +1,13 @@ + +
+ + +### `terminationMessagePath` required string {#initContainers-terminationMessagePath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePolicy.mdx new file mode 100755 index 0000000000..2300f2675d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/terminationMessagePolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +### `terminationMessagePolicy` required string {#initContainers-terminationMessagePolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/tty.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/tty.mdx new file mode 100755 index 0000000000..276fd25420 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/tty.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tty` required boolean false {#initContainers-tty} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeDevices.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeDevices.mdx new file mode 100755 index 0000000000..bbab896782 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeDevices.mdx @@ -0,0 +1,13 @@ + +
+ + +### `volumeDevices` required object[] {#initContainers-volumeDevices} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts.mdx new file mode 100755 index 0000000000..879236ae2b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts.mdx @@ -0,0 +1,17 @@ + +import PartialVolumeMountsreference from "./volumeMounts_reference.mdx" + + +
+ + +### `volumeMounts` required object[] {#initContainers-volumeMounts} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/containerPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/containerPath.mdx new file mode 100755 index 0000000000..e3c49d0944 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/containerPath.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `containerPath` required string {#initContainers-volumeMounts-containerPath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume.mdx new file mode 100755 index 0000000000..4b6da30f51 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume.mdx @@ -0,0 +1,17 @@ + +import PartialVolumereference from "./volume_reference.mdx" + + +
+ + +#### `volume` required {#initContainers-volumeMounts-volume} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/name.mdx new file mode 100755 index 0000000000..0e70e93a2e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/name.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `name` required string {#initContainers-volumeMounts-volume-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/readOnly.mdx new file mode 100755 index 0000000000..25440d958c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/readOnly.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `readOnly` required boolean false {#initContainers-volumeMounts-volume-readOnly} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/shared.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/shared.mdx new file mode 100755 index 0000000000..45fc450204 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/shared.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `shared` required boolean false {#initContainers-volumeMounts-volume-shared} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/subPath.mdx new file mode 100755 index 0000000000..a7aedab3d9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume/subPath.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `subPath` required string {#initContainers-volumeMounts-volume-subPath} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume_reference.mdx new file mode 100755 index 0000000000..3f51525809 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts/volume_reference.mdx @@ -0,0 +1,16 @@ + +import PartialName from "./volume/name.mdx" +import PartialSubPath from "./volume/subPath.mdx" +import PartialReadOnly from "./volume/readOnly.mdx" +import PartialShared from "./volume/shared.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts_reference.mdx new file mode 100755 index 0000000000..62ad87f63a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/volumeMounts_reference.mdx @@ -0,0 +1,21 @@ + +import PartialContainerPath from "./volumeMounts/containerPath.mdx" +import PartialVolumereference from "./volumeMounts/volume_reference.mdx" + + + + + +
+ + +#### `volume` required {#initContainers-volumeMounts-volume} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/workingDir.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/workingDir.mdx new file mode 100755 index 0000000000..793d42c69c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers/workingDir.mdx @@ -0,0 +1,13 @@ + +
+ + +### `workingDir` required string {#initContainers-workingDir} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers_reference.mdx new file mode 100755 index 0000000000..8614b73663 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/initContainers_reference.mdx @@ -0,0 +1,97 @@ + +import PartialName from "./initContainers/name.mdx" +import PartialImage from "./initContainers/image.mdx" +import PartialCommand from "./initContainers/command.mdx" +import PartialArgs from "./initContainers/args.mdx" +import PartialStdin from "./initContainers/stdin.mdx" +import PartialTty from "./initContainers/tty.mdx" +import PartialEnv from "./initContainers/env.mdx" +import PartialEnvFrom from "./initContainers/envFrom.mdx" +import PartialVolumeMountsreference from "./initContainers/volumeMounts_reference.mdx" +import PartialResources from "./initContainers/resources.mdx" +import PartialLivenessProbe from "./initContainers/livenessProbe.mdx" +import PartialReadinessProbe from "./initContainers/readinessProbe.mdx" +import PartialStartupProbe from "./initContainers/startupProbe.mdx" +import PartialSecurityContext from "./initContainers/securityContext.mdx" +import PartialLifecycle from "./initContainers/lifecycle.mdx" +import PartialVolumeDevices from "./initContainers/volumeDevices.mdx" +import PartialImagePullPolicy from "./initContainers/imagePullPolicy.mdx" +import PartialWorkingDir from "./initContainers/workingDir.mdx" +import PartialStdinOnce from "./initContainers/stdinOnce.mdx" +import PartialTerminationMessagePath from "./initContainers/terminationMessagePath.mdx" +import PartialTerminationMessagePolicy from "./initContainers/terminationMessagePolicy.mdx" + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +### `volumeMounts` required object[] {#initContainers-volumeMounts} + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/labels.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/labels.mdx new file mode 100755 index 0000000000..1ff7d0f955 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/labels.mdx @@ -0,0 +1,13 @@ + +
+ + +## `labels` required <label_name>:string {#labels} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeName.mdx new file mode 100755 index 0000000000..fefb3a6871 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `nodeName` required string {#nodeName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeSelector.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeSelector.mdx new file mode 100755 index 0000000000..f85d34d24c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/nodeSelector.mdx @@ -0,0 +1,13 @@ + +
+ + +## `nodeSelector` required object {#nodeSelector} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/overhead.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/overhead.mdx new file mode 100755 index 0000000000..c539647880 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/overhead.mdx @@ -0,0 +1,13 @@ + +
+ + +## `overhead` required object {#overhead} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/podManagementPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/podManagementPolicy.mdx new file mode 100755 index 0000000000..8ae7545206 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/podManagementPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +## `podManagementPolicy` required string {#podManagementPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/preemptionPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/preemptionPolicy.mdx new file mode 100755 index 0000000000..4f490b04b1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/preemptionPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +## `preemptionPolicy` required string {#preemptionPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priority.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priority.mdx new file mode 100755 index 0000000000..926fedf894 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priority.mdx @@ -0,0 +1,13 @@ + +
+ + +## `priority` required integer {#priority} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priorityClassName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priorityClassName.mdx new file mode 100755 index 0000000000..1abf20fa71 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/priorityClassName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `priorityClassName` required string {#priorityClassName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/pullSecrets.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/pullSecrets.mdx new file mode 100755 index 0000000000..f73643383c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/pullSecrets.mdx @@ -0,0 +1,13 @@ + +
+ + +## `pullSecrets` required string[] {#pullSecrets} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/readinessGates.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/readinessGates.mdx new file mode 100755 index 0000000000..01d5ba912e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/readinessGates.mdx @@ -0,0 +1,13 @@ + +
+ + +## `readinessGates` required object[] {#readinessGates} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/reference.mdx new file mode 100755 index 0000000000..566f500398 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/reference.mdx @@ -0,0 +1,267 @@ + +import PartialInitContainersreference from "./initContainers_reference.mdx" +import PartialContainersreference from "./containers_reference.mdx" +import PartialLabels from "./labels.mdx" +import PartialAnnotations from "./annotations.mdx" +import PartialVolumesreference from "./volumes_reference.mdx" +import PartialServicereference from "./service_reference.mdx" +import PartialServiceName from "./serviceName.mdx" +import PartialIngressreference from "./ingress_reference.mdx" +import PartialReplicas from "./replicas.mdx" +import PartialAutoScalingreference from "./autoScaling_reference.mdx" +import PartialRollingUpdatereference from "./rollingUpdate_reference.mdx" +import PartialPullSecrets from "./pullSecrets.mdx" +import PartialTolerations from "./tolerations.mdx" +import PartialAffinity from "./affinity.mdx" +import PartialNodeSelector from "./nodeSelector.mdx" +import PartialNodeName from "./nodeName.mdx" +import PartialPodManagementPolicy from "./podManagementPolicy.mdx" +import PartialDnsConfig from "./dnsConfig.mdx" +import PartialHostAliases from "./hostAliases.mdx" +import PartialOverhead from "./overhead.mdx" +import PartialReadinessGates from "./readinessGates.mdx" +import PartialSecurityContext from "./securityContext.mdx" +import PartialTopologySpreadConstraints from "./topologySpreadConstraints.mdx" +import PartialActiveDeadlineSeconds from "./activeDeadlineSeconds.mdx" +import PartialAutomountServiceAccountToken from "./automountServiceAccountToken.mdx" +import PartialDnsPolicy from "./dnsPolicy.mdx" +import PartialEnableServiceLinks from "./enableServiceLinks.mdx" +import PartialHostIPC from "./hostIPC.mdx" +import PartialHostNetwork from "./hostNetwork.mdx" +import PartialHostPID from "./hostPID.mdx" +import PartialHostname from "./hostname.mdx" +import PartialPreemptionPolicy from "./preemptionPolicy.mdx" +import PartialPriority from "./priority.mdx" +import PartialPriorityClassName from "./priorityClassName.mdx" +import PartialRestartPolicy from "./restartPolicy.mdx" +import PartialRuntimeClassName from "./runtimeClassName.mdx" +import PartialSchedulerName from "./schedulerName.mdx" +import PartialServiceAccount from "./serviceAccount.mdx" +import PartialServiceAccountName from "./serviceAccountName.mdx" +import PartialSetHostnameAsFQDN from "./setHostnameAsFQDN.mdx" +import PartialShareProcessNamespace from "./shareProcessNamespace.mdx" +import PartialSubdomain from "./subdomain.mdx" +import PartialTerminationGracePeriodSeconds from "./terminationGracePeriodSeconds.mdx" +import PartialEphemeralContainers from "./ephemeralContainers.mdx" + + +
+ + +## `initContainers` required object[] {#initContainers} + + + + + + + + +
+ + + +
+ + +## `containers` required object[] {#containers} + + + + + + + + +
+ + + + + + + + + +
+ + +## `volumes` required object[] {#volumes} + + + + + + + + +
+ + + +
+ + +## `service` required {#service} + + + + + + + + +
+ + + + + + +
+ + +## `ingress` required {#ingress} + + + + + + + + +
+ + + + + + +
+ + +## `autoScaling` required {#autoScaling} + + + + + + + + +
+ + + +
+ + +## `rollingUpdate` required {#rollingUpdate} + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/replicas.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/replicas.mdx new file mode 100755 index 0000000000..b4b991ae14 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/replicas.mdx @@ -0,0 +1,13 @@ + +
+ + +## `replicas` required integer {#replicas} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/restartPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/restartPolicy.mdx new file mode 100755 index 0000000000..88c936af80 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/restartPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +## `restartPolicy` required string {#restartPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate.mdx new file mode 100755 index 0000000000..4ad3247fff --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate.mdx @@ -0,0 +1,17 @@ + +import PartialRollingUpdatereference from "./rollingUpdate_reference.mdx" + + +
+ + +## `rollingUpdate` required {#rollingUpdate} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/enabled.mdx new file mode 100755 index 0000000000..11807de4a0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +### `enabled` required boolean false {#rollingUpdate-enabled} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxSurge.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxSurge.mdx new file mode 100755 index 0000000000..ac6b3c2328 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxSurge.mdx @@ -0,0 +1,13 @@ + +
+ + +### `maxSurge` required string {#rollingUpdate-maxSurge} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxUnavailable.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxUnavailable.mdx new file mode 100755 index 0000000000..9b89ed76ea --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/maxUnavailable.mdx @@ -0,0 +1,13 @@ + +
+ + +### `maxUnavailable` required string {#rollingUpdate-maxUnavailable} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/partition.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/partition.mdx new file mode 100755 index 0000000000..6c73376599 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate/partition.mdx @@ -0,0 +1,13 @@ + +
+ + +### `partition` required integer {#rollingUpdate-partition} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate_reference.mdx new file mode 100755 index 0000000000..75a5fcf5ca --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/rollingUpdate_reference.mdx @@ -0,0 +1,16 @@ + +import PartialEnabled from "./rollingUpdate/enabled.mdx" +import PartialMaxSurge from "./rollingUpdate/maxSurge.mdx" +import PartialMaxUnavailable from "./rollingUpdate/maxUnavailable.mdx" +import PartialPartition from "./rollingUpdate/partition.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/runtimeClassName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/runtimeClassName.mdx new file mode 100755 index 0000000000..60fc219d45 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/runtimeClassName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `runtimeClassName` required string {#runtimeClassName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/schedulerName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/schedulerName.mdx new file mode 100755 index 0000000000..2b60a3d8a5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/schedulerName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `schedulerName` required string {#schedulerName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/securityContext.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/securityContext.mdx new file mode 100755 index 0000000000..51358c0f73 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/securityContext.mdx @@ -0,0 +1,13 @@ + +
+ + +## `securityContext` required object {#securityContext} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service.mdx new file mode 100755 index 0000000000..aebbe9d638 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service.mdx @@ -0,0 +1,17 @@ + +import PartialServicereference from "./service_reference.mdx" + + +
+ + +## `service` required {#service} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/annotations.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/annotations.mdx new file mode 100755 index 0000000000..dc003d4050 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/annotations.mdx @@ -0,0 +1,13 @@ + +
+ + +### `annotations` required <annotation_name>:string {#service-annotations} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/clusterIP.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/clusterIP.mdx new file mode 100755 index 0000000000..666508107e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/clusterIP.mdx @@ -0,0 +1,13 @@ + +
+ + +### `clusterIP` required string {#service-clusterIP} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalIPs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalIPs.mdx new file mode 100755 index 0000000000..e76926f9b7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalIPs.mdx @@ -0,0 +1,13 @@ + +
+ + +### `externalIPs` required string[] {#service-externalIPs} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalName.mdx new file mode 100755 index 0000000000..7630417a46 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalName.mdx @@ -0,0 +1,13 @@ + +
+ + +### `externalName` required string {#service-externalName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalTrafficPolicy.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalTrafficPolicy.mdx new file mode 100755 index 0000000000..f145427398 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/externalTrafficPolicy.mdx @@ -0,0 +1,13 @@ + +
+ + +### `externalTrafficPolicy` required string {#service-externalTrafficPolicy} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/healthCheckNodePort.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/healthCheckNodePort.mdx new file mode 100755 index 0000000000..bf74474181 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/healthCheckNodePort.mdx @@ -0,0 +1,13 @@ + +
+ + +### `healthCheckNodePort` required integer {#service-healthCheckNodePort} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ipFamily.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ipFamily.mdx new file mode 100755 index 0000000000..af4b59bfec --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ipFamily.mdx @@ -0,0 +1,13 @@ + +
+ + +### `ipFamily` required string {#service-ipFamily} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/labels.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/labels.mdx new file mode 100755 index 0000000000..6342f067b8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/labels.mdx @@ -0,0 +1,13 @@ + +
+ + +### `labels` required <label_name>:string {#service-labels} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerIP.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerIP.mdx new file mode 100755 index 0000000000..a759df7b4a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerIP.mdx @@ -0,0 +1,13 @@ + +
+ + +### `loadBalancerIP` required string {#service-loadBalancerIP} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerSourceRanges.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerSourceRanges.mdx new file mode 100755 index 0000000000..e5982b60ce --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/loadBalancerSourceRanges.mdx @@ -0,0 +1,13 @@ + +
+ + +### `loadBalancerSourceRanges` required string[] {#service-loadBalancerSourceRanges} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/name.mdx new file mode 100755 index 0000000000..9c7da56c6e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/name.mdx @@ -0,0 +1,13 @@ + +
+ + +### `name` required string {#service-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports.mdx new file mode 100755 index 0000000000..afc3a911cb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports.mdx @@ -0,0 +1,17 @@ + +import PartialPortsreference from "./ports_reference.mdx" + + +
+ + +### `ports` required object[] {#service-ports} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/containerPort.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/containerPort.mdx new file mode 100755 index 0000000000..f0e8edbe24 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/containerPort.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `containerPort` required integer {#service-ports-containerPort} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/name.mdx new file mode 100755 index 0000000000..93d91856c7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/name.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `name` required string {#service-ports-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/port.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/port.mdx new file mode 100755 index 0000000000..65dd824f62 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/port.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `port` required integer {#service-ports-port} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/protocol.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/protocol.mdx new file mode 100755 index 0000000000..bde1e82127 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports/protocol.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `protocol` required string {#service-ports-protocol} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports_reference.mdx new file mode 100755 index 0000000000..674fc483d2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/ports_reference.mdx @@ -0,0 +1,16 @@ + +import PartialName from "./ports/name.mdx" +import PartialPort from "./ports/port.mdx" +import PartialContainerPort from "./ports/containerPort.mdx" +import PartialProtocol from "./ports/protocol.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/publishNotReadyAddresses.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/publishNotReadyAddresses.mdx new file mode 100755 index 0000000000..970a7fee90 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/publishNotReadyAddresses.mdx @@ -0,0 +1,13 @@ + +
+ + +### `publishNotReadyAddresses` required boolean false {#service-publishNotReadyAddresses} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinity.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinity.mdx new file mode 100755 index 0000000000..a4b01bc09d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinity.mdx @@ -0,0 +1,13 @@ + +
+ + +### `sessionAffinity` required object {#service-sessionAffinity} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinityConfig.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinityConfig.mdx new file mode 100755 index 0000000000..aff423dd3d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/sessionAffinityConfig.mdx @@ -0,0 +1,13 @@ + +
+ + +### `sessionAffinityConfig` required object {#service-sessionAffinityConfig} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/topologyKeys.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/topologyKeys.mdx new file mode 100755 index 0000000000..5bbf7ca2bf --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/topologyKeys.mdx @@ -0,0 +1,13 @@ + +
+ + +### `topologyKeys` required string[] {#service-topologyKeys} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/type.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/type.mdx new file mode 100755 index 0000000000..0f609851f6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service/type.mdx @@ -0,0 +1,13 @@ + +
+ + +### `type` required string {#service-type} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccount.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccount.mdx new file mode 100755 index 0000000000..b59884d34e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccount.mdx @@ -0,0 +1,13 @@ + +
+ + +## `serviceAccount` required string {#serviceAccount} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccountName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccountName.mdx new file mode 100755 index 0000000000..189ec2138c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceAccountName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `serviceAccountName` required string {#serviceAccountName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceName.mdx new file mode 100755 index 0000000000..a9ef5cb753 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/serviceName.mdx @@ -0,0 +1,13 @@ + +
+ + +## `serviceName` required string {#serviceName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service_reference.mdx new file mode 100755 index 0000000000..6b8b8640ce --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/service_reference.mdx @@ -0,0 +1,81 @@ + +import PartialName from "./service/name.mdx" +import PartialLabels from "./service/labels.mdx" +import PartialAnnotations from "./service/annotations.mdx" +import PartialType from "./service/type.mdx" +import PartialPortsreference from "./service/ports_reference.mdx" +import PartialExternalIPs from "./service/externalIPs.mdx" +import PartialClusterIP from "./service/clusterIP.mdx" +import PartialExternalName from "./service/externalName.mdx" +import PartialExternalTrafficPolicy from "./service/externalTrafficPolicy.mdx" +import PartialHealthCheckNodePort from "./service/healthCheckNodePort.mdx" +import PartialIpFamily from "./service/ipFamily.mdx" +import PartialLoadBalancerIP from "./service/loadBalancerIP.mdx" +import PartialLoadBalancerSourceRanges from "./service/loadBalancerSourceRanges.mdx" +import PartialPublishNotReadyAddresses from "./service/publishNotReadyAddresses.mdx" +import PartialSessionAffinity from "./service/sessionAffinity.mdx" +import PartialSessionAffinityConfig from "./service/sessionAffinityConfig.mdx" +import PartialTopologyKeys from "./service/topologyKeys.mdx" + + + + + + + + + + + + + + +
+ + +### `ports` required object[] {#service-ports} + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/setHostnameAsFQDN.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/setHostnameAsFQDN.mdx new file mode 100755 index 0000000000..34561cbe8e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/setHostnameAsFQDN.mdx @@ -0,0 +1,13 @@ + +
+ + +## `setHostnameAsFQDN` required boolean false {#setHostnameAsFQDN} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/shareProcessNamespace.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/shareProcessNamespace.mdx new file mode 100755 index 0000000000..560138ebc9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/shareProcessNamespace.mdx @@ -0,0 +1,13 @@ + +
+ + +## `shareProcessNamespace` required boolean false {#shareProcessNamespace} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/subdomain.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/subdomain.mdx new file mode 100755 index 0000000000..fa1a2ae105 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/subdomain.mdx @@ -0,0 +1,13 @@ + +
+ + +## `subdomain` required string {#subdomain} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/terminationGracePeriodSeconds.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/terminationGracePeriodSeconds.mdx new file mode 100755 index 0000000000..a63e564afa --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/terminationGracePeriodSeconds.mdx @@ -0,0 +1,13 @@ + +
+ + +## `terminationGracePeriodSeconds` required integer {#terminationGracePeriodSeconds} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/tolerations.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/tolerations.mdx new file mode 100755 index 0000000000..09e3e2ed7f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/tolerations.mdx @@ -0,0 +1,13 @@ + +
+ + +## `tolerations` required object[] {#tolerations} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/topologySpreadConstraints.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/topologySpreadConstraints.mdx new file mode 100755 index 0000000000..442733b57c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/topologySpreadConstraints.mdx @@ -0,0 +1,13 @@ + +
+ + +## `topologySpreadConstraints` required object[] {#topologySpreadConstraints} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes.mdx new file mode 100755 index 0000000000..76e528c1a8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes.mdx @@ -0,0 +1,17 @@ + +import PartialVolumesreference from "./volumes_reference.mdx" + + +
+ + +## `volumes` required object[] {#volumes} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/accessModes.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/accessModes.mdx new file mode 100755 index 0000000000..a28934dccc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/accessModes.mdx @@ -0,0 +1,13 @@ + +
+ + +### `accessModes` required string[] {#volumes-accessModes} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/annotations.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/annotations.mdx new file mode 100755 index 0000000000..27a8a968dd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/annotations.mdx @@ -0,0 +1,13 @@ + +
+ + +### `annotations` required <annotation_name>:string {#volumes-annotations} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/configMap.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/configMap.mdx new file mode 100755 index 0000000000..46bc2a9fc4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/configMap.mdx @@ -0,0 +1,13 @@ + +
+ + +### `configMap` required object {#volumes-configMap} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/dataSource.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/dataSource.mdx new file mode 100755 index 0000000000..c6a5d4a58e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/dataSource.mdx @@ -0,0 +1,13 @@ + +
+ + +### `dataSource` required object {#volumes-dataSource} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/emptyDir.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/emptyDir.mdx new file mode 100755 index 0000000000..be3ca8b44d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/emptyDir.mdx @@ -0,0 +1,13 @@ + +
+ + +### `emptyDir` required object {#volumes-emptyDir} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/labels.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/labels.mdx new file mode 100755 index 0000000000..7dd3a04f28 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/labels.mdx @@ -0,0 +1,13 @@ + +
+ + +### `labels` required <label_name>:string {#volumes-labels} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/name.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/name.mdx new file mode 100755 index 0000000000..62b10c46b7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/name.mdx @@ -0,0 +1,13 @@ + +
+ + +### `name` required string {#volumes-name} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/secret.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/secret.mdx new file mode 100755 index 0000000000..05719f2cd8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/secret.mdx @@ -0,0 +1,13 @@ + +
+ + +### `secret` required object {#volumes-secret} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/size.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/size.mdx new file mode 100755 index 0000000000..84f1991f66 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/size.mdx @@ -0,0 +1,13 @@ + +
+ + +### `size` required string {#volumes-size} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/storageClassName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/storageClassName.mdx new file mode 100755 index 0000000000..e1ce1133f3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/storageClassName.mdx @@ -0,0 +1,13 @@ + +
+ + +### `storageClassName` required string {#volumes-storageClassName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeMode.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeMode.mdx new file mode 100755 index 0000000000..fafd993e03 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeMode.mdx @@ -0,0 +1,13 @@ + +
+ + +### `volumeMode` required string {#volumes-volumeMode} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeName.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeName.mdx new file mode 100755 index 0000000000..e517d34db9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes/volumeName.mdx @@ -0,0 +1,13 @@ + +
+ + +### `volumeName` required string {#volumes-volumeName} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes_reference.mdx new file mode 100755 index 0000000000..0892b84a8d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/componentChart/volumes_reference.mdx @@ -0,0 +1,48 @@ + +import PartialName from "./volumes/name.mdx" +import PartialLabels from "./volumes/labels.mdx" +import PartialAnnotations from "./volumes/annotations.mdx" +import PartialSize from "./volumes/size.mdx" +import PartialConfigMap from "./volumes/configMap.mdx" +import PartialSecret from "./volumes/secret.mdx" +import PartialEmptyDir from "./volumes/emptyDir.mdx" +import PartialStorageClassName from "./volumes/storageClassName.mdx" +import PartialVolumeMode from "./volumes/volumeMode.mdx" +import PartialVolumeName from "./volumes/volumeName.mdx" +import PartialDataSource from "./volumes/dataSource.mdx" +import PartialAccessModes from "./volumes/accessModes.mdx" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/displayOutput.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/displayOutput.mdx new file mode 100755 index 0000000000..0a632e0a3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/displayOutput.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `displayOutput` required boolean false {#deployments-helm-displayOutput} + +DisplayOutput allows you to display the helm output to the console + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/templateArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/templateArgs.mdx new file mode 100755 index 0000000000..5a5133dde0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/templateArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `templateArgs` required string[] {#deployments-helm-templateArgs} + +TemplateArgs are additional arguments to pass to `helm template` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/upgradeArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/upgradeArgs.mdx new file mode 100755 index 0000000000..77e515e3c0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/upgradeArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `upgradeArgs` required string[] {#deployments-helm-upgradeArgs} + +UpgradeArgs are additional arguments to pass to `helm upgrade` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/values.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/values.mdx new file mode 100755 index 0000000000..e50bade650 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/values.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `values` required object {#deployments-helm-values} + +Values are additional values that should get passed to deploying this chart + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm/valuesFiles.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm/valuesFiles.mdx new file mode 100755 index 0000000000..9d7aa29dd0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm/valuesFiles.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `valuesFiles` required string[] {#deployments-helm-valuesFiles} + +ValuesFiles are additional files that hold values for deploying this chart + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/helm_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/helm_reference.mdx new file mode 100755 index 0000000000..b3247a7bfc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/helm_reference.mdx @@ -0,0 +1,37 @@ + +import PartialChartreference from "./helm/chart_reference.mdx" +import PartialValues from "./helm/values.mdx" +import PartialValuesFiles from "./helm/valuesFiles.mdx" +import PartialDisplayOutput from "./helm/displayOutput.mdx" +import PartialUpgradeArgs from "./helm/upgradeArgs.mdx" +import PartialTemplateArgs from "./helm/templateArgs.mdx" + + +
+ + +#### `chart` required {#deployments-helm-chart} + +Chart holds the chart configuration and where DevSpace can find the chart + + + + + + +
+ + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl.mdx new file mode 100755 index 0000000000..e40e8af57b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl.mdx @@ -0,0 +1,17 @@ + +import PartialKubectlreference from "./kubectl_reference.mdx" + + +
+ + +### `kubectl` required {#deployments-kubectl} + +Kubectl tells DevSpace to deploy this deployment via kubectl or kustomize + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/applyArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/applyArgs.mdx new file mode 100755 index 0000000000..286796b7d0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/applyArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `applyArgs` required string[] {#deployments-kubectl-applyArgs} + +ApplyArgs are extra arguments for `kubectl apply` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/createArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/createArgs.mdx new file mode 100755 index 0000000000..b1837fb15d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/createArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `createArgs` required string[] {#deployments-kubectl-createArgs} + +CreateArgs are extra arguments for `kubectl create` which will be run before `kubectl apply` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/group_kustomize.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/group_kustomize.mdx new file mode 100755 index 0000000000..c323155994 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/group_kustomize.mdx @@ -0,0 +1,13 @@ + +import PartialKustomize from "./kustomize.mdx" +import PartialKustomizeArgs from "./kustomizeArgs.mdx" +import PartialKustomizeBinaryPath from "./kustomizeBinaryPath.mdx" + +
+
Kustomize
+ + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kubectlBinaryPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kubectlBinaryPath.mdx new file mode 100755 index 0000000000..ca97200cc4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kubectlBinaryPath.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `kubectlBinaryPath` required string {#deployments-kubectl-kubectlBinaryPath} + +KubectlBinaryPath is the optional path where to finde the kubectl binary + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomize.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomize.mdx new file mode 100755 index 0000000000..8e85e59467 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomize.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `kustomize` required boolean false {#deployments-kubectl-kustomize} + +Kustomize can be used to enabdevle kustomize instead of kubectl + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeArgs.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeArgs.mdx new file mode 100755 index 0000000000..002f69eb74 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `kustomizeArgs` required string[] {#deployments-kubectl-kustomizeArgs} + +KustomizeArgs are extra arguments for `kustomize build` which will be run before `kubectl apply` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeBinaryPath.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeBinaryPath.mdx new file mode 100755 index 0000000000..14573532da --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/kustomizeBinaryPath.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `kustomizeBinaryPath` required string {#deployments-kubectl-kustomizeBinaryPath} + +KustomizeBinaryPath is the optional path where to find the kustomize binary + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/manifests.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/manifests.mdx new file mode 100755 index 0000000000..49284c4219 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl/manifests.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `manifests` required string[] {#deployments-kubectl-manifests} + +Manifests is a list of files or folders that will be deployed by DevSpace using kubectl +or kustomize + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/kubectl_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl_reference.mdx new file mode 100755 index 0000000000..7fd6e9e92a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/kubectl_reference.mdx @@ -0,0 +1,20 @@ + +import PartialManifests from "./kubectl/manifests.mdx" +import PartialApplyArgs from "./kubectl/applyArgs.mdx" +import PartialCreateArgs from "./kubectl/createArgs.mdx" +import PartialKubectlBinaryPath from "./kubectl/kubectlBinaryPath.mdx" +import PartialGroupkustomize from "./kubectl/group_kustomize.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/namespace.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/namespace.mdx new file mode 100755 index 0000000000..14f751f321 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +### `namespace` required string {#deployments-namespace} + +Namespace where to deploy this deployment + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments/updateImageTags.mdx b/docs/pages/configuration/_partials/v2beta1/deployments/updateImageTags.mdx new file mode 100755 index 0000000000..1f08b3fc4e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments/updateImageTags.mdx @@ -0,0 +1,14 @@ + +
+ + +### `updateImageTags` required boolean false {#deployments-updateImageTags} + +UpdateImageTags lets you define if DevSpace should update the tags of the images defined in the +images section with their most recent built tag. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/deployments_reference.mdx b/docs/pages/configuration/_partials/v2beta1/deployments_reference.mdx new file mode 100755 index 0000000000..e01b55f28b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/deployments_reference.mdx @@ -0,0 +1,42 @@ + +import PartialHelmreference from "./deployments/helm_reference.mdx" +import PartialKubectlreference from "./deployments/kubectl_reference.mdx" +import PartialUpdateImageTags from "./deployments/updateImageTags.mdx" +import PartialNamespace from "./deployments/namespace.mdx" + + +
+ + +### `helm` required {#deployments-helm} + +Helm tells DevSpace to deploy this deployment via helm + + + + + + +
+ + + +
+ + +### `kubectl` required {#deployments-kubectl} + +Kubectl tells DevSpace to deploy this deployment via kubectl or kustomize + + + + + + +
+ + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev.mdx b/docs/pages/configuration/_partials/v2beta1/dev.mdx new file mode 100755 index 0000000000..5c58b10f6a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev.mdx @@ -0,0 +1,38 @@ + +import PartialDevreference from "./dev_reference.mdx" + + +
+ + +## `dev` required <dev_name>:object {#dev} + +Dev holds development configuration. Each dev configuration targets a single pod and enables certain dev services on that pod +or even rewrites it if certain changes are requested, such as adding an environment variable or changing the entrypoint. +Dev allows you to: +- sync local folders to the Kubernetes pod +- port forward remote ports to your local computer +- forward local ports into the Kubernetes pod +- configure an ssh tunnel to the Kubernetes pod +- proxy local commands to the container +- restart the container on file changes + + + + +
+ + +## `` required string {#dev-name} + +Name of the dev configuration + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/arch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/arch.mdx new file mode 100755 index 0000000000..ff0260af05 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/arch.mdx @@ -0,0 +1,14 @@ + +
+ + +### `arch` required string {#dev-arch} + +Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but +devspace tries to find out the architecture by itself by looking at the node this container runs on. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/args.mdx new file mode 100755 index 0000000000..eea6db9709 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/args.mdx @@ -0,0 +1,13 @@ + +
+ + +### `args` required string[] {#dev-args} + +Args can be used to override the args of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/attach.mdx b/docs/pages/configuration/_partials/v2beta1/dev/attach.mdx new file mode 100755 index 0000000000..a521838d3c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/attach.mdx @@ -0,0 +1,17 @@ + +import PartialAttachreference from "./attach_reference.mdx" + + +
+ + +### `attach` required {#dev-attach} + +Attach allows you to tell DevSpace to attach to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/attach/disableReplace.mdx b/docs/pages/configuration/_partials/v2beta1/dev/attach/disableReplace.mdx new file mode 100755 index 0000000000..61eaaaed1a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/attach/disableReplace.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `disableReplace` required boolean false {#dev-attach-disableReplace} + +DisableReplace prevents DevSpace from actually replacing the pod with modifications so that +the pod starts up correctly. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/attach/disableTTY.mdx b/docs/pages/configuration/_partials/v2beta1/dev/attach/disableTTY.mdx new file mode 100755 index 0000000000..779f4bccff --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/attach/disableTTY.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `disableTTY` required boolean false {#dev-attach-disableTTY} + +DisableTTY is used to tell DevSpace to not use a TTY connection for attaching + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/attach/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/attach/enabled.mdx new file mode 100755 index 0000000000..d76183b979 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/attach/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `enabled` required boolean false {#dev-attach-enabled} + +Enabled can be used to enable attaching to a container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/attach_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/attach_reference.mdx new file mode 100755 index 0000000000..3220877713 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/attach_reference.mdx @@ -0,0 +1,12 @@ + +import PartialEnabled from "./attach/enabled.mdx" +import PartialDisableReplace from "./attach/disableReplace.mdx" +import PartialDisableTTY from "./attach/disableTTY.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/command.mdx new file mode 100755 index 0000000000..d93cbbb496 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/command.mdx @@ -0,0 +1,13 @@ + +
+ + +### `command` required string[] {#dev-command} + +Command can be used to override the entrypoint of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/container.mdx b/docs/pages/configuration/_partials/v2beta1/dev/container.mdx new file mode 100755 index 0000000000..0012ec2eb2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/container.mdx @@ -0,0 +1,13 @@ + +
+ + +### `container` required string {#dev-container} + +Container is the container name these services should get started. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers.mdx new file mode 100755 index 0000000000..d92adc170e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers.mdx @@ -0,0 +1,17 @@ + +import PartialContainersreference from "./containers_reference.mdx" + + +
+ + +### `containers` required <container_name>:object {#dev-containers} + + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/arch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/arch.mdx new file mode 100755 index 0000000000..7543d550a3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/arch.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `arch` required string {#dev-containers-arch} + +Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but +devspace tries to find out the architecture by itself by looking at the node this container runs on. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/args.mdx new file mode 100755 index 0000000000..3ed9a10514 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/args.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `args` required string[] {#dev-containers-args} + +Args can be used to override the args of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/attach.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach.mdx new file mode 100755 index 0000000000..1216d48166 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach.mdx @@ -0,0 +1,17 @@ + +import PartialAttachreference from "./attach_reference.mdx" + + +
+ + +#### `attach` required {#dev-containers-attach} + +Attach allows you to tell DevSpace to attach to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableReplace.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableReplace.mdx new file mode 100755 index 0000000000..7fd20fb79e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableReplace.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `disableReplace` required boolean false {#dev-containers-attach-disableReplace} + +DisableReplace prevents DevSpace from actually replacing the pod with modifications so that +the pod starts up correctly. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableTTY.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableTTY.mdx new file mode 100755 index 0000000000..e2e5a5504b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/disableTTY.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `disableTTY` required boolean false {#dev-containers-attach-disableTTY} + +DisableTTY is used to tell DevSpace to not use a TTY connection for attaching + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/enabled.mdx new file mode 100755 index 0000000000..ce868fc1bd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `enabled` required boolean false {#dev-containers-attach-enabled} + +Enabled can be used to enable attaching to a container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/attach_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach_reference.mdx new file mode 100755 index 0000000000..3220877713 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/attach_reference.mdx @@ -0,0 +1,12 @@ + +import PartialEnabled from "./attach/enabled.mdx" +import PartialDisableReplace from "./attach/disableReplace.mdx" +import PartialDisableTTY from "./attach/disableTTY.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/command.mdx new file mode 100755 index 0000000000..26cff722ae --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/command.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `command` required string[] {#dev-containers-command} + +Command can be used to override the entrypoint of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/container.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/container.mdx new file mode 100755 index 0000000000..9764e25de9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/container.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `container` required string {#dev-containers-container} + +Container is the container name these services should get started. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/devImage.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/devImage.mdx new file mode 100755 index 0000000000..fc724f09a7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/devImage.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `devImage` required string {#dev-containers-devImage} + +DevImage is the image to use for this container and will replace the existing image +if necessary. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/env.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/env.mdx new file mode 100755 index 0000000000..a89289d4d4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/env.mdx @@ -0,0 +1,18 @@ + +import PartialEnvreference from "./env_reference.mdx" + + +
+ + +#### `env` required object[] {#dev-containers-env} + +Env can be used to add environment variables to the container. DevSpace will +not replace existing environment variables if an environment variable is defined here. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/env/name.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/env/name.mdx new file mode 100755 index 0000000000..cc34dbd95c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/env/name.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `name` required string {#dev-containers-env-name} + +Name of the environment variable + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/env/value.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/env/value.mdx new file mode 100755 index 0000000000..493d9e5324 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/env/value.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `value` required string {#dev-containers-env-value} + +Value of the environment variable + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/env_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/env_reference.mdx new file mode 100755 index 0000000000..525ac84889 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/env_reference.mdx @@ -0,0 +1,8 @@ + +import PartialName from "./env/name.mdx" +import PartialValue from "./env/value.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_modifications.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_modifications.mdx new file mode 100755 index 0000000000..29dbf5dc44 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_modifications.mdx @@ -0,0 +1,61 @@ + +import PartialDevImage from "./devImage.mdx" +import PartialCommand from "./command.mdx" +import PartialArgs from "./args.mdx" +import PartialWorkingDir from "./workingDir.mdx" +import PartialEnvreference from "./env_reference.mdx" +import PartialResourcesreference from "./resources_reference.mdx" +import PartialPersistPathsreference from "./persistPaths_reference.mdx" + +
+
Modifications
+ + + + + + +
+ + +#### `env` required object[] {#dev-containers-env} + +Env can be used to add environment variables to the container. DevSpace will +not replace existing environment variables if an environment variable is defined here. + + + + + + +
+ +
+ + +#### `resources` required {#dev-containers-resources} + +Resources can be used to override the resource definitions of the container + + + + + + +
+ +
+ + +#### `persistPaths` required object[] {#dev-containers-persistPaths} + +SSH allows you to create an SSH tunnel to this container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_ports.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_ports.mdx new file mode 100755 index 0000000000..98aca499c1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_ports.mdx @@ -0,0 +1,22 @@ + +import PartialReversePortsreference from "./reversePorts_reference.mdx" + +
+
Port Forwarding
+ + +
+ + +#### `reversePorts` required object[] {#dev-containers-reversePorts} + +ReversePorts are port mappings to make local ports available inside the container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_selector.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_selector.mdx new file mode 100755 index 0000000000..5c31b5d4c8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_selector.mdx @@ -0,0 +1,11 @@ + +import PartialContainer from "./container.mdx" +import PartialArch from "./arch.mdx" + +
+
Selector
+ + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_sync.mdx new file mode 100755 index 0000000000..5f4b045d35 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_sync.mdx @@ -0,0 +1,22 @@ + +import PartialSyncreference from "./sync_reference.mdx" + +
+
File Sync
+ + +
+ + +#### `sync` required object[] {#dev-containers-sync} + +Sync allows you to sync certain local paths with paths inside the container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows.mdx new file mode 100755 index 0000000000..97069662b0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows.mdx @@ -0,0 +1,52 @@ + +import PartialTerminalreference from "./terminal_reference.mdx" +import PartialLogsreference from "./logs_reference.mdx" +import PartialAttachreference from "./attach_reference.mdx" + +
+
Foreground Dev Workflows
+ + +
+ + +#### `terminal` required {#dev-containers-terminal} + +Terminal allows you to tell DevSpace to open a terminal with screen support to this container + + + + + + +
+ +
+ + +#### `logs` required {#dev-containers-logs} + +Logs allows you to tell DevSpace to stream logs from this container to the console + + + + + + +
+ +
+ + +#### `attach` required {#dev-containers-attach} + +Attach allows you to tell DevSpace to attach to this container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows_background.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows_background.mdx new file mode 100755 index 0000000000..d73d4666e0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/group_workflows_background.mdx @@ -0,0 +1,50 @@ + +import PartialSshreference from "./ssh_reference.mdx" +import PartialProxyCommandsreference from "./proxyCommands_reference.mdx" +import PartialRestartHelperreference from "./restartHelper_reference.mdx" + +
+
+ + +#### `ssh` required {#dev-containers-ssh} + +PersistPaths allows you to persist certain paths within this container with a persistent volume claim + + + + + + +
+ +
+ + +#### `proxyCommands` required object[] {#dev-containers-proxyCommands} + +ProxyCommands allow you to proxy certain local commands to the container + + + + + + +
+ +
+ + +#### `restartHelper` required {#dev-containers-restartHelper} + +RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of +the container and restarting it and is injected via an annotation in the replaced pod. + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/logs.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs.mdx new file mode 100755 index 0000000000..2a99107e8b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs.mdx @@ -0,0 +1,17 @@ + +import PartialLogsreference from "./logs_reference.mdx" + + +
+ + +#### `logs` required {#dev-containers-logs} + +Logs allows you to tell DevSpace to stream logs from this container to the console + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/enabled.mdx new file mode 100755 index 0000000000..b4b00f9fdb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `enabled` required boolean false {#dev-containers-logs-enabled} + +Enabled can be used to enable printing container logs + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/lastLines.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/lastLines.mdx new file mode 100755 index 0000000000..3e4b08a1b2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs/lastLines.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `lastLines` required integer {#dev-containers-logs-lastLines} + +LastLines is the amount of lines to print of the running container initially + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/logs_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs_reference.mdx new file mode 100755 index 0000000000..5f227febcd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/logs_reference.mdx @@ -0,0 +1,8 @@ + +import PartialEnabled from "./logs/enabled.mdx" +import PartialLastLines from "./logs/lastLines.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths.mdx new file mode 100755 index 0000000000..73fd8b5912 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths.mdx @@ -0,0 +1,17 @@ + +import PartialPersistPathsreference from "./persistPaths_reference.mdx" + + +
+ + +#### `persistPaths` required object[] {#dev-containers-persistPaths} + +SSH allows you to create an SSH tunnel to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer.mdx new file mode 100755 index 0000000000..7db1d84c77 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer.mdx @@ -0,0 +1,17 @@ + +import PartialInitContainerreference from "./initContainer_reference.mdx" + + +
+ + +##### `initContainer` required {#dev-containers-persistPaths-initContainer} + +InitContainer holds additional options for the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources.mdx new file mode 100755 index 0000000000..4b4ad37585 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./resources_reference.mdx" + + +
+ + +###### `resources` required {#dev-containers-persistPaths-initContainer-resources} + +Resources are the resources used by the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/limits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/limits.mdx new file mode 100755 index 0000000000..e7c900352b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/limits.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `limits` required <limit_name>:string {#dev-containers-persistPaths-initContainer-resources-limits} + +Limits are the limits part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/requests.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/requests.mdx new file mode 100755 index 0000000000..dddec61408 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources/requests.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `requests` required <request_name>:string {#dev-containers-persistPaths-initContainer-resources-requests} + +Requests are the requests part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources_reference.mdx new file mode 100755 index 0000000000..760e0452b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer/resources_reference.mdx @@ -0,0 +1,8 @@ + +import PartialRequests from "./resources/requests.mdx" +import PartialLimits from "./resources/limits.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer_reference.mdx new file mode 100755 index 0000000000..495440dbc5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/initContainer_reference.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./initContainer/resources_reference.mdx" + + +
+ + +###### `resources` required {#dev-containers-persistPaths-initContainer-resources} + +Resources are the resources used by the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/path.mdx new file mode 100755 index 0000000000..01a438a3b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/path.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `path` required string {#dev-containers-persistPaths-path} + +Path is the container path that should get persisted. By default, DevSpace will create an init container +that will copy over the contents of this folder from the existing image. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/readOnly.mdx new file mode 100755 index 0000000000..b6917aee55 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/readOnly.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `readOnly` required boolean false {#dev-containers-persistPaths-readOnly} + +ReadOnly will make the persistent path read only to the user + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/skipPopulate.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/skipPopulate.mdx new file mode 100755 index 0000000000..507ce7986b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/skipPopulate.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `skipPopulate` required boolean false {#dev-containers-persistPaths-skipPopulate} + +SkipPopulate will not create an init container to copy over the existing contents if true + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/volumePath.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/volumePath.mdx new file mode 100755 index 0000000000..b13193efc5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths/volumePath.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `volumePath` required string {#dev-containers-persistPaths-volumePath} + +VolumePath is the sub path on the volume that is mounted as persistent volume for this path + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths_reference.mdx new file mode 100755 index 0000000000..852c39c2e3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/persistPaths_reference.mdx @@ -0,0 +1,33 @@ + +import PartialPath from "./persistPaths/path.mdx" +import PartialVolumePath from "./persistPaths/volumePath.mdx" +import PartialReadOnly from "./persistPaths/readOnly.mdx" +import PartialSkipPopulate from "./persistPaths/skipPopulate.mdx" +import PartialInitContainerreference from "./persistPaths/initContainer_reference.mdx" + + + + + + + + + + + + + + +
+ + +##### `initContainer` required {#dev-containers-persistPaths-initContainer} + +InitContainer holds additional options for the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands.mdx new file mode 100755 index 0000000000..ebeed2a4b1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands.mdx @@ -0,0 +1,17 @@ + +import PartialProxyCommandsreference from "./proxyCommands_reference.mdx" + + +
+ + +#### `proxyCommands` required object[] {#dev-containers-proxyCommands} + +ProxyCommands allow you to proxy certain local commands to the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/command.mdx new file mode 100755 index 0000000000..b1f227a471 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/command.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `command` required string {#dev-containers-proxyCommands-command} + +Command is the name of the command that should be available in the remote container. DevSpace +will create a small script for that inside the container that redirect command execution to +the local computer. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/env.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/env.mdx new file mode 100755 index 0000000000..8e337bd4ab --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/env.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `env` required <env_name>:string {#dev-containers-proxyCommands-env} + +Env are extra environment variables to set for the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/gitCredentials.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/gitCredentials.mdx new file mode 100755 index 0000000000..0a922897e2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/gitCredentials.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `gitCredentials` required boolean false {#dev-containers-proxyCommands-gitCredentials} + +GitCredentials configures a git credentials helper inside the container that proxies local git credentials + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/localCommand.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/localCommand.mdx new file mode 100755 index 0000000000..33bd1b5dd7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/localCommand.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `localCommand` required string {#dev-containers-proxyCommands-localCommand} + +LocalCommand can be used to run a different command than specified via the command option. By +default, this will be assumed to be the same as command. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/skipContainerEnv.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/skipContainerEnv.mdx new file mode 100755 index 0000000000..2d4f6be165 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands/skipContainerEnv.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `skipContainerEnv` required boolean false {#dev-containers-proxyCommands-skipContainerEnv} + +SkipContainerEnv will not forward the container environment variables to the local command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands_reference.mdx new file mode 100755 index 0000000000..0a0e054315 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/proxyCommands_reference.mdx @@ -0,0 +1,20 @@ + +import PartialGitCredentials from "./proxyCommands/gitCredentials.mdx" +import PartialCommand from "./proxyCommands/command.mdx" +import PartialLocalCommand from "./proxyCommands/localCommand.mdx" +import PartialSkipContainerEnv from "./proxyCommands/skipContainerEnv.mdx" +import PartialEnv from "./proxyCommands/env.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/resources.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources.mdx new file mode 100755 index 0000000000..6bcbc0a69b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./resources_reference.mdx" + + +
+ + +#### `resources` required {#dev-containers-resources} + +Resources can be used to override the resource definitions of the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/limits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/limits.mdx new file mode 100755 index 0000000000..05385fdbc3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/limits.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `limits` required <limit_name>:string {#dev-containers-resources-limits} + +Limits are the limits part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/requests.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/requests.mdx new file mode 100755 index 0000000000..c30cd5732e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources/requests.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `requests` required <request_name>:string {#dev-containers-resources-requests} + +Requests are the requests part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/resources_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources_reference.mdx new file mode 100755 index 0000000000..760e0452b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/resources_reference.mdx @@ -0,0 +1,8 @@ + +import PartialRequests from "./resources/requests.mdx" +import PartialLimits from "./resources/limits.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper.mdx new file mode 100755 index 0000000000..6e57496295 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper.mdx @@ -0,0 +1,18 @@ + +import PartialRestartHelperreference from "./restartHelper_reference.mdx" + + +
+ + +#### `restartHelper` required {#dev-containers-restartHelper} + +RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of +the container and restarting it and is injected via an annotation in the replaced pod. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/inject.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/inject.mdx new file mode 100755 index 0000000000..ac327ed9cd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/inject.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `inject` required boolean false {#dev-containers-restartHelper-inject} + +Inject signals DevSpace to inject the restart helper + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/path.mdx new file mode 100755 index 0000000000..7f61938c73 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper/path.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `path` required string {#dev-containers-restartHelper-path} + +Path defines the path to the restart helper that might be used if certain config +options are enabled + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper_reference.mdx new file mode 100755 index 0000000000..7e20b99369 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/restartHelper_reference.mdx @@ -0,0 +1,8 @@ + +import PartialPath from "./restartHelper/path.mdx" +import PartialInject from "./restartHelper/inject.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts.mdx new file mode 100755 index 0000000000..cc34961d1b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts.mdx @@ -0,0 +1,17 @@ + +import PartialReversePortsreference from "./reversePorts_reference.mdx" + + +
+ + +#### `reversePorts` required object[] {#dev-containers-reversePorts} + +ReversePorts are port mappings to make local ports available inside the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/bindAddress.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/bindAddress.mdx new file mode 100755 index 0000000000..cb96f25bd7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/bindAddress.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `bindAddress` required string {#dev-containers-reversePorts-bindAddress} + +BindAddress is the address DevSpace should listen on. Optional and defaults +to localhost. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/port.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/port.mdx new file mode 100755 index 0000000000..611af29c78 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts/port.mdx @@ -0,0 +1,17 @@ + +
+ + +##### `port` required string {#dev-containers-reversePorts-port} + +Port is a port mapping that maps the localPort:remotePort. So if +you port forward the remote port will be available at the local port. +If you do reverse port forwarding, the local port will be available +at the remote port in the container. If only port is specified, local and +remote port are the same. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts_reference.mdx new file mode 100755 index 0000000000..dcb1d18612 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/reversePorts_reference.mdx @@ -0,0 +1,8 @@ + +import PartialPort from "./reversePorts/port.mdx" +import PartialBindAddress from "./reversePorts/bindAddress.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh.mdx new file mode 100755 index 0000000000..79207a07e7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh.mdx @@ -0,0 +1,17 @@ + +import PartialSshreference from "./ssh_reference.mdx" + + +
+ + +#### `ssh` required {#dev-containers-ssh} + +PersistPaths allows you to persist certain paths within this container with a persistent volume claim + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/enabled.mdx new file mode 100755 index 0000000000..ad1fb1f339 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/enabled.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `enabled` required boolean false {#dev-containers-ssh-enabled} + +Enabled can be used to enable the ssh server within the container. By default, +DevSpace will generate the required keys and create an entry in your ~/.ssh/config +for this container that can be used via `ssh dev-config-name.dev-project-name.devspace` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localHostname.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localHostname.mdx new file mode 100755 index 0000000000..d448e4e646 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localHostname.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `localHostname` required string {#dev-containers-ssh-localHostname} + +LocalHostname is the local ssh host to write to the ~/.ssh/config + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localPort.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localPort.mdx new file mode 100755 index 0000000000..34510f4848 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/localPort.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `localPort` required integer {#dev-containers-ssh-localPort} + +LocalPort is the local port to forward from, if empty will be random + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/remoteAddress.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/remoteAddress.mdx new file mode 100755 index 0000000000..9c94dbbce0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh/remoteAddress.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `remoteAddress` required string {#dev-containers-ssh-remoteAddress} + +RemoteAddress is the address to listen to inside the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh_reference.mdx new file mode 100755 index 0000000000..742145d83d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/ssh_reference.mdx @@ -0,0 +1,16 @@ + +import PartialEnabled from "./ssh/enabled.mdx" +import PartialLocalHostname from "./ssh/localHostname.mdx" +import PartialLocalPort from "./ssh/localPort.mdx" +import PartialRemoteAddress from "./ssh/remoteAddress.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync.mdx new file mode 100755 index 0000000000..adb120426a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync.mdx @@ -0,0 +1,17 @@ + +import PartialSyncreference from "./sync_reference.mdx" + + +
+ + +#### `sync` required object[] {#dev-containers-sync} + +Sync allows you to sync certain local paths with paths inside the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits.mdx new file mode 100755 index 0000000000..a4da733236 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits.mdx @@ -0,0 +1,18 @@ + +import PartialBandwidthLimitsreference from "./bandwidthLimits_reference.mdx" + + +
+ + +##### `bandwidthLimits` required {#dev-containers-sync-bandwidthLimits} + +BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this +sync configuration + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/download.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/download.mdx new file mode 100755 index 0000000000..13cb3c0f4b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/download.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `download` required integer {#dev-containers-sync-bandwidthLimits-download} + +Download is the download limit in kilo bytes per second + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/upload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/upload.mdx new file mode 100755 index 0000000000..fb16623be2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits/upload.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `upload` required integer {#dev-containers-sync-bandwidthLimits-upload} + +Upload is the upload limit in kilo bytes per second + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits_reference.mdx new file mode 100755 index 0000000000..79daa9612e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/bandwidthLimits_reference.mdx @@ -0,0 +1,8 @@ + +import PartialDownload from "./bandwidthLimits/download.mdx" +import PartialUpload from "./bandwidthLimits/upload.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableDownload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableDownload.mdx new file mode 100755 index 0000000000..d4859f21de --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableDownload.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `disableDownload` required boolean false {#dev-containers-sync-disableDownload} + +DisableDownload will disable downloading completely + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableUpload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableUpload.mdx new file mode 100755 index 0000000000..1db9fc7521 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/disableUpload.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `disableUpload` required boolean false {#dev-containers-sync-disableUpload} + +DisableUpload will disable uploading completely + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludeFile.mdx new file mode 100755 index 0000000000..669b623ec4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `downloadExcludeFile` required string {#dev-containers-sync-downloadExcludeFile} + +DownloadExcludeFile loads the file patterns to exclude from downloading from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludePaths.mdx new file mode 100755 index 0000000000..20130ff171 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/downloadExcludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `downloadExcludePaths` required string[] {#dev-containers-sync-downloadExcludePaths} + +DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludeFile.mdx new file mode 100755 index 0000000000..e1eba0251a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `excludeFile` required string {#dev-containers-sync-excludeFile} + +ExcludeFile loads the file patterns to exclude from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludePaths.mdx new file mode 100755 index 0000000000..6847c60d49 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/excludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `excludePaths` required string[] {#dev-containers-sync-excludePaths} + +ExcludePaths is an array of file patterns in gitignore format to exclude. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_actions.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_actions.mdx new file mode 100755 index 0000000000..8d471c6b79 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_actions.mdx @@ -0,0 +1,25 @@ + +import PartialStartContainer from "./startContainer.mdx" +import PartialOnUploadreference from "./onUpload_reference.mdx" + +
+
Sync-Triggered Actions
+ + + +
+ + +##### `onUpload` required {#dev-containers-sync-onUpload} + +OnUpload can be used to execute certain commands on uploading either in the container or locally as +well as restart the container after a file changed has happened. + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_exclude.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_exclude.mdx new file mode 100755 index 0000000000..a42916e12e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_exclude.mdx @@ -0,0 +1,19 @@ + +import PartialExcludePaths from "./excludePaths.mdx" +import PartialExcludeFile from "./excludeFile.mdx" +import PartialDownloadExcludePaths from "./downloadExcludePaths.mdx" +import PartialDownloadExcludeFile from "./downloadExcludeFile.mdx" +import PartialUploadExcludePaths from "./uploadExcludePaths.mdx" +import PartialUploadExcludeFile from "./uploadExcludeFile.mdx" + +
+
Exclude Paths From File Sync
+ + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_initial_sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_initial_sync.mdx new file mode 100755 index 0000000000..309340de3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_initial_sync.mdx @@ -0,0 +1,13 @@ + +import PartialInitialSync from "./initialSync.mdx" +import PartialWaitInitialSync from "./waitInitialSync.mdx" +import PartialInitialSyncCompareBy from "./initialSyncCompareBy.mdx" + +
+
Initial Sync
+ + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_one_direction.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_one_direction.mdx new file mode 100755 index 0000000000..959fb43f95 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/group_one_direction.mdx @@ -0,0 +1,11 @@ + +import PartialDisableDownload from "./disableDownload.mdx" +import PartialDisableUpload from "./disableUpload.mdx" + +
+
One-Directional Sync
+ + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSync.mdx new file mode 100755 index 0000000000..f0512e9fc0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSync.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `initialSync` required string {#dev-containers-sync-initialSync} + +InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSyncCompareBy.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSyncCompareBy.mdx new file mode 100755 index 0000000000..25b843d443 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/initialSyncCompareBy.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `initialSyncCompareBy` required string {#dev-containers-sync-initialSyncCompareBy} + +InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/noWatch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/noWatch.mdx new file mode 100755 index 0000000000..c885b6352e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/noWatch.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `noWatch` required boolean false {#dev-containers-sync-noWatch} + +NoWatch will terminate the sync after the initial sync is done + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload.mdx new file mode 100755 index 0000000000..f02b97e996 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload.mdx @@ -0,0 +1,18 @@ + +import PartialOnUploadreference from "./onUpload_reference.mdx" + + +
+ + +##### `onUpload` required {#dev-containers-sync-onUpload} + +OnUpload can be used to execute certain commands on uploading either in the container or locally as +well as restart the container after a file changed has happened. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec.mdx new file mode 100755 index 0000000000..8097ec945a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec.mdx @@ -0,0 +1,17 @@ + +import PartialExecreference from "./exec_reference.mdx" + + +
+ + +###### `exec` required object[] {#dev-containers-sync-onUpload-exec} + +Exec will execute the given commands in order after a sync operation + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/args.mdx new file mode 100755 index 0000000000..9770f29ccd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/args.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `args` required string[] {#dev-containers-sync-onUpload-exec-args} + +Args are arguments to pass to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/command.mdx new file mode 100755 index 0000000000..01ad6f1502 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/command.mdx @@ -0,0 +1,14 @@ + +
+ + +####### `command` required string {#dev-containers-sync-onUpload-exec-command} + +Command is the command to execute. If no args are specified this is executed +within a shell. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/failOnError.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/failOnError.mdx new file mode 100755 index 0000000000..df57827888 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/failOnError.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `failOnError` required boolean false {#dev-containers-sync-onUpload-exec-failOnError} + +FailOnError specifies if the sync should fail if the command fails + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/local.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/local.mdx new file mode 100755 index 0000000000..60df6872f8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/local.mdx @@ -0,0 +1,14 @@ + +
+ + +####### `local` required boolean false {#dev-containers-sync-onUpload-exec-local} + +Local specifies if the command should be executed locally instead of within the +container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/name.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/name.mdx new file mode 100755 index 0000000000..593f2816d1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/name.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `name` required string {#dev-containers-sync-onUpload-exec-name} + +Name is the name to show for this exec in the logs + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/onChange.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/onChange.mdx new file mode 100755 index 0000000000..d1f81f7ed9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec/onChange.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `onChange` required string[] {#dev-containers-sync-onUpload-exec-onChange} + +OnChange is an array of file patterns that trigger this command execution + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote.mdx new file mode 100755 index 0000000000..d14bc9a5e0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote.mdx @@ -0,0 +1,18 @@ + +import PartialExecRemotereference from "./execRemote_reference.mdx" + + +
+ + +###### `execRemote` required {#dev-containers-sync-onUpload-execRemote} + +Defines what commands should be executed on the container side if a change is uploaded and applied in the target +container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/args.mdx new file mode 100755 index 0000000000..4d186665f1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/args.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `args` required string[] {#dev-containers-sync-onUpload-execRemote-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/command.mdx new file mode 100755 index 0000000000..aee3c5f0c1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/command.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `command` required string {#dev-containers-sync-onUpload-execRemote-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch.mdx new file mode 100755 index 0000000000..0b56b162ad --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch.mdx @@ -0,0 +1,19 @@ + +import PartialOnBatchreference from "./onBatch_reference.mdx" + + +
+ + +####### `onBatch` required {#dev-containers-sync-onUpload-execRemote-onBatch} + +OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish +and then will continue execution. This is useful for commands +that shouldn't be executed after every single change that may take a little bit longer like recompiling etc. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/args.mdx new file mode 100755 index 0000000000..1752d1d3f7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/args.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `args` required string[] {#dev-containers-sync-onUpload-execRemote-onBatch-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/command.mdx new file mode 100755 index 0000000000..0a0282e499 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch/command.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `command` required string {#dev-containers-sync-onUpload-execRemote-onBatch-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch_reference.mdx new file mode 100755 index 0000000000..7dcaed2521 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onBatch_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onBatch/command.mdx" +import PartialArgs from "./onBatch/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate.mdx new file mode 100755 index 0000000000..851c157899 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate.mdx @@ -0,0 +1,18 @@ + +import PartialOnDirCreatereference from "./onDirCreate_reference.mdx" + + +
+ + +####### `onDirCreate` required {#dev-containers-sync-onUpload-execRemote-onDirCreate} + +OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/args.mdx new file mode 100755 index 0000000000..42b0129537 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/args.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `args` required string[] {#dev-containers-sync-onUpload-execRemote-onDirCreate-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/command.mdx new file mode 100755 index 0000000000..21a776f5b4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate/command.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `command` required string {#dev-containers-sync-onUpload-execRemote-onDirCreate-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate_reference.mdx new file mode 100755 index 0000000000..16655c9563 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onDirCreate_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onDirCreate/command.mdx" +import PartialArgs from "./onDirCreate/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange.mdx new file mode 100755 index 0000000000..419c8a7aaf --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange.mdx @@ -0,0 +1,18 @@ + +import PartialOnFileChangereference from "./onFileChange_reference.mdx" + + +
+ + +####### `onFileChange` required {#dev-containers-sync-onUpload-execRemote-onFileChange} + +OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/args.mdx new file mode 100755 index 0000000000..5eecd8338b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/args.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `args` required string[] {#dev-containers-sync-onUpload-execRemote-onFileChange-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/command.mdx new file mode 100755 index 0000000000..c82b5d5787 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange/command.mdx @@ -0,0 +1,13 @@ + +
+ + +######## `command` required string {#dev-containers-sync-onUpload-execRemote-onFileChange-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange_reference.mdx new file mode 100755 index 0000000000..d76cd3c821 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote/onFileChange_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onFileChange/command.mdx" +import PartialArgs from "./onFileChange/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote_reference.mdx new file mode 100755 index 0000000000..87652a6808 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/execRemote_reference.mdx @@ -0,0 +1,63 @@ + +import PartialCommand from "./execRemote/command.mdx" +import PartialArgs from "./execRemote/args.mdx" +import PartialOnFileChangereference from "./execRemote/onFileChange_reference.mdx" +import PartialOnDirCreatereference from "./execRemote/onDirCreate_reference.mdx" +import PartialOnBatchreference from "./execRemote/onBatch_reference.mdx" + + + + + + + + +
+ + +####### `onFileChange` required {#dev-containers-sync-onUpload-execRemote-onFileChange} + +OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
+ + + +
+ + +####### `onDirCreate` required {#dev-containers-sync-onUpload-execRemote-onDirCreate} + +OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
+ + + +
+ + +####### `onBatch` required {#dev-containers-sync-onUpload-execRemote-onBatch} + +OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish +and then will continue execution. This is useful for commands +that shouldn't be executed after every single change that may take a little bit longer like recompiling etc. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec_reference.mdx new file mode 100755 index 0000000000..ec26297466 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/exec_reference.mdx @@ -0,0 +1,24 @@ + +import PartialName from "./exec/name.mdx" +import PartialCommand from "./exec/command.mdx" +import PartialArgs from "./exec/args.mdx" +import PartialFailOnError from "./exec/failOnError.mdx" +import PartialLocal from "./exec/local.mdx" +import PartialOnChange from "./exec/onChange.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/restartContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/restartContainer.mdx new file mode 100755 index 0000000000..45cce1df1a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload/restartContainer.mdx @@ -0,0 +1,15 @@ + +
+ + +###### `restartContainer` required boolean false {#dev-containers-sync-onUpload-restartContainer} + +If true restart container will try to restart the container after a change has been made. Make sure that +images.*.injectRestartHelper is enabled for the container that should be restarted or the devspace-restart-helper +script is present in the container root folder. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload_reference.mdx new file mode 100755 index 0000000000..cfdcef9684 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/onUpload_reference.mdx @@ -0,0 +1,39 @@ + +import PartialRestartContainer from "./onUpload/restartContainer.mdx" +import PartialExecreference from "./onUpload/exec_reference.mdx" +import PartialExecRemotereference from "./onUpload/execRemote_reference.mdx" + + + + + +
+ + +###### `exec` required object[] {#dev-containers-sync-onUpload-exec} + +Exec will execute the given commands in order after a sync operation + + + + + + +
+ + + +
+ + +###### `execRemote` required {#dev-containers-sync-onUpload-execRemote} + +Defines what commands should be executed on the container side if a change is uploaded and applied in the target +container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/path.mdx new file mode 100755 index 0000000000..d839239fc0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/path.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `path` required string {#dev-containers-sync-path} + +Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.' +to specify either the local or remote working directory. This is valid for example: .:. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/polling.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/polling.mdx new file mode 100755 index 0000000000..53750fca74 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/polling.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `polling` required boolean false {#dev-containers-sync-polling} + +Polling will tell the remote container to use polling instead of inotify + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/printLogs.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/printLogs.mdx new file mode 100755 index 0000000000..7e4ae7aae3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/printLogs.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `printLogs` required boolean false {#dev-containers-sync-printLogs} + +PrintLogs defines if sync logs should be displayed on the terminal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/startContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/startContainer.mdx new file mode 100755 index 0000000000..c491ea1943 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/startContainer.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `startContainer` required boolean false {#dev-containers-sync-startContainer} + +StartContainer will start the container after initial sync is done. This will +inject a devspacehelper into the pod and you need to define dev.*.command for +this to work. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludeFile.mdx new file mode 100755 index 0000000000..6dd7925041 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `uploadExcludeFile` required string {#dev-containers-sync-uploadExcludeFile} + +UploadExcludeFile loads the file patterns to exclude from uploading from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludePaths.mdx new file mode 100755 index 0000000000..12db3edb51 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/uploadExcludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `uploadExcludePaths` required string[] {#dev-containers-sync-uploadExcludePaths} + +UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/waitInitialSync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/waitInitialSync.mdx new file mode 100755 index 0000000000..cd956043ba --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync/waitInitialSync.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `waitInitialSync` required boolean false {#dev-containers-sync-waitInitialSync} + +WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/sync_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync_reference.mdx new file mode 100755 index 0000000000..b9706fa7e0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/sync_reference.mdx @@ -0,0 +1,50 @@ + +import PartialPath from "./sync/path.mdx" +import PartialGroupexclude from "./sync/group_exclude.mdx" +import PartialGroupactions from "./sync/group_actions.mdx" +import PartialGroupinitialsync from "./sync/group_initial_sync.mdx" +import PartialGrouponedirection from "./sync/group_one_direction.mdx" +import PartialBandwidthLimitsreference from "./sync/bandwidthLimits_reference.mdx" +import PartialPolling from "./sync/polling.mdx" +import PartialNoWatch from "./sync/noWatch.mdx" +import PartialPrintLogs from "./sync/printLogs.mdx" + + + + + + + + + + + + + + + + + +
+ + +##### `bandwidthLimits` required {#dev-containers-sync-bandwidthLimits} + +BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this +sync configuration + + + + + + +
+ + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal.mdx new file mode 100755 index 0000000000..869b903815 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal.mdx @@ -0,0 +1,17 @@ + +import PartialTerminalreference from "./terminal_reference.mdx" + + +
+ + +#### `terminal` required {#dev-containers-terminal} + +Terminal allows you to tell DevSpace to open a terminal with screen support to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/command.mdx new file mode 100755 index 0000000000..a07bf5680c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/command.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `command` required string {#dev-containers-terminal-command} + +Command is the command that should be executed on terminal start. +This command is executed within a shell. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableReplace.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableReplace.mdx new file mode 100755 index 0000000000..bfe58beef2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableReplace.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `disableReplace` required boolean false {#dev-containers-terminal-disableReplace} + +DisableReplace tells DevSpace to not replace the pod or adjust its settings +to make sure the pod is sleeping when opening a terminal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableScreen.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableScreen.mdx new file mode 100755 index 0000000000..e8aa6abd61 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/disableScreen.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `disableScreen` required boolean false {#dev-containers-terminal-disableScreen} + +DisableScreen will disable screen which is used by DevSpace by default to preserve +sessions if connections interrupt or the session is lost. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/enabled.mdx new file mode 100755 index 0000000000..30fa9a6aac --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/enabled.mdx @@ -0,0 +1,16 @@ + +
+ + +##### `enabled` required boolean false {#dev-containers-terminal-enabled} + +If enabled is true, DevSpace will use the terminal. Can be also +used to disable the terminal if set to false. DevSpace makes sure +that within a pipeline only one dev configuration can open a terminal +at a time and subsequent dev terminals will fail. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/workDir.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/workDir.mdx new file mode 100755 index 0000000000..81f80128c3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal/workDir.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `workDir` required string {#dev-containers-terminal-workDir} + +WorkDir is the working directory that is used to execute the command in. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal_reference.mdx new file mode 100755 index 0000000000..479317c8c9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/terminal_reference.mdx @@ -0,0 +1,20 @@ + +import PartialCommand from "./terminal/command.mdx" +import PartialWorkDir from "./terminal/workDir.mdx" +import PartialEnabled from "./terminal/enabled.mdx" +import PartialDisableReplace from "./terminal/disableReplace.mdx" +import PartialDisableScreen from "./terminal/disableScreen.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers/workingDir.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers/workingDir.mdx new file mode 100755 index 0000000000..6bd3853b63 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers/workingDir.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `workingDir` required string {#dev-containers-workingDir} + +WorkingDir can be used to override the working dir of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/containers_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/containers_reference.mdx new file mode 100755 index 0000000000..addbeb4064 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/containers_reference.mdx @@ -0,0 +1,24 @@ + +import PartialGroupselector from "./containers/group_selector.mdx" +import PartialGroupmodifications from "./containers/group_modifications.mdx" +import PartialGroupports from "./containers/group_ports.mdx" +import PartialGroupsync from "./containers/group_sync.mdx" +import PartialGroupworkflows from "./containers/group_workflows.mdx" +import PartialGroupworkflowsbackground from "./containers/group_workflows_background.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/devImage.mdx b/docs/pages/configuration/_partials/v2beta1/dev/devImage.mdx new file mode 100755 index 0000000000..4d026682a2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/devImage.mdx @@ -0,0 +1,14 @@ + +
+ + +### `devImage` required string {#dev-devImage} + +DevImage is the image to use for this container and will replace the existing image +if necessary. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/env.mdx b/docs/pages/configuration/_partials/v2beta1/dev/env.mdx new file mode 100755 index 0000000000..eec327d76f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/env.mdx @@ -0,0 +1,18 @@ + +import PartialEnvreference from "./env_reference.mdx" + + +
+ + +### `env` required object[] {#dev-env} + +Env can be used to add environment variables to the container. DevSpace will +not replace existing environment variables if an environment variable is defined here. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/env/name.mdx b/docs/pages/configuration/_partials/v2beta1/dev/env/name.mdx new file mode 100755 index 0000000000..18a0594f65 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/env/name.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `name` required string {#dev-env-name} + +Name of the environment variable + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/env/value.mdx b/docs/pages/configuration/_partials/v2beta1/dev/env/value.mdx new file mode 100755 index 0000000000..3893fd6a49 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/env/value.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `value` required string {#dev-env-value} + +Value of the environment variable + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/env_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/env_reference.mdx new file mode 100755 index 0000000000..525ac84889 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/env_reference.mdx @@ -0,0 +1,8 @@ + +import PartialName from "./env/name.mdx" +import PartialValue from "./env/value.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_modifications.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_modifications.mdx new file mode 100755 index 0000000000..d6f89e4840 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_modifications.mdx @@ -0,0 +1,91 @@ + +import PartialDevImage from "./devImage.mdx" +import PartialCommand from "./command.mdx" +import PartialArgs from "./args.mdx" +import PartialWorkingDir from "./workingDir.mdx" +import PartialEnvreference from "./env_reference.mdx" +import PartialResourcesreference from "./resources_reference.mdx" +import PartialPersistPathsreference from "./persistPaths_reference.mdx" +import PartialPersistenceOptionsreference from "./persistenceOptions_reference.mdx" +import PartialPatchesreference from "./patches_reference.mdx" + +
+
Modifications
+ + + + + + +
+ + +### `env` required object[] {#dev-env} + +Env can be used to add environment variables to the container. DevSpace will +not replace existing environment variables if an environment variable is defined here. + + + + + + +
+ +
+ + +### `resources` required {#dev-resources} + +Resources can be used to override the resource definitions of the container + + + + + + +
+ +
+ + +### `persistPaths` required object[] {#dev-persistPaths} + +SSH allows you to create an SSH tunnel to this container + + + + + + +
+ +
+ + +### `persistenceOptions` required {#dev-persistenceOptions} + +PersistenceOptions are additional options for persisting paths within this pod + + + + + + +
+ +
+ + +### `patches` required object[] {#dev-patches} + +Patches are additional changes to the pod spec that should be applied + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_ports.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_ports.mdx new file mode 100755 index 0000000000..3e28f9efff --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_ports.mdx @@ -0,0 +1,38 @@ + +import PartialReversePortsreference from "./reversePorts_reference.mdx" +import PartialPortsreference from "./ports_reference.mdx" + +
+
Port Forwarding
+ + +
+ + +### `reversePorts` required object[] {#dev-reversePorts} + +ReversePorts are port mappings to make local ports available inside the container + + + + + + +
+ +
+ + +### `ports` required object[] {#dev-ports} + +Ports defines port mappings from the remote pod that should be forwarded to your local +computer + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_selector.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_selector.mdx new file mode 100755 index 0000000000..9a0228b496 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_selector.mdx @@ -0,0 +1,32 @@ + +import PartialImageSelector from "./imageSelector.mdx" +import PartialLabelSelector from "./labelSelector.mdx" +import PartialNamespace from "./namespace.mdx" +import PartialContainer from "./container.mdx" +import PartialArch from "./arch.mdx" +import PartialContainersreference from "./containers_reference.mdx" + +
+
Selector
+ + + + + + + +
+ + +### `containers` required <container_name>:object {#dev-containers} + + + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_sync.mdx new file mode 100755 index 0000000000..3e6f6490c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_sync.mdx @@ -0,0 +1,22 @@ + +import PartialSyncreference from "./sync_reference.mdx" + +
+
File Sync
+ + +
+ + +### `sync` required object[] {#dev-sync} + +Sync allows you to sync certain local paths with paths inside the container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_workflows.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_workflows.mdx new file mode 100755 index 0000000000..08f80cb86c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_workflows.mdx @@ -0,0 +1,52 @@ + +import PartialTerminalreference from "./terminal_reference.mdx" +import PartialLogsreference from "./logs_reference.mdx" +import PartialAttachreference from "./attach_reference.mdx" + +
+
Foreground Dev Workflows
+ + +
+ + +### `terminal` required {#dev-terminal} + +Terminal allows you to tell DevSpace to open a terminal with screen support to this container + + + + + + +
+ +
+ + +### `logs` required {#dev-logs} + +Logs allows you to tell DevSpace to stream logs from this container to the console + + + + + + +
+ +
+ + +### `attach` required {#dev-attach} + +Attach allows you to tell DevSpace to attach to this container + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/group_workflows_background.mdx b/docs/pages/configuration/_partials/v2beta1/dev/group_workflows_background.mdx new file mode 100755 index 0000000000..6934e46618 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/group_workflows_background.mdx @@ -0,0 +1,68 @@ + +import PartialSshreference from "./ssh_reference.mdx" +import PartialProxyCommandsreference from "./proxyCommands_reference.mdx" +import PartialRestartHelperreference from "./restartHelper_reference.mdx" +import PartialOpenreference from "./open_reference.mdx" + +
+
Background Dev Workflows
+ + +
+ + +### `ssh` required {#dev-ssh} + +PersistPaths allows you to persist certain paths within this container with a persistent volume claim + + + + + + +
+ +
+ + +### `proxyCommands` required object[] {#dev-proxyCommands} + +ProxyCommands allow you to proxy certain local commands to the container + + + + + + +
+ +
+ + +### `restartHelper` required {#dev-restartHelper} + +RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of +the container and restarting it and is injected via an annotation in the replaced pod. + + + + + + +
+ +
+ + +### `open` required object[] {#dev-open} + +Open defines urls that should be opened as soon as they are reachable + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/imageSelector.mdx b/docs/pages/configuration/_partials/v2beta1/dev/imageSelector.mdx new file mode 100755 index 0000000000..1992e1602a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/imageSelector.mdx @@ -0,0 +1,13 @@ + +
+ + +### `imageSelector` required string {#dev-imageSelector} + +ImageSelector to select a pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/labelSelector.mdx b/docs/pages/configuration/_partials/v2beta1/dev/labelSelector.mdx new file mode 100755 index 0000000000..d8be254210 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/labelSelector.mdx @@ -0,0 +1,13 @@ + +
+ + +### `labelSelector` required <labelSelector_name>:string {#dev-labelSelector} + +LabelSelector to select a pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/logs.mdx b/docs/pages/configuration/_partials/v2beta1/dev/logs.mdx new file mode 100755 index 0000000000..e01dcaa51a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/logs.mdx @@ -0,0 +1,17 @@ + +import PartialLogsreference from "./logs_reference.mdx" + + +
+ + +### `logs` required {#dev-logs} + +Logs allows you to tell DevSpace to stream logs from this container to the console + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/logs/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/logs/enabled.mdx new file mode 100755 index 0000000000..15e2a6411a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/logs/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `enabled` required boolean false {#dev-logs-enabled} + +Enabled can be used to enable printing container logs + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/logs/lastLines.mdx b/docs/pages/configuration/_partials/v2beta1/dev/logs/lastLines.mdx new file mode 100755 index 0000000000..8cb0cd5c81 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/logs/lastLines.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `lastLines` required integer {#dev-logs-lastLines} + +LastLines is the amount of lines to print of the running container initially + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/logs_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/logs_reference.mdx new file mode 100755 index 0000000000..5f227febcd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/logs_reference.mdx @@ -0,0 +1,8 @@ + +import PartialEnabled from "./logs/enabled.mdx" +import PartialLastLines from "./logs/lastLines.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/namespace.mdx b/docs/pages/configuration/_partials/v2beta1/dev/namespace.mdx new file mode 100755 index 0000000000..345457cadf --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +### `namespace` required string {#dev-namespace} + +Namespace where to select the pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/open.mdx b/docs/pages/configuration/_partials/v2beta1/dev/open.mdx new file mode 100755 index 0000000000..be274751d9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/open.mdx @@ -0,0 +1,17 @@ + +import PartialOpenreference from "./open_reference.mdx" + + +
+ + +### `open` required object[] {#dev-open} + +Open defines urls that should be opened as soon as they are reachable + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/open/url.mdx b/docs/pages/configuration/_partials/v2beta1/dev/open/url.mdx new file mode 100755 index 0000000000..f3db9f5c75 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/open/url.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `url` required string {#dev-open-url} + +URL is the url to open in the browser after it is available + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/open_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/open_reference.mdx new file mode 100755 index 0000000000..e38065c751 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/open_reference.mdx @@ -0,0 +1,4 @@ + +import PartialUrl from "./open/url.mdx" + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/patches.mdx b/docs/pages/configuration/_partials/v2beta1/dev/patches.mdx new file mode 100755 index 0000000000..a480995db6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/patches.mdx @@ -0,0 +1,17 @@ + +import PartialPatchesreference from "./patches_reference.mdx" + + +
+ + +### `patches` required object[] {#dev-patches} + +Patches are additional changes to the pod spec that should be applied + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/patches/op.mdx b/docs/pages/configuration/_partials/v2beta1/dev/patches/op.mdx new file mode 100755 index 0000000000..5b0329cff3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/patches/op.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `op` required string {#dev-patches-op} + +Operation is the path operation to do. Can be either replace, add or remove + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/patches/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/patches/path.mdx new file mode 100755 index 0000000000..f1256315b2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/patches/path.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `path` required string {#dev-patches-path} + +Path is the config path to apply the patch to + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/patches/value.mdx b/docs/pages/configuration/_partials/v2beta1/dev/patches/value.mdx new file mode 100755 index 0000000000..351aedc992 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/patches/value.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `value` required {#dev-patches-value} + +Value is the value to use for this patch. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/patches_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/patches_reference.mdx new file mode 100755 index 0000000000..d9c5d1ab4c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/patches_reference.mdx @@ -0,0 +1,12 @@ + +import PartialOp from "./patches/op.mdx" +import PartialPath from "./patches/path.mdx" +import PartialValue from "./patches/value.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths.mdx new file mode 100755 index 0000000000..9abbfcdd12 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths.mdx @@ -0,0 +1,17 @@ + +import PartialPersistPathsreference from "./persistPaths_reference.mdx" + + +
+ + +### `persistPaths` required object[] {#dev-persistPaths} + +SSH allows you to create an SSH tunnel to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer.mdx new file mode 100755 index 0000000000..4e23a76799 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer.mdx @@ -0,0 +1,17 @@ + +import PartialInitContainerreference from "./initContainer_reference.mdx" + + +
+ + +#### `initContainer` required {#dev-persistPaths-initContainer} + +InitContainer holds additional options for the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources.mdx new file mode 100755 index 0000000000..8c5d24c31a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./resources_reference.mdx" + + +
+ + +##### `resources` required {#dev-persistPaths-initContainer-resources} + +Resources are the resources used by the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/limits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/limits.mdx new file mode 100755 index 0000000000..d81d69768f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/limits.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `limits` required <limit_name>:string {#dev-persistPaths-initContainer-resources-limits} + +Limits are the limits part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/requests.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/requests.mdx new file mode 100755 index 0000000000..57b8ae0352 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources/requests.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `requests` required <request_name>:string {#dev-persistPaths-initContainer-resources-requests} + +Requests are the requests part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources_reference.mdx new file mode 100755 index 0000000000..760e0452b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer/resources_reference.mdx @@ -0,0 +1,8 @@ + +import PartialRequests from "./resources/requests.mdx" +import PartialLimits from "./resources/limits.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer_reference.mdx new file mode 100755 index 0000000000..f227ef703c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/initContainer_reference.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./initContainer/resources_reference.mdx" + + +
+ + +##### `resources` required {#dev-persistPaths-initContainer-resources} + +Resources are the resources used by the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/path.mdx new file mode 100755 index 0000000000..d749122cf3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/path.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `path` required string {#dev-persistPaths-path} + +Path is the container path that should get persisted. By default, DevSpace will create an init container +that will copy over the contents of this folder from the existing image. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/readOnly.mdx new file mode 100755 index 0000000000..fe039c06f5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/readOnly.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `readOnly` required boolean false {#dev-persistPaths-readOnly} + +ReadOnly will make the persistent path read only to the user + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/skipPopulate.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/skipPopulate.mdx new file mode 100755 index 0000000000..59b0140476 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/skipPopulate.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `skipPopulate` required boolean false {#dev-persistPaths-skipPopulate} + +SkipPopulate will not create an init container to copy over the existing contents if true + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/volumePath.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/volumePath.mdx new file mode 100755 index 0000000000..f0bb71e4ee --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths/volumePath.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `volumePath` required string {#dev-persistPaths-volumePath} + +VolumePath is the sub path on the volume that is mounted as persistent volume for this path + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistPaths_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths_reference.mdx new file mode 100755 index 0000000000..444339c782 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistPaths_reference.mdx @@ -0,0 +1,33 @@ + +import PartialPath from "./persistPaths/path.mdx" +import PartialVolumePath from "./persistPaths/volumePath.mdx" +import PartialReadOnly from "./persistPaths/readOnly.mdx" +import PartialSkipPopulate from "./persistPaths/skipPopulate.mdx" +import PartialInitContainerreference from "./persistPaths/initContainer_reference.mdx" + + + + + + + + + + + + + + +
+ + +#### `initContainer` required {#dev-persistPaths-initContainer} + +InitContainer holds additional options for the persistent path init container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions.mdx new file mode 100755 index 0000000000..632bce31dc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions.mdx @@ -0,0 +1,17 @@ + +import PartialPersistenceOptionsreference from "./persistenceOptions_reference.mdx" + + +
+ + +### `persistenceOptions` required {#dev-persistenceOptions} + +PersistenceOptions are additional options for persisting paths within this pod + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/accessModes.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/accessModes.mdx new file mode 100755 index 0000000000..074aa4b60f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/accessModes.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `accessModes` required string[] {#dev-persistenceOptions-accessModes} + +AccessModes are the access modes DevSpace should use for the persistent volume + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/name.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/name.mdx new file mode 100755 index 0000000000..4334069fc9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/name.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `name` required string {#dev-persistenceOptions-name} + +Name is the name of the PVC that should be created. If a PVC with that name +already exists, DevSpace will use that PVC instead of creating one. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/readOnly.mdx new file mode 100755 index 0000000000..776ffb2c8a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/readOnly.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `readOnly` required boolean false {#dev-persistenceOptions-readOnly} + +ReadOnly specifies if the volume should be read only + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/size.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/size.mdx new file mode 100755 index 0000000000..6b32a6487d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/size.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `size` required string {#dev-persistenceOptions-size} + +Size is the size of the created persistent volume in Kubernetes size notation like 5Gi + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/storageClassName.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/storageClassName.mdx new file mode 100755 index 0000000000..e85b57e06d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions/storageClassName.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `storageClassName` required string {#dev-persistenceOptions-storageClassName} + +StorageClassName is the storage type DevSpace should use for this persistent volume + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions_reference.mdx new file mode 100755 index 0000000000..f2f0d3fc41 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/persistenceOptions_reference.mdx @@ -0,0 +1,20 @@ + +import PartialSize from "./persistenceOptions/size.mdx" +import PartialStorageClassName from "./persistenceOptions/storageClassName.mdx" +import PartialAccessModes from "./persistenceOptions/accessModes.mdx" +import PartialReadOnly from "./persistenceOptions/readOnly.mdx" +import PartialName from "./persistenceOptions/name.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ports.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ports.mdx new file mode 100755 index 0000000000..2d14a28157 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ports.mdx @@ -0,0 +1,18 @@ + +import PartialPortsreference from "./ports_reference.mdx" + + +
+ + +### `ports` required object[] {#dev-ports} + +Ports defines port mappings from the remote pod that should be forwarded to your local +computer + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ports/bindAddress.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ports/bindAddress.mdx new file mode 100755 index 0000000000..2ea038974a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ports/bindAddress.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `bindAddress` required string {#dev-ports-bindAddress} + +BindAddress is the address DevSpace should listen on. Optional and defaults +to localhost. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ports/port.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ports/port.mdx new file mode 100755 index 0000000000..8a5d2c359f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ports/port.mdx @@ -0,0 +1,17 @@ + +
+ + +#### `port` required string {#dev-ports-port} + +Port is a port mapping that maps the localPort:remotePort. So if +you port forward the remote port will be available at the local port. +If you do reverse port forwarding, the local port will be available +at the remote port in the container. If only port is specified, local and +remote port are the same. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ports_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ports_reference.mdx new file mode 100755 index 0000000000..29059d68ab --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ports_reference.mdx @@ -0,0 +1,8 @@ + +import PartialPort from "./ports/port.mdx" +import PartialBindAddress from "./ports/bindAddress.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands.mdx new file mode 100755 index 0000000000..1d0b8e6699 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands.mdx @@ -0,0 +1,17 @@ + +import PartialProxyCommandsreference from "./proxyCommands_reference.mdx" + + +
+ + +### `proxyCommands` required object[] {#dev-proxyCommands} + +ProxyCommands allow you to proxy certain local commands to the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/command.mdx new file mode 100755 index 0000000000..061436ef5a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/command.mdx @@ -0,0 +1,15 @@ + +
+ + +#### `command` required string {#dev-proxyCommands-command} + +Command is the name of the command that should be available in the remote container. DevSpace +will create a small script for that inside the container that redirect command execution to +the local computer. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/env.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/env.mdx new file mode 100755 index 0000000000..26796597ca --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/env.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `env` required <env_name>:string {#dev-proxyCommands-env} + +Env are extra environment variables to set for the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/gitCredentials.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/gitCredentials.mdx new file mode 100755 index 0000000000..134d02c72c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/gitCredentials.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `gitCredentials` required boolean false {#dev-proxyCommands-gitCredentials} + +GitCredentials configures a git credentials helper inside the container that proxies local git credentials + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/localCommand.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/localCommand.mdx new file mode 100755 index 0000000000..b88583ab65 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/localCommand.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `localCommand` required string {#dev-proxyCommands-localCommand} + +LocalCommand can be used to run a different command than specified via the command option. By +default, this will be assumed to be the same as command. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/skipContainerEnv.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/skipContainerEnv.mdx new file mode 100755 index 0000000000..ee4cb71c90 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands/skipContainerEnv.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `skipContainerEnv` required boolean false {#dev-proxyCommands-skipContainerEnv} + +SkipContainerEnv will not forward the container environment variables to the local command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands_reference.mdx new file mode 100755 index 0000000000..0a0e054315 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/proxyCommands_reference.mdx @@ -0,0 +1,20 @@ + +import PartialGitCredentials from "./proxyCommands/gitCredentials.mdx" +import PartialCommand from "./proxyCommands/command.mdx" +import PartialLocalCommand from "./proxyCommands/localCommand.mdx" +import PartialSkipContainerEnv from "./proxyCommands/skipContainerEnv.mdx" +import PartialEnv from "./proxyCommands/env.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/resources.mdx b/docs/pages/configuration/_partials/v2beta1/dev/resources.mdx new file mode 100755 index 0000000000..9fa3ffe1be --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/resources.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./resources_reference.mdx" + + +
+ + +### `resources` required {#dev-resources} + +Resources can be used to override the resource definitions of the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/resources/limits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/resources/limits.mdx new file mode 100755 index 0000000000..57e32ccb2e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/resources/limits.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `limits` required <limit_name>:string {#dev-resources-limits} + +Limits are the limits part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/resources/requests.mdx b/docs/pages/configuration/_partials/v2beta1/dev/resources/requests.mdx new file mode 100755 index 0000000000..cc699c3866 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/resources/requests.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `requests` required <request_name>:string {#dev-resources-requests} + +Requests are the requests part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/resources_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/resources_reference.mdx new file mode 100755 index 0000000000..760e0452b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/resources_reference.mdx @@ -0,0 +1,8 @@ + +import PartialRequests from "./resources/requests.mdx" +import PartialLimits from "./resources/limits.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/restartHelper.mdx b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper.mdx new file mode 100755 index 0000000000..e0cdd58a1f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper.mdx @@ -0,0 +1,18 @@ + +import PartialRestartHelperreference from "./restartHelper_reference.mdx" + + +
+ + +### `restartHelper` required {#dev-restartHelper} + +RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of +the container and restarting it and is injected via an annotation in the replaced pod. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/inject.mdx b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/inject.mdx new file mode 100755 index 0000000000..9f6d2af23d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/inject.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `inject` required boolean false {#dev-restartHelper-inject} + +Inject signals DevSpace to inject the restart helper + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/path.mdx new file mode 100755 index 0000000000..245f03e148 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper/path.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `path` required string {#dev-restartHelper-path} + +Path defines the path to the restart helper that might be used if certain config +options are enabled + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/restartHelper_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper_reference.mdx new file mode 100755 index 0000000000..7e20b99369 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/restartHelper_reference.mdx @@ -0,0 +1,8 @@ + +import PartialPath from "./restartHelper/path.mdx" +import PartialInject from "./restartHelper/inject.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/reversePorts.mdx b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts.mdx new file mode 100755 index 0000000000..c0d121eb1d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts.mdx @@ -0,0 +1,17 @@ + +import PartialReversePortsreference from "./reversePorts_reference.mdx" + + +
+ + +### `reversePorts` required object[] {#dev-reversePorts} + +ReversePorts are port mappings to make local ports available inside the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/bindAddress.mdx b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/bindAddress.mdx new file mode 100755 index 0000000000..ab2354e57b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/bindAddress.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `bindAddress` required string {#dev-reversePorts-bindAddress} + +BindAddress is the address DevSpace should listen on. Optional and defaults +to localhost. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/port.mdx b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/port.mdx new file mode 100755 index 0000000000..b80f2a7da0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts/port.mdx @@ -0,0 +1,17 @@ + +
+ + +#### `port` required string {#dev-reversePorts-port} + +Port is a port mapping that maps the localPort:remotePort. So if +you port forward the remote port will be available at the local port. +If you do reverse port forwarding, the local port will be available +at the remote port in the container. If only port is specified, local and +remote port are the same. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/reversePorts_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts_reference.mdx new file mode 100755 index 0000000000..dcb1d18612 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/reversePorts_reference.mdx @@ -0,0 +1,8 @@ + +import PartialPort from "./reversePorts/port.mdx" +import PartialBindAddress from "./reversePorts/bindAddress.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh.mdx new file mode 100755 index 0000000000..27c61c64c0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh.mdx @@ -0,0 +1,17 @@ + +import PartialSshreference from "./ssh_reference.mdx" + + +
+ + +### `ssh` required {#dev-ssh} + +PersistPaths allows you to persist certain paths within this container with a persistent volume claim + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh/enabled.mdx new file mode 100755 index 0000000000..ddbc773aa9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh/enabled.mdx @@ -0,0 +1,15 @@ + +
+ + +#### `enabled` required boolean false {#dev-ssh-enabled} + +Enabled can be used to enable the ssh server within the container. By default, +DevSpace will generate the required keys and create an entry in your ~/.ssh/config +for this container that can be used via `ssh dev-config-name.dev-project-name.devspace` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh/localHostname.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh/localHostname.mdx new file mode 100755 index 0000000000..3aed80dc95 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh/localHostname.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `localHostname` required string {#dev-ssh-localHostname} + +LocalHostname is the local ssh host to write to the ~/.ssh/config + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh/localPort.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh/localPort.mdx new file mode 100755 index 0000000000..b08978a5f1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh/localPort.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `localPort` required integer {#dev-ssh-localPort} + +LocalPort is the local port to forward from, if empty will be random + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh/remoteAddress.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh/remoteAddress.mdx new file mode 100755 index 0000000000..bf02f21a7a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh/remoteAddress.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `remoteAddress` required string {#dev-ssh-remoteAddress} + +RemoteAddress is the address to listen to inside the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/ssh_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/ssh_reference.mdx new file mode 100755 index 0000000000..742145d83d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/ssh_reference.mdx @@ -0,0 +1,16 @@ + +import PartialEnabled from "./ssh/enabled.mdx" +import PartialLocalHostname from "./ssh/localHostname.mdx" +import PartialLocalPort from "./ssh/localPort.mdx" +import PartialRemoteAddress from "./ssh/remoteAddress.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync.mdx new file mode 100755 index 0000000000..4d6975053a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync.mdx @@ -0,0 +1,17 @@ + +import PartialSyncreference from "./sync_reference.mdx" + + +
+ + +### `sync` required object[] {#dev-sync} + +Sync allows you to sync certain local paths with paths inside the container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits.mdx new file mode 100755 index 0000000000..5c6c1ceadb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits.mdx @@ -0,0 +1,18 @@ + +import PartialBandwidthLimitsreference from "./bandwidthLimits_reference.mdx" + + +
+ + +#### `bandwidthLimits` required {#dev-sync-bandwidthLimits} + +BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this +sync configuration + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/download.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/download.mdx new file mode 100755 index 0000000000..062ed1a3bc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/download.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `download` required integer {#dev-sync-bandwidthLimits-download} + +Download is the download limit in kilo bytes per second + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/upload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/upload.mdx new file mode 100755 index 0000000000..f11970f8f5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits/upload.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `upload` required integer {#dev-sync-bandwidthLimits-upload} + +Upload is the upload limit in kilo bytes per second + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits_reference.mdx new file mode 100755 index 0000000000..79daa9612e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/bandwidthLimits_reference.mdx @@ -0,0 +1,8 @@ + +import PartialDownload from "./bandwidthLimits/download.mdx" +import PartialUpload from "./bandwidthLimits/upload.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/disableDownload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/disableDownload.mdx new file mode 100755 index 0000000000..e08e096706 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/disableDownload.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `disableDownload` required boolean false {#dev-sync-disableDownload} + +DisableDownload will disable downloading completely + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/disableUpload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/disableUpload.mdx new file mode 100755 index 0000000000..73722cb014 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/disableUpload.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `disableUpload` required boolean false {#dev-sync-disableUpload} + +DisableUpload will disable uploading completely + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludeFile.mdx new file mode 100755 index 0000000000..6e376c84a6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `downloadExcludeFile` required string {#dev-sync-downloadExcludeFile} + +DownloadExcludeFile loads the file patterns to exclude from downloading from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludePaths.mdx new file mode 100755 index 0000000000..d9aa02a35f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/downloadExcludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `downloadExcludePaths` required string[] {#dev-sync-downloadExcludePaths} + +DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/excludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/excludeFile.mdx new file mode 100755 index 0000000000..2df0d70147 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/excludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `excludeFile` required string {#dev-sync-excludeFile} + +ExcludeFile loads the file patterns to exclude from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/excludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/excludePaths.mdx new file mode 100755 index 0000000000..5a9fc2aa6b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/excludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `excludePaths` required string[] {#dev-sync-excludePaths} + +ExcludePaths is an array of file patterns in gitignore format to exclude. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/group_actions.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_actions.mdx new file mode 100755 index 0000000000..47870e845d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_actions.mdx @@ -0,0 +1,25 @@ + +import PartialStartContainer from "./startContainer.mdx" +import PartialOnUploadreference from "./onUpload_reference.mdx" + +
+
Sync-Triggered Actions
+ + + +
+ + +#### `onUpload` required {#dev-sync-onUpload} + +OnUpload can be used to execute certain commands on uploading either in the container or locally as +well as restart the container after a file changed has happened. + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/group_exclude.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_exclude.mdx new file mode 100755 index 0000000000..a42916e12e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_exclude.mdx @@ -0,0 +1,19 @@ + +import PartialExcludePaths from "./excludePaths.mdx" +import PartialExcludeFile from "./excludeFile.mdx" +import PartialDownloadExcludePaths from "./downloadExcludePaths.mdx" +import PartialDownloadExcludeFile from "./downloadExcludeFile.mdx" +import PartialUploadExcludePaths from "./uploadExcludePaths.mdx" +import PartialUploadExcludeFile from "./uploadExcludeFile.mdx" + +
+
Exclude Paths From File Sync
+ + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/group_initial_sync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_initial_sync.mdx new file mode 100755 index 0000000000..309340de3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_initial_sync.mdx @@ -0,0 +1,13 @@ + +import PartialInitialSync from "./initialSync.mdx" +import PartialWaitInitialSync from "./waitInitialSync.mdx" +import PartialInitialSyncCompareBy from "./initialSyncCompareBy.mdx" + +
+
Initial Sync
+ + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/group_one_direction.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_one_direction.mdx new file mode 100755 index 0000000000..959fb43f95 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/group_one_direction.mdx @@ -0,0 +1,11 @@ + +import PartialDisableDownload from "./disableDownload.mdx" +import PartialDisableUpload from "./disableUpload.mdx" + +
+
One-Directional Sync
+ + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSync.mdx new file mode 100755 index 0000000000..df992dbbfe --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSync.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `initialSync` required string {#dev-sync-initialSync} + +InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSyncCompareBy.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSyncCompareBy.mdx new file mode 100755 index 0000000000..4b5b505173 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/initialSyncCompareBy.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `initialSyncCompareBy` required string {#dev-sync-initialSyncCompareBy} + +InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/noWatch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/noWatch.mdx new file mode 100755 index 0000000000..03d69fbb6f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/noWatch.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `noWatch` required boolean false {#dev-sync-noWatch} + +NoWatch will terminate the sync after the initial sync is done + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload.mdx new file mode 100755 index 0000000000..9af733f43e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload.mdx @@ -0,0 +1,18 @@ + +import PartialOnUploadreference from "./onUpload_reference.mdx" + + +
+ + +#### `onUpload` required {#dev-sync-onUpload} + +OnUpload can be used to execute certain commands on uploading either in the container or locally as +well as restart the container after a file changed has happened. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec.mdx new file mode 100755 index 0000000000..99a0d9ca5d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec.mdx @@ -0,0 +1,17 @@ + +import PartialExecreference from "./exec_reference.mdx" + + +
+ + +##### `exec` required object[] {#dev-sync-onUpload-exec} + +Exec will execute the given commands in order after a sync operation + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/args.mdx new file mode 100755 index 0000000000..68a21461d6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/args.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `args` required string[] {#dev-sync-onUpload-exec-args} + +Args are arguments to pass to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/command.mdx new file mode 100755 index 0000000000..ccada6575c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/command.mdx @@ -0,0 +1,14 @@ + +
+ + +###### `command` required string {#dev-sync-onUpload-exec-command} + +Command is the command to execute. If no args are specified this is executed +within a shell. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/failOnError.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/failOnError.mdx new file mode 100755 index 0000000000..983e945e9a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/failOnError.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `failOnError` required boolean false {#dev-sync-onUpload-exec-failOnError} + +FailOnError specifies if the sync should fail if the command fails + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/local.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/local.mdx new file mode 100755 index 0000000000..5939ca5dcd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/local.mdx @@ -0,0 +1,14 @@ + +
+ + +###### `local` required boolean false {#dev-sync-onUpload-exec-local} + +Local specifies if the command should be executed locally instead of within the +container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/name.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/name.mdx new file mode 100755 index 0000000000..499be7a43f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/name.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `name` required string {#dev-sync-onUpload-exec-name} + +Name is the name to show for this exec in the logs + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/onChange.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/onChange.mdx new file mode 100755 index 0000000000..e121cc312f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec/onChange.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `onChange` required string[] {#dev-sync-onUpload-exec-onChange} + +OnChange is an array of file patterns that trigger this command execution + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote.mdx new file mode 100755 index 0000000000..27ddadb987 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote.mdx @@ -0,0 +1,18 @@ + +import PartialExecRemotereference from "./execRemote_reference.mdx" + + +
+ + +##### `execRemote` required {#dev-sync-onUpload-execRemote} + +Defines what commands should be executed on the container side if a change is uploaded and applied in the target +container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/args.mdx new file mode 100755 index 0000000000..95df910373 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/args.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `args` required string[] {#dev-sync-onUpload-execRemote-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/command.mdx new file mode 100755 index 0000000000..70a1890a46 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/command.mdx @@ -0,0 +1,13 @@ + +
+ + +###### `command` required string {#dev-sync-onUpload-execRemote-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch.mdx new file mode 100755 index 0000000000..054b905ea3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch.mdx @@ -0,0 +1,19 @@ + +import PartialOnBatchreference from "./onBatch_reference.mdx" + + +
+ + +###### `onBatch` required {#dev-sync-onUpload-execRemote-onBatch} + +OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish +and then will continue execution. This is useful for commands +that shouldn't be executed after every single change that may take a little bit longer like recompiling etc. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/args.mdx new file mode 100755 index 0000000000..3e89b3e9c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/args.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `args` required string[] {#dev-sync-onUpload-execRemote-onBatch-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/command.mdx new file mode 100755 index 0000000000..474a6c1f3f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch/command.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `command` required string {#dev-sync-onUpload-execRemote-onBatch-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch_reference.mdx new file mode 100755 index 0000000000..7dcaed2521 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onBatch_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onBatch/command.mdx" +import PartialArgs from "./onBatch/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate.mdx new file mode 100755 index 0000000000..6cbbfcd9f2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate.mdx @@ -0,0 +1,18 @@ + +import PartialOnDirCreatereference from "./onDirCreate_reference.mdx" + + +
+ + +###### `onDirCreate` required {#dev-sync-onUpload-execRemote-onDirCreate} + +OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/args.mdx new file mode 100755 index 0000000000..8bccfa5d9e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/args.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `args` required string[] {#dev-sync-onUpload-execRemote-onDirCreate-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/command.mdx new file mode 100755 index 0000000000..3587a40120 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate/command.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `command` required string {#dev-sync-onUpload-execRemote-onDirCreate-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate_reference.mdx new file mode 100755 index 0000000000..16655c9563 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onDirCreate_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onDirCreate/command.mdx" +import PartialArgs from "./onDirCreate/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange.mdx new file mode 100755 index 0000000000..119e6fbb54 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange.mdx @@ -0,0 +1,18 @@ + +import PartialOnFileChangereference from "./onFileChange_reference.mdx" + + +
+ + +###### `onFileChange` required {#dev-sync-onUpload-execRemote-onFileChange} + +OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/args.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/args.mdx new file mode 100755 index 0000000000..079f19da80 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/args.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `args` required string[] {#dev-sync-onUpload-execRemote-onFileChange-args} + +Args are arguments that should get appended to the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/command.mdx new file mode 100755 index 0000000000..b01fc7bd0e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange/command.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `command` required string {#dev-sync-onUpload-execRemote-onFileChange-command} + +Command is the command that should get executed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange_reference.mdx new file mode 100755 index 0000000000..d76cd3c821 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote/onFileChange_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./onFileChange/command.mdx" +import PartialArgs from "./onFileChange/args.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote_reference.mdx new file mode 100755 index 0000000000..5edb1046a9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/execRemote_reference.mdx @@ -0,0 +1,63 @@ + +import PartialCommand from "./execRemote/command.mdx" +import PartialArgs from "./execRemote/args.mdx" +import PartialOnFileChangereference from "./execRemote/onFileChange_reference.mdx" +import PartialOnDirCreatereference from "./execRemote/onDirCreate_reference.mdx" +import PartialOnBatchreference from "./execRemote/onBatch_reference.mdx" + + + + + + + + +
+ + +###### `onFileChange` required {#dev-sync-onUpload-execRemote-onFileChange} + +OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
+ + + +
+ + +###### `onDirCreate` required {#dev-sync-onUpload-execRemote-onDirCreate} + +OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish +and then will continue to upload files & create folders + + + + + + +
+ + + +
+ + +###### `onBatch` required {#dev-sync-onUpload-execRemote-onBatch} + +OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish +and then will continue execution. This is useful for commands +that shouldn't be executed after every single change that may take a little bit longer like recompiling etc. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec_reference.mdx new file mode 100755 index 0000000000..ec26297466 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/exec_reference.mdx @@ -0,0 +1,24 @@ + +import PartialName from "./exec/name.mdx" +import PartialCommand from "./exec/command.mdx" +import PartialArgs from "./exec/args.mdx" +import PartialFailOnError from "./exec/failOnError.mdx" +import PartialLocal from "./exec/local.mdx" +import PartialOnChange from "./exec/onChange.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/restartContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/restartContainer.mdx new file mode 100755 index 0000000000..4fb8faaabc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload/restartContainer.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `restartContainer` required boolean false {#dev-sync-onUpload-restartContainer} + +If true restart container will try to restart the container after a change has been made. Make sure that +images.*.injectRestartHelper is enabled for the container that should be restarted or the devspace-restart-helper +script is present in the container root folder. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload_reference.mdx new file mode 100755 index 0000000000..bab9f58bc4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/onUpload_reference.mdx @@ -0,0 +1,39 @@ + +import PartialRestartContainer from "./onUpload/restartContainer.mdx" +import PartialExecreference from "./onUpload/exec_reference.mdx" +import PartialExecRemotereference from "./onUpload/execRemote_reference.mdx" + + + + + +
+ + +##### `exec` required object[] {#dev-sync-onUpload-exec} + +Exec will execute the given commands in order after a sync operation + + + + + + +
+ + + +
+ + +##### `execRemote` required {#dev-sync-onUpload-execRemote} + +Defines what commands should be executed on the container side if a change is uploaded and applied in the target +container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/path.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/path.mdx new file mode 100755 index 0000000000..e94c79461a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/path.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `path` required string {#dev-sync-path} + +Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.' +to specify either the local or remote working directory. This is valid for example: .:. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/polling.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/polling.mdx new file mode 100755 index 0000000000..6c1c59ab8f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/polling.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `polling` required boolean false {#dev-sync-polling} + +Polling will tell the remote container to use polling instead of inotify + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/printLogs.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/printLogs.mdx new file mode 100755 index 0000000000..f055861224 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/printLogs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `printLogs` required boolean false {#dev-sync-printLogs} + +PrintLogs defines if sync logs should be displayed on the terminal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/startContainer.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/startContainer.mdx new file mode 100755 index 0000000000..6b9c6c7d58 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/startContainer.mdx @@ -0,0 +1,15 @@ + +
+ + +#### `startContainer` required boolean false {#dev-sync-startContainer} + +StartContainer will start the container after initial sync is done. This will +inject a devspacehelper into the pod and you need to define dev.*.command for +this to work. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludeFile.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludeFile.mdx new file mode 100755 index 0000000000..709d68ec84 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludeFile.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `uploadExcludeFile` required string {#dev-sync-uploadExcludeFile} + +UploadExcludeFile loads the file patterns to exclude from uploading from a file. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludePaths.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludePaths.mdx new file mode 100755 index 0000000000..8de12f80f5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/uploadExcludePaths.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `uploadExcludePaths` required string[] {#dev-sync-uploadExcludePaths} + +UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync/waitInitialSync.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync/waitInitialSync.mdx new file mode 100755 index 0000000000..412c956880 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync/waitInitialSync.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `waitInitialSync` required boolean false {#dev-sync-waitInitialSync} + +WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/sync_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/sync_reference.mdx new file mode 100755 index 0000000000..e14b2bae27 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/sync_reference.mdx @@ -0,0 +1,50 @@ + +import PartialPath from "./sync/path.mdx" +import PartialGroupexclude from "./sync/group_exclude.mdx" +import PartialGroupactions from "./sync/group_actions.mdx" +import PartialGroupinitialsync from "./sync/group_initial_sync.mdx" +import PartialGrouponedirection from "./sync/group_one_direction.mdx" +import PartialBandwidthLimitsreference from "./sync/bandwidthLimits_reference.mdx" +import PartialPolling from "./sync/polling.mdx" +import PartialNoWatch from "./sync/noWatch.mdx" +import PartialPrintLogs from "./sync/printLogs.mdx" + + + + + + + + + + + + + + + + + +
+ + +#### `bandwidthLimits` required {#dev-sync-bandwidthLimits} + +BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this +sync configuration + + + + + + +
+ + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal.mdx new file mode 100755 index 0000000000..bac099ca29 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal.mdx @@ -0,0 +1,17 @@ + +import PartialTerminalreference from "./terminal_reference.mdx" + + +
+ + +### `terminal` required {#dev-terminal} + +Terminal allows you to tell DevSpace to open a terminal with screen support to this container + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal/command.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal/command.mdx new file mode 100755 index 0000000000..9db67d2c5b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal/command.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `command` required string {#dev-terminal-command} + +Command is the command that should be executed on terminal start. +This command is executed within a shell. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableReplace.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableReplace.mdx new file mode 100755 index 0000000000..37352a7e2c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableReplace.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `disableReplace` required boolean false {#dev-terminal-disableReplace} + +DisableReplace tells DevSpace to not replace the pod or adjust its settings +to make sure the pod is sleeping when opening a terminal + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableScreen.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableScreen.mdx new file mode 100755 index 0000000000..25d2678824 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal/disableScreen.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `disableScreen` required boolean false {#dev-terminal-disableScreen} + +DisableScreen will disable screen which is used by DevSpace by default to preserve +sessions if connections interrupt or the session is lost. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal/enabled.mdx new file mode 100755 index 0000000000..a73c21ab12 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal/enabled.mdx @@ -0,0 +1,16 @@ + +
+ + +#### `enabled` required boolean false {#dev-terminal-enabled} + +If enabled is true, DevSpace will use the terminal. Can be also +used to disable the terminal if set to false. DevSpace makes sure +that within a pipeline only one dev configuration can open a terminal +at a time and subsequent dev terminals will fail. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal/workDir.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal/workDir.mdx new file mode 100755 index 0000000000..fb03e1c217 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal/workDir.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `workDir` required string {#dev-terminal-workDir} + +WorkDir is the working directory that is used to execute the command in. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev/terminal_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev/terminal_reference.mdx new file mode 100755 index 0000000000..479317c8c9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/terminal_reference.mdx @@ -0,0 +1,20 @@ + +import PartialCommand from "./terminal/command.mdx" +import PartialWorkDir from "./terminal/workDir.mdx" +import PartialEnabled from "./terminal/enabled.mdx" +import PartialDisableReplace from "./terminal/disableReplace.mdx" +import PartialDisableScreen from "./terminal/disableScreen.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/dev/workingDir.mdx b/docs/pages/configuration/_partials/v2beta1/dev/workingDir.mdx new file mode 100755 index 0000000000..0b9520d1d5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev/workingDir.mdx @@ -0,0 +1,13 @@ + +
+ + +### `workingDir` required string {#dev-workingDir} + +WorkingDir can be used to override the working dir of the container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/dev_reference.mdx b/docs/pages/configuration/_partials/v2beta1/dev_reference.mdx new file mode 100755 index 0000000000..129a3ee7bb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/dev_reference.mdx @@ -0,0 +1,24 @@ + +import PartialGroupselector from "./dev/group_selector.mdx" +import PartialGroupmodifications from "./dev/group_modifications.mdx" +import PartialGroupports from "./dev/group_ports.mdx" +import PartialGroupsync from "./dev/group_sync.mdx" +import PartialGroupworkflows from "./dev/group_workflows.mdx" +import PartialGroupworkflowsbackground from "./dev/group_workflows_background.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/functions.mdx b/docs/pages/configuration/_partials/v2beta1/functions.mdx new file mode 100755 index 0000000000..8a8cc3a11a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/functions.mdx @@ -0,0 +1,14 @@ + +
+ + +## `functions` required <function_name>:string {#functions} + +Functions are POSIX functions that can be used within pipelines. Those functions can also be imported by +imports. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images.mdx b/docs/pages/configuration/_partials/v2beta1/images.mdx new file mode 100755 index 0000000000..2ff97aaf8c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images.mdx @@ -0,0 +1,32 @@ + +import PartialImagesreference from "./images_reference.mdx" + + +
+ + +## `images` required <image_name>:object {#images} + +Images holds configuration of how DevSpace should build images. By default, DevSpace will build all defined images. +If you are using a custom pipeline, you can dynamically define which image is built at which time during the +execution. + + + + +
+ + +## `` required string {#images-name} + +Name of the image, will be filled automatically + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/appendDockerfileInstructions.mdx b/docs/pages/configuration/_partials/v2beta1/images/appendDockerfileInstructions.mdx new file mode 100755 index 0000000000..b192a8fa3a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/appendDockerfileInstructions.mdx @@ -0,0 +1,14 @@ + +
+ + +### `appendDockerfileInstructions` required string[] {#images-appendDockerfileInstructions} + +AppendDockerfileInstructions are instructions that will be appended to the Dockerfile that is build +at the current build target and are appended before the entrypoint and cmd instructions + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildArgs.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildArgs.mdx new file mode 100755 index 0000000000..3b91437b09 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +### `buildArgs` required <buildArg_name>:string {#images-buildArgs} + +BuildArgs are the build args that are to the build + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit.mdx new file mode 100755 index 0000000000..6d1ed29170 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit.mdx @@ -0,0 +1,17 @@ + +import PartialBuildKitreference from "./buildKit_reference.mdx" + + +
+ + +### `buildKit` required {#images-buildKit} + +BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/args.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/args.mdx new file mode 100755 index 0000000000..676c5a5e95 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/args.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `args` required string[] {#images-buildKit-args} + +Args are additional arguments to call docker buildx build with + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/command.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/command.mdx new file mode 100755 index 0000000000..4be2ff3171 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/command.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `command` required string[] {#images-buildKit-command} + +Command to override the base command to create a builder and build images. Defaults to ["docker", "buildx"] + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster.mdx new file mode 100755 index 0000000000..56744c44ab --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster.mdx @@ -0,0 +1,17 @@ + +import PartialInClusterreference from "./inCluster_reference.mdx" + + +
+ + +#### `inCluster` required {#images-buildKit-inCluster} + +InCluster if specified, DevSpace will use BuildKit to build the image within the cluster + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/createArgs.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/createArgs.mdx new file mode 100755 index 0000000000..6b7b510600 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/createArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `createArgs` required string[] {#images-buildKit-inCluster-createArgs} + +CreateArgs are additional args to create the builder with. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/image.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/image.mdx new file mode 100755 index 0000000000..db107fc112 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/image.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `image` required string {#images-buildKit-inCluster-image} + +Image is the docker image to use for the BuildKit deployment + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/name.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/name.mdx new file mode 100755 index 0000000000..4bff9f23e4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/name.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `name` required string {#images-buildKit-inCluster-name} + +Name is the name of the builder to use. If omitted, DevSpace will try to create +or reuse a builder in the form devspace-$NAMESPACE + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/namespace.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/namespace.mdx new file mode 100755 index 0000000000..ddc7176462 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/namespace.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `namespace` required string {#images-buildKit-inCluster-namespace} + +Namespace where to create the builder deployment in. Defaults to the current +active namespace. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noCreate.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noCreate.mdx new file mode 100755 index 0000000000..fb969fe8af --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noCreate.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `noCreate` required boolean false {#images-buildKit-inCluster-noCreate} + +NoCreate. By default, DevSpace will try to create a new builder if it cannot be found. +If this is true, DevSpace will fail if the specified builder cannot be found. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noLoad.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noLoad.mdx new file mode 100755 index 0000000000..eb8ba8c5bb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noLoad.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `noLoad` required boolean false {#images-buildKit-inCluster-noLoad} + +NoLoad if enabled, DevSpace will not try to load the built image into the local docker +daemon if skip push is defined + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noRecreate.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noRecreate.mdx new file mode 100755 index 0000000000..c2f1d0e918 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/noRecreate.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `noRecreate` required boolean false {#images-buildKit-inCluster-noRecreate} + +NoRecreate. By default, DevSpace will try to recreate the builder if the builder configuration +in the devspace.yaml differs from the actual builder configuration. If this is +true, DevSpace will not try to do that. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/nodeSelector.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/nodeSelector.mdx new file mode 100755 index 0000000000..fc46d4e41b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/nodeSelector.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `nodeSelector` required string {#images-buildKit-inCluster-nodeSelector} + +NodeSelector is the node selector to use for the BuildKit deployment + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/rootless.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/rootless.mdx new file mode 100755 index 0000000000..8b461ee254 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster/rootless.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `rootless` required boolean false {#images-buildKit-inCluster-rootless} + +Rootless if enabled will create a rootless builder deployment. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster_reference.mdx new file mode 100755 index 0000000000..d10049a657 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/inCluster_reference.mdx @@ -0,0 +1,36 @@ + +import PartialName from "./inCluster/name.mdx" +import PartialNamespace from "./inCluster/namespace.mdx" +import PartialRootless from "./inCluster/rootless.mdx" +import PartialImage from "./inCluster/image.mdx" +import PartialNodeSelector from "./inCluster/nodeSelector.mdx" +import PartialNoCreate from "./inCluster/noCreate.mdx" +import PartialNoRecreate from "./inCluster/noRecreate.mdx" +import PartialNoLoad from "./inCluster/noLoad.mdx" +import PartialCreateArgs from "./inCluster/createArgs.mdx" + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit/preferMinikube.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit/preferMinikube.mdx new file mode 100755 index 0000000000..d9085e5b33 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit/preferMinikube.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `preferMinikube` required boolean false {#images-buildKit-preferMinikube} + +PreferMinikube if false, will not try to use the minikube docker daemon to build the image + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/buildKit_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/buildKit_reference.mdx new file mode 100755 index 0000000000..001fe4c6f7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/buildKit_reference.mdx @@ -0,0 +1,29 @@ + +import PartialInClusterreference from "./buildKit/inCluster_reference.mdx" +import PartialPreferMinikube from "./buildKit/preferMinikube.mdx" +import PartialArgs from "./buildKit/args.mdx" +import PartialCommand from "./buildKit/command.mdx" + + +
+ + +#### `inCluster` required {#images-buildKit-inCluster} + +InCluster if specified, DevSpace will use BuildKit to build the image within the cluster + + + + + + +
+ + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/cmd.mdx b/docs/pages/configuration/_partials/v2beta1/images/cmd.mdx new file mode 100755 index 0000000000..115a50a2bb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/cmd.mdx @@ -0,0 +1,14 @@ + +
+ + +### `cmd` required string[] {#images-cmd} + +Cmd specifies the arguments for the entrypoint that will be appended +during build in memory to the dockerfile + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/context.mdx b/docs/pages/configuration/_partials/v2beta1/images/context.mdx new file mode 100755 index 0000000000..32d6085393 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/context.mdx @@ -0,0 +1,13 @@ + +
+ + +### `context` required string ./ {#images-context} + +Context is the context path to build with. Defaults to the current working directory + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/createPullSecret.mdx b/docs/pages/configuration/_partials/v2beta1/images/createPullSecret.mdx new file mode 100755 index 0000000000..71a798d6cd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/createPullSecret.mdx @@ -0,0 +1,14 @@ + +
+ + +### `createPullSecret` required boolean true {#images-createPullSecret} + +CreatePullSecret specifies if a pull secret should be created for this image in the +target namespace. Defaults to true + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/custom.mdx b/docs/pages/configuration/_partials/v2beta1/images/custom.mdx new file mode 100755 index 0000000000..fe5508e2d7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/custom.mdx @@ -0,0 +1,18 @@ + +import PartialCustomreference from "./custom_reference.mdx" + + +
+ + +### `custom` required {#images-custom} + +Custom if custom is specified, DevSpace will build the image with the help of +a custom script. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/custom/command.mdx b/docs/pages/configuration/_partials/v2beta1/images/custom/command.mdx new file mode 100755 index 0000000000..a336277e28 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/custom/command.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `command` required string {#images-custom-command} + +Command to execute to build the image. You can use ${runtime.images.my-image.image} and ${runtime.image.my-image.tag} +to reference the image and tag that should get built. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/custom/onChange.mdx b/docs/pages/configuration/_partials/v2beta1/images/custom/onChange.mdx new file mode 100755 index 0000000000..67a2f2a14e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/custom/onChange.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `onChange` required string[] {#images-custom-onChange} + +OnChange will determine when the command should be rerun + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/custom_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/custom_reference.mdx new file mode 100755 index 0000000000..d0826ed7ee --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/custom_reference.mdx @@ -0,0 +1,8 @@ + +import PartialCommand from "./custom/command.mdx" +import PartialOnChange from "./custom/onChange.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker.mdx new file mode 100755 index 0000000000..bd5864a0c3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker.mdx @@ -0,0 +1,17 @@ + +import PartialDockerreference from "./docker_reference.mdx" + + +
+ + +### `docker` required {#images-docker} + +Docker if docker is specified, DevSpace will build the image using the local docker daemon + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker/args.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker/args.mdx new file mode 100755 index 0000000000..6982e00572 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker/args.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `args` required string[] {#images-docker-args} + +Args are additional arguments to pass to the docker cli + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker/disableFallback.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker/disableFallback.mdx new file mode 100755 index 0000000000..1307971ed2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker/disableFallback.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `disableFallback` required boolean false {#images-docker-disableFallback} + +DisableFallback allows you to turn off kaniko building if docker isn't installed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker/preferMinikube.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker/preferMinikube.mdx new file mode 100755 index 0000000000..d72be468d9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker/preferMinikube.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `preferMinikube` required boolean false {#images-docker-preferMinikube} + +PreferMinikube allows you to turn off using the minikube docker daemon if the minikube +context is used. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker/useCli.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker/useCli.mdx new file mode 100755 index 0000000000..a0a892a9ec --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker/useCli.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `useCli` required boolean false {#images-docker-useCli} + +UseCLI specifies if DevSpace should use the docker cli for building + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/docker_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/docker_reference.mdx new file mode 100755 index 0000000000..08beb00f01 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/docker_reference.mdx @@ -0,0 +1,16 @@ + +import PartialDisableFallback from "./docker/disableFallback.mdx" +import PartialPreferMinikube from "./docker/preferMinikube.mdx" +import PartialUseCli from "./docker/useCli.mdx" +import PartialArgs from "./docker/args.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/dockerfile.mdx b/docs/pages/configuration/_partials/v2beta1/images/dockerfile.mdx new file mode 100755 index 0000000000..4f4dcdd8f0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/dockerfile.mdx @@ -0,0 +1,14 @@ + +
+ + +### `dockerfile` required string ./Dockerfile {#images-dockerfile} + +Dockerfile specifies a path (relative or absolute) to the dockerfile. Defaults +to ./Dockerfile + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/entrypoint.mdx b/docs/pages/configuration/_partials/v2beta1/images/entrypoint.mdx new file mode 100755 index 0000000000..871e78e3c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/entrypoint.mdx @@ -0,0 +1,14 @@ + +
+ + +### `entrypoint` required string[] {#images-entrypoint} + +Entrypoint specifies an entrypoint that will be appended to the dockerfile during +image build in memory. Example: ["sleep", "99999"] + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/group_buildconfig.mdx b/docs/pages/configuration/_partials/v2beta1/images/group_buildconfig.mdx new file mode 100755 index 0000000000..d03a08763d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/group_buildconfig.mdx @@ -0,0 +1,19 @@ + +import PartialDockerfile from "./dockerfile.mdx" +import PartialContext from "./context.mdx" +import PartialBuildArgs from "./buildArgs.mdx" +import PartialTarget from "./target.mdx" +import PartialNetwork from "./network.mdx" +import PartialRebuildStrategy from "./rebuildStrategy.mdx" + +
+
Build Configuration
+ + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/images/group_engines.mdx b/docs/pages/configuration/_partials/v2beta1/images/group_engines.mdx new file mode 100755 index 0000000000..0765f44aa5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/group_engines.mdx @@ -0,0 +1,68 @@ + +import PartialBuildKitreference from "./buildKit_reference.mdx" +import PartialDockerreference from "./docker_reference.mdx" +import PartialKanikoreference from "./kaniko_reference.mdx" +import PartialCustomreference from "./custom_reference.mdx" + +
+
Build Engines
+ + +
+ + +### `buildKit` required {#images-buildKit} + +BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit + + + + + + +
+ +
+ + +### `docker` required {#images-docker} + +Docker if docker is specified, DevSpace will build the image using the local docker daemon + + + + + + +
+ +
+ + +### `kaniko` required {#images-kaniko} + +Kaniko if kaniko is specified, DevSpace will build the image in-cluster with kaniko + + + + + + +
+ +
+ + +### `custom` required {#images-custom} + +Custom if custom is specified, DevSpace will build the image with the help of +a custom script. + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/images/group_overwrites.mdx b/docs/pages/configuration/_partials/v2beta1/images/group_overwrites.mdx new file mode 100755 index 0000000000..6a41b97999 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/group_overwrites.mdx @@ -0,0 +1,13 @@ + +import PartialEntrypoint from "./entrypoint.mdx" +import PartialCmd from "./cmd.mdx" +import PartialAppendDockerfileInstructions from "./appendDockerfileInstructions.mdx" + +
+
In-Memory Overwrites
+ + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/images/group_pushpull.mdx b/docs/pages/configuration/_partials/v2beta1/images/group_pushpull.mdx new file mode 100755 index 0000000000..364f9095b1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/group_pushpull.mdx @@ -0,0 +1,11 @@ + +import PartialSkipPush from "./skipPush.mdx" +import PartialCreatePullSecret from "./createPullSecret.mdx" + +
+
Push & Pull
+ + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/images/image.mdx b/docs/pages/configuration/_partials/v2beta1/images/image.mdx new file mode 100755 index 0000000000..613bd7598a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/image.mdx @@ -0,0 +1,14 @@ + +
+ + +### `image` required string {#images-image} + +Image is the complete image name including registry and repository +for example myregistry.com/mynamespace/myimage + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko.mdx new file mode 100755 index 0000000000..82879b8ae5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko.mdx @@ -0,0 +1,17 @@ + +import PartialKanikoreference from "./kaniko_reference.mdx" + + +
+ + +### `kaniko` required {#images-kaniko} + +Kaniko if kaniko is specified, DevSpace will build the image in-cluster with kaniko + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts.mdx new file mode 100755 index 0000000000..77a3b6009c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts.mdx @@ -0,0 +1,17 @@ + +import PartialAdditionalMountsreference from "./additionalMounts_reference.mdx" + + +
+ + +#### `additionalMounts` required object[] {#images-kaniko-additionalMounts} + +AdditionalMounts are additional mounts that will be added to the build pod + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap.mdx new file mode 100755 index 0000000000..ae490e9296 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap.mdx @@ -0,0 +1,17 @@ + +import PartialConfigMapreference from "./configMap_reference.mdx" + + +
+ + +##### `configMap` required {#images-kaniko-additionalMounts-configMap} + +The configMap that should be mounted + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/defaultMode.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/defaultMode.mdx new file mode 100755 index 0000000000..9d98ca8df0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/defaultMode.mdx @@ -0,0 +1,18 @@ + +
+ + +###### `defaultMode` required integer {#images-kaniko-additionalMounts-configMap-defaultMode} + +Optional: mode bits to use on created files by default. Must be a +value between 0 and 0777. Defaults to 0644. +Directories within the path are not affected by this setting. +This might be in conflict with other options that affect the file +mode, like fsGroup, and the result can be other mode bits set. ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items.mdx new file mode 100755 index 0000000000..59d0534b86 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items.mdx @@ -0,0 +1,24 @@ + +import PartialItemsreference from "./items_reference.mdx" + + +
+ + +###### `items` required object[] {#images-kaniko-additionalMounts-configMap-items} + +If unspecified, each key-value pair in the Data field of the referenced +ConfigMap will be projected into the volume as a file whose name is the +key and content is the value. If specified, the listed keys will be +projected into the specified paths, and unlisted keys will not be +present. If a key is specified which is not present in the ConfigMap, +the volume setup will error unless it is marked optional. Paths must be +relative and may not contain the '..' path or start with '..'. ++optional + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/key.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/key.mdx new file mode 100755 index 0000000000..aac117c2b1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/key.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `key` required string {#images-kaniko-additionalMounts-configMap-items-key} + +The key to project. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/mode.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/mode.mdx new file mode 100755 index 0000000000..518d90a835 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/mode.mdx @@ -0,0 +1,17 @@ + +
+ + +####### `mode` required integer {#images-kaniko-additionalMounts-configMap-items-mode} + +Optional: mode bits to use on this file, must be a value between 0 +and 0777. If not specified, the volume defaultMode will be used. +This might be in conflict with other options that affect the file +mode, like fsGroup, and the result can be other mode bits set. ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/path.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/path.mdx new file mode 100755 index 0000000000..5c1f5d0d1f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items/path.mdx @@ -0,0 +1,16 @@ + +
+ + +####### `path` required string {#images-kaniko-additionalMounts-configMap-items-path} + +The relative path of the file to map the key to. +May not be an absolute path. +May not contain the path element '..'. +May not start with the string '..'. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items_reference.mdx new file mode 100755 index 0000000000..3fe9464f49 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/items_reference.mdx @@ -0,0 +1,12 @@ + +import PartialKey from "./items/key.mdx" +import PartialPath from "./items/path.mdx" +import PartialMode from "./items/mode.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/name.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/name.mdx new file mode 100755 index 0000000000..d40993cd94 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap/name.mdx @@ -0,0 +1,14 @@ + +
+ + +###### `name` required string {#images-kaniko-additionalMounts-configMap-name} + +Name of the configmap ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap_reference.mdx new file mode 100755 index 0000000000..ad17912445 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/configMap_reference.mdx @@ -0,0 +1,32 @@ + +import PartialName from "./configMap/name.mdx" +import PartialItemsreference from "./configMap/items_reference.mdx" +import PartialDefaultMode from "./configMap/defaultMode.mdx" + + + + + +
+ + +###### `items` required object[] {#images-kaniko-additionalMounts-configMap-items} + +If unspecified, each key-value pair in the Data field of the referenced +ConfigMap will be projected into the volume as a file whose name is the +key and content is the value. If specified, the listed keys will be +projected into the specified paths, and unlisted keys will not be +present. If a key is specified which is not present in the ConfigMap, +the volume setup will error unless it is marked optional. Paths must be +relative and may not contain the '..' path or start with '..'. ++optional + + + + + + +
+ + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/mountPath.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/mountPath.mdx new file mode 100755 index 0000000000..0becd5a5cb --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/mountPath.mdx @@ -0,0 +1,14 @@ + +
+ + +##### `mountPath` required string {#images-kaniko-additionalMounts-mountPath} + +Path within the container at which the volume should be mounted. Must +not contain ':'. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/readOnly.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/readOnly.mdx new file mode 100755 index 0000000000..13778d9a96 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/readOnly.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `readOnly` required boolean false {#images-kaniko-additionalMounts-readOnly} + +Mounted read-only if true, read-write otherwise (false or unspecified). +Defaults to false. ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret.mdx new file mode 100755 index 0000000000..e808c0a5a0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret.mdx @@ -0,0 +1,17 @@ + +import PartialSecretreference from "./secret_reference.mdx" + + +
+ + +##### `secret` required {#images-kaniko-additionalMounts-secret} + +The secret that should be mounted + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/defaultMode.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/defaultMode.mdx new file mode 100755 index 0000000000..a7a1237f2e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/defaultMode.mdx @@ -0,0 +1,18 @@ + +
+ + +###### `defaultMode` required integer {#images-kaniko-additionalMounts-secret-defaultMode} + +Optional: mode bits to use on created files by default. Must be a +value between 0 and 0777. Defaults to 0644. +Directories within the path are not affected by this setting. +This might be in conflict with other options that affect the file +mode, like fsGroup, and the result can be other mode bits set. ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items.mdx new file mode 100755 index 0000000000..30272ecb0c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items.mdx @@ -0,0 +1,24 @@ + +import PartialItemsreference from "./items_reference.mdx" + + +
+ + +###### `items` required object[] {#images-kaniko-additionalMounts-secret-items} + +If unspecified, each key-value pair in the Data field of the referenced +Secret will be projected into the volume as a file whose name is the +key and content is the value. If specified, the listed keys will be +projected into the specified paths, and unlisted keys will not be +present. If a key is specified which is not present in the Secret, +the volume setup will error unless it is marked optional. Paths must be +relative and may not contain the '..' path or start with '..'. ++optional + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/key.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/key.mdx new file mode 100755 index 0000000000..560424596e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/key.mdx @@ -0,0 +1,13 @@ + +
+ + +####### `key` required string {#images-kaniko-additionalMounts-secret-items-key} + +The key to project. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/mode.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/mode.mdx new file mode 100755 index 0000000000..4953379615 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/mode.mdx @@ -0,0 +1,17 @@ + +
+ + +####### `mode` required integer {#images-kaniko-additionalMounts-secret-items-mode} + +Optional: mode bits to use on this file, must be a value between 0 +and 0777. If not specified, the volume defaultMode will be used. +This might be in conflict with other options that affect the file +mode, like fsGroup, and the result can be other mode bits set. ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/path.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/path.mdx new file mode 100755 index 0000000000..1ffa39ba79 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items/path.mdx @@ -0,0 +1,16 @@ + +
+ + +####### `path` required string {#images-kaniko-additionalMounts-secret-items-path} + +The relative path of the file to map the key to. +May not be an absolute path. +May not contain the path element '..'. +May not start with the string '..'. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items_reference.mdx new file mode 100755 index 0000000000..3fe9464f49 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/items_reference.mdx @@ -0,0 +1,12 @@ + +import PartialKey from "./items/key.mdx" +import PartialPath from "./items/path.mdx" +import PartialMode from "./items/mode.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/name.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/name.mdx new file mode 100755 index 0000000000..792ee3dbf1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret/name.mdx @@ -0,0 +1,15 @@ + +
+ + +###### `name` required string {#images-kaniko-additionalMounts-secret-name} + +Name of the secret in the pod's namespace to use. +More info: https://kubernetes.io/docs/concepts/storage/volumes#secret ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret_reference.mdx new file mode 100755 index 0000000000..9572731100 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/secret_reference.mdx @@ -0,0 +1,32 @@ + +import PartialName from "./secret/name.mdx" +import PartialItemsreference from "./secret/items_reference.mdx" +import PartialDefaultMode from "./secret/defaultMode.mdx" + + + + + +
+ + +###### `items` required object[] {#images-kaniko-additionalMounts-secret-items} + +If unspecified, each key-value pair in the Data field of the referenced +Secret will be projected into the volume as a file whose name is the +key and content is the value. If specified, the listed keys will be +projected into the specified paths, and unlisted keys will not be +present. If a key is specified which is not present in the Secret, +the volume setup will error unless it is marked optional. Paths must be +relative and may not contain the '..' path or start with '..'. ++optional + + + + + + +
+ + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/subPath.mdx new file mode 100755 index 0000000000..551c6c8f18 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts/subPath.mdx @@ -0,0 +1,15 @@ + +
+ + +##### `subPath` required string {#images-kaniko-additionalMounts-subPath} + +Path within the volume from which the container's volume should be mounted. +Defaults to "" (volume's root). ++optional + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts_reference.mdx new file mode 100755 index 0000000000..f5ecf034af --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/additionalMounts_reference.mdx @@ -0,0 +1,46 @@ + +import PartialSecretreference from "./additionalMounts/secret_reference.mdx" +import PartialConfigMapreference from "./additionalMounts/configMap_reference.mdx" +import PartialReadOnly from "./additionalMounts/readOnly.mdx" +import PartialMountPath from "./additionalMounts/mountPath.mdx" +import PartialSubPath from "./additionalMounts/subPath.mdx" + + +
+ + +##### `secret` required {#images-kaniko-additionalMounts-secret} + +The secret that should be mounted + + + + + + +
+ + + +
+ + +##### `configMap` required {#images-kaniko-additionalMounts-configMap} + +The configMap that should be mounted + + + + + + +
+ + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/annotations.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/annotations.mdx new file mode 100755 index 0000000000..bb437dc16e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/annotations.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `annotations` required <annotation_name>:string {#images-kaniko-annotations} + +Annotations are extra annotations that will be added to the build pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/args.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/args.mdx new file mode 100755 index 0000000000..7abf8965d5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/args.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `args` required string[] {#images-kaniko-args} + +Args for additional arguments that should be passed to kaniko + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/cache.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/cache.mdx new file mode 100755 index 0000000000..f191672050 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/cache.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `cache` required boolean false {#images-kaniko-cache} + +Cache tells DevSpace if a cache repository should be used. defaults to false + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/command.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/command.mdx new file mode 100755 index 0000000000..8a7685af3b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/command.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `command` required string[] {#images-kaniko-command} + +Command to replace the starting command for the kaniko container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/env.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/env.mdx new file mode 100755 index 0000000000..97575d235d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/env.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `env` required <env_name>:string {#images-kaniko-env} + +Env are extra environment variables that will be added to the build kaniko container +Will populate the env.value field. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/envFrom.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/envFrom.mdx new file mode 100755 index 0000000000..e1a153f7a0 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/envFrom.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `envFrom` required <envFrom_name>:object {#images-kaniko-envFrom} + +EnvFrom are extra environment variables from configmap or secret that will be added to the build kaniko container +Will populate the env.valueFrom field. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/image.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/image.mdx new file mode 100755 index 0000000000..8301087778 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/image.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `image` required string {#images-kaniko-image} + +Image is the image name of the kaniko pod to use + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/initEnv.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/initEnv.mdx new file mode 100755 index 0000000000..588adaa5a7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/initEnv.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `initEnv` required <initEnv_name>:string {#images-kaniko-initEnv} + +InitEnv are extra environment variables that will be added to the build init container + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/initImage.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/initImage.mdx new file mode 100755 index 0000000000..116c51f989 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/initImage.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `initImage` required string {#images-kaniko-initImage} + +InitImage to override the init image of the kaniko pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/insecure.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/insecure.mdx new file mode 100755 index 0000000000..788019519c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/insecure.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `insecure` required boolean false {#images-kaniko-insecure} + +Insecure allows pushing to insecure registries + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/labels.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/labels.mdx new file mode 100755 index 0000000000..1c896a74e4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/labels.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `labels` required <label_name>:string {#images-kaniko-labels} + +Labels are extra labels that will be added to the build pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/namespace.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/namespace.mdx new file mode 100755 index 0000000000..94b5211867 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/namespace.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `namespace` required string {#images-kaniko-namespace} + +Namespace is the namespace where the kaniko pod should be run + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/nodeSelector.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/nodeSelector.mdx new file mode 100755 index 0000000000..0fa8559a47 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/nodeSelector.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `nodeSelector` required <nodeSelector_name>:string {#images-kaniko-nodeSelector} + +NodeSelector is the node selector to use for the kaniko pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/pullSecret.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/pullSecret.mdx new file mode 100755 index 0000000000..6b3e5223f9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/pullSecret.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `pullSecret` required string {#images-kaniko-pullSecret} + +PullSecret is the pull secret to mount by default + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources.mdx new file mode 100755 index 0000000000..53ba72cb3b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources.mdx @@ -0,0 +1,17 @@ + +import PartialResourcesreference from "./resources_reference.mdx" + + +
+ + +#### `resources` required {#images-kaniko-resources} + +Resources are the resources that should be set on the kaniko pod + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/limits.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/limits.mdx new file mode 100755 index 0000000000..47482b2a2c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/limits.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `limits` required <limit_name>:string {#images-kaniko-resources-limits} + +Limits are the limits part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/requests.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/requests.mdx new file mode 100755 index 0000000000..be92259ffd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources/requests.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `requests` required <request_name>:string {#images-kaniko-resources-requests} + +Requests are the requests part of the resources + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources_reference.mdx new file mode 100755 index 0000000000..760e0452b5 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/resources_reference.mdx @@ -0,0 +1,8 @@ + +import PartialRequests from "./resources/requests.mdx" +import PartialLimits from "./resources/limits.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/serviceAccount.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/serviceAccount.mdx new file mode 100755 index 0000000000..a3c5c185bd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/serviceAccount.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `serviceAccount` required string {#images-kaniko-serviceAccount} + +ServiceAccount the service account to use for the kaniko pod + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/skipPullSecretMount.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/skipPullSecretMount.mdx new file mode 100755 index 0000000000..ef069671d2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/skipPullSecretMount.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `skipPullSecretMount` required boolean false {#images-kaniko-skipPullSecretMount} + +SkipPullSecretMount will skip mounting the pull secret + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/snapshotMode.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/snapshotMode.mdx new file mode 100755 index 0000000000..cf3dfa6a94 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/snapshotMode.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `snapshotMode` required string {#images-kaniko-snapshotMode} + +SnapshotMode tells DevSpace which snapshot mode kaniko should use. defaults to time + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations.mdx new file mode 100755 index 0000000000..b87aa8edf4 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations.mdx @@ -0,0 +1,17 @@ + +import PartialTolerationsreference from "./tolerations_reference.mdx" + + +
+ + +#### `tolerations` required object[] {#images-kaniko-tolerations} + +Tolerations is a tolerations list to use for the kaniko pod + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Effect.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Effect.mdx new file mode 100755 index 0000000000..b8fd86357f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Effect.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `Effect` required string {#images-kaniko-tolerations-Effect} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Key.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Key.mdx new file mode 100755 index 0000000000..2fa830667c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Key.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `Key` required string {#images-kaniko-tolerations-Key} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Operator.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Operator.mdx new file mode 100755 index 0000000000..104492f11c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Operator.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `Operator` required string {#images-kaniko-tolerations-Operator} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/TolerationSeconds.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/TolerationSeconds.mdx new file mode 100755 index 0000000000..baf8679983 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/TolerationSeconds.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `TolerationSeconds` required integer {#images-kaniko-tolerations-TolerationSeconds} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Value.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Value.mdx new file mode 100755 index 0000000000..c7c68d5a7d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations/Value.mdx @@ -0,0 +1,13 @@ + +
+ + +##### `Value` required string {#images-kaniko-tolerations-Value} + + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations_reference.mdx new file mode 100755 index 0000000000..57343152d9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko/tolerations_reference.mdx @@ -0,0 +1,20 @@ + +import PartialKey from "./tolerations/Key.mdx" +import PartialOperator from "./tolerations/Operator.mdx" +import PartialValue from "./tolerations/Value.mdx" +import PartialEffect from "./tolerations/Effect.mdx" +import PartialTolerationSeconds from "./tolerations/TolerationSeconds.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/images/kaniko_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images/kaniko_reference.mdx new file mode 100755 index 0000000000..655c20b6a2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/kaniko_reference.mdx @@ -0,0 +1,119 @@ + +import PartialCache from "./kaniko/cache.mdx" +import PartialSnapshotMode from "./kaniko/snapshotMode.mdx" +import PartialImage from "./kaniko/image.mdx" +import PartialInitImage from "./kaniko/initImage.mdx" +import PartialArgs from "./kaniko/args.mdx" +import PartialCommand from "./kaniko/command.mdx" +import PartialNamespace from "./kaniko/namespace.mdx" +import PartialInsecure from "./kaniko/insecure.mdx" +import PartialPullSecret from "./kaniko/pullSecret.mdx" +import PartialSkipPullSecretMount from "./kaniko/skipPullSecretMount.mdx" +import PartialNodeSelector from "./kaniko/nodeSelector.mdx" +import PartialTolerationsreference from "./kaniko/tolerations_reference.mdx" +import PartialServiceAccount from "./kaniko/serviceAccount.mdx" +import PartialAnnotations from "./kaniko/annotations.mdx" +import PartialLabels from "./kaniko/labels.mdx" +import PartialInitEnv from "./kaniko/initEnv.mdx" +import PartialEnv from "./kaniko/env.mdx" +import PartialEnvFrom from "./kaniko/envFrom.mdx" +import PartialAdditionalMountsreference from "./kaniko/additionalMounts_reference.mdx" +import PartialResourcesreference from "./kaniko/resources_reference.mdx" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +#### `tolerations` required object[] {#images-kaniko-tolerations} + +Tolerations is a tolerations list to use for the kaniko pod + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + +#### `additionalMounts` required object[] {#images-kaniko-additionalMounts} + +AdditionalMounts are additional mounts that will be added to the build pod + + + + + + +
+ + + +
+ + +#### `resources` required {#images-kaniko-resources} + +Resources are the resources that should be set on the kaniko pod + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/network.mdx b/docs/pages/configuration/_partials/v2beta1/images/network.mdx new file mode 100755 index 0000000000..a987eb556c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/network.mdx @@ -0,0 +1,13 @@ + +
+ + +### `network` required string {#images-network} + +Network is the network that should get used to build the image + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/rebuildStrategy.mdx b/docs/pages/configuration/_partials/v2beta1/images/rebuildStrategy.mdx new file mode 100755 index 0000000000..47f42c6d53 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/rebuildStrategy.mdx @@ -0,0 +1,18 @@ + +
+ + +### `rebuildStrategy` required string default default
always
ignoreContextChanges
{#images-rebuildStrategy} + +RebuildStrategy is used to determine when DevSpace should rebuild an image. By default, devspace will +rebuild an image if one of the following conditions is true: +- The dockerfile has changed +- The configuration within the devspace.yaml for the image has changed +- A file within the docker context (excluding .dockerignore rules) has changed +This option is ignored for custom builds. + +
+ + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/skipPush.mdx b/docs/pages/configuration/_partials/v2beta1/images/skipPush.mdx new file mode 100755 index 0000000000..ba77e8ba71 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/skipPush.mdx @@ -0,0 +1,14 @@ + +
+ + +### `skipPush` required boolean false {#images-skipPush} + +SkipPush will not push the image to a registry if enabled. Only works if docker or buildkit is chosen +as build method + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/tags.mdx b/docs/pages/configuration/_partials/v2beta1/images/tags.mdx new file mode 100755 index 0000000000..c8ec0588d7 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/tags.mdx @@ -0,0 +1,14 @@ + +
+ + +### `tags` required string[] {#images-tags} + +Tags is an array that specifies all tags that should be build during +the build process. If this is empty, devspace will generate a random tag + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images/target.mdx b/docs/pages/configuration/_partials/v2beta1/images/target.mdx new file mode 100755 index 0000000000..c7c33521fa --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images/target.mdx @@ -0,0 +1,13 @@ + +
+ + +### `target` required string {#images-target} + +Target is the target that should get used during the build. Only works if the dockerfile supports this + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/images_reference.mdx b/docs/pages/configuration/_partials/v2beta1/images_reference.mdx new file mode 100755 index 0000000000..04b463a69e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/images_reference.mdx @@ -0,0 +1,24 @@ + +import PartialImage from "./images/image.mdx" +import PartialTags from "./images/tags.mdx" +import PartialGroupbuildconfig from "./images/group_buildconfig.mdx" +import PartialGroupoverwrites from "./images/group_overwrites.mdx" +import PartialGrouppushpull from "./images/group_pushpull.mdx" +import PartialGroupengines from "./images/group_engines.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/imports.mdx b/docs/pages/configuration/_partials/v2beta1/imports.mdx new file mode 100755 index 0000000000..7d538ae5e9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports.mdx @@ -0,0 +1,18 @@ + +import PartialImportsreference from "./imports_reference.mdx" + + +
+ + +## `imports` required object[] {#imports} + +Imports merges specified config files into this one. This is very useful to split up your DevSpace configuration +into multiple files and reuse those through git, a remote url or common local path. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/branch.mdx b/docs/pages/configuration/_partials/v2beta1/imports/branch.mdx new file mode 100755 index 0000000000..b85ad62c35 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/branch.mdx @@ -0,0 +1,13 @@ + +
+ + +### `branch` required string {#imports-branch} + +Branch is the git branch to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/cloneArgs.mdx b/docs/pages/configuration/_partials/v2beta1/imports/cloneArgs.mdx new file mode 100755 index 0000000000..b79ff2c03f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/cloneArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +### `cloneArgs` required string[] {#imports-cloneArgs} + +CloneArgs are additional arguments that should be supplied to the git CLI + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/disablePull.mdx b/docs/pages/configuration/_partials/v2beta1/imports/disablePull.mdx new file mode 100755 index 0000000000..b075696e76 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/disablePull.mdx @@ -0,0 +1,13 @@ + +
+ + +### `disablePull` required boolean false {#imports-disablePull} + +DisablePull will disable pulling every time DevSpace is reevaluating this source + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/disableShallow.mdx b/docs/pages/configuration/_partials/v2beta1/imports/disableShallow.mdx new file mode 100755 index 0000000000..643268126b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/disableShallow.mdx @@ -0,0 +1,14 @@ + +
+ + +### `disableShallow` required boolean false {#imports-disableShallow} + +DisableShallow can be used to turn off shallow clones as these are the default used +by devspace + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/enabled.mdx b/docs/pages/configuration/_partials/v2beta1/imports/enabled.mdx new file mode 100755 index 0000000000..184ed2c01b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/enabled.mdx @@ -0,0 +1,13 @@ + +
+ + +### `enabled` required boolean true {#imports-enabled} + +Enabled specifies if the given import should be enabled + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/git.mdx b/docs/pages/configuration/_partials/v2beta1/imports/git.mdx new file mode 100755 index 0000000000..d996681e17 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/git.mdx @@ -0,0 +1,15 @@ + +
+ + +### `git` required string {#imports-git} + +Git is the remote repository to download the artifact from. You can either use +https projects or ssh projects here, but need to make sure git can pull the project. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/group_git.mdx b/docs/pages/configuration/_partials/v2beta1/imports/group_git.mdx new file mode 100755 index 0000000000..0029b76e3e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/group_git.mdx @@ -0,0 +1,23 @@ + +import PartialGit from "./git.mdx" +import PartialSubPath from "./subPath.mdx" +import PartialBranch from "./branch.mdx" +import PartialTag from "./tag.mdx" +import PartialRevision from "./revision.mdx" +import PartialCloneArgs from "./cloneArgs.mdx" +import PartialDisableShallow from "./disableShallow.mdx" +import PartialDisablePull from "./disablePull.mdx" + +
+
Source: Git Repository
+ + + + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/imports/group_path.mdx b/docs/pages/configuration/_partials/v2beta1/imports/group_path.mdx new file mode 100755 index 0000000000..beea804e5f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/group_path.mdx @@ -0,0 +1,9 @@ + +import PartialPath from "./path.mdx" + +
+
Source: Local Filesystem
+ + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/imports/path.mdx b/docs/pages/configuration/_partials/v2beta1/imports/path.mdx new file mode 100755 index 0000000000..ff7b2842a8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/path.mdx @@ -0,0 +1,14 @@ + +
+ + +### `path` required string {#imports-path} + +Path is the local path where DevSpace can find the artifact. +This option is mutually exclusive with the path option. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/revision.mdx b/docs/pages/configuration/_partials/v2beta1/imports/revision.mdx new file mode 100755 index 0000000000..371f96fffd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/revision.mdx @@ -0,0 +1,13 @@ + +
+ + +### `revision` required string {#imports-revision} + +Revision is the git revision to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/subPath.mdx b/docs/pages/configuration/_partials/v2beta1/imports/subPath.mdx new file mode 100755 index 0000000000..645a15346c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/subPath.mdx @@ -0,0 +1,13 @@ + +
+ + +### `subPath` required string {#imports-subPath} + +SubPath is a path within the git repository where the artifact lies in + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports/tag.mdx b/docs/pages/configuration/_partials/v2beta1/imports/tag.mdx new file mode 100755 index 0000000000..fb23db9539 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports/tag.mdx @@ -0,0 +1,13 @@ + +
+ + +### `tag` required string {#imports-tag} + +Tag is the tag to pull + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/imports_reference.mdx b/docs/pages/configuration/_partials/v2beta1/imports_reference.mdx new file mode 100755 index 0000000000..c75846e8f3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/imports_reference.mdx @@ -0,0 +1,12 @@ + +import PartialEnabled from "./imports/enabled.mdx" +import PartialGrouppath from "./imports/group_path.mdx" +import PartialGroupgit from "./imports/group_git.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/name.mdx b/docs/pages/configuration/_partials/v2beta1/name.mdx new file mode 100755 index 0000000000..85248a4f58 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/name.mdx @@ -0,0 +1,14 @@ + +
+ + +## `name` required string {#name} + +Name specifies the name of the DevSpace project and uniquely identifies a project. +DevSpace will not allow multiple active projects with the same name in the same Kubernetes namespace. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines.mdx new file mode 100755 index 0000000000..a92c04f937 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines.mdx @@ -0,0 +1,35 @@ + +import PartialPipelinesreference from "./pipelines_reference.mdx" + + +
+ + +## `pipelines` required <pipeline_name>:object {#pipelines} + +Pipelines are the work blocks that DevSpace should execute when devspace dev, devspace build, devspace deploy or devspace purge +is called. Pipelines are defined through a special POSIX script that allows you to use special commands +such as create_deployments, start_dev, build_images etc. to signal DevSpace you want to execute +a specific functionality. The pipelines dev, build, deploy and purge are special and will override +the default functionality of the respective command if defined. All other pipelines can be either run +via the devspace run-pipeline command or used within another pipeline through run_pipelines. + + + + +
+ + +## `` required string dev
deploy
build
purge
.*
{#pipelines-name} + +Name of the pipeline, will be filled automatically + +
+ + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/continueOnError.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/continueOnError.mdx new file mode 100755 index 0000000000..40d3de53ea --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/continueOnError.mdx @@ -0,0 +1,14 @@ + +
+ + +### `continueOnError` required boolean false {#pipelines-continueOnError} + +ContinueOnError will not fail the whole job and pipeline if +a call within the step fails. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags.mdx new file mode 100755 index 0000000000..9029edba69 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags.mdx @@ -0,0 +1,18 @@ + +import PartialFlagsreference from "./flags_reference.mdx" + + +
+ + +### `flags` required object[] {#pipelines-flags} + +Flags are extra flags that can be used for running the pipeline via +devspace run-pipeline. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags/default.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/default.mdx new file mode 100755 index 0000000000..88cacbb790 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/default.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `default` required {#pipelines-flags-default} + +Default is the default value for this flag + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags/description.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/description.mdx new file mode 100755 index 0000000000..4a043b6f8b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/description.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `description` required string {#pipelines-flags-description} + +Description is the description as shown in `devspace run-pipeline my-pipe -h` + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags/name.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/name.mdx new file mode 100755 index 0000000000..496db6f1ca --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/name.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `name` required string {#pipelines-flags-name} + +Name is the name of the flag + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags/short.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/short.mdx new file mode 100755 index 0000000000..c47bed963e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/short.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `short` required string {#pipelines-flags-short} + +Short is optional and is the shorthand name for this flag. E.g. 'g' converts to '-g' + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags/type.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/type.mdx new file mode 100755 index 0000000000..ffc76736c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags/type.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `type` required string bool bool
int
string
stringArray
{#pipelines-flags-type} + +Type is the type of the flag. Defaults to `bool` + +
+ + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/flags_reference.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/flags_reference.mdx new file mode 100755 index 0000000000..c374ba60f1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/flags_reference.mdx @@ -0,0 +1,20 @@ + +import PartialName from "./flags/name.mdx" +import PartialShort from "./flags/short.mdx" +import PartialType from "./flags/type.mdx" +import PartialDefault from "./flags/default.mdx" +import PartialDescription from "./flags/description.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines/run.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines/run.mdx new file mode 100755 index 0000000000..410d694ccd --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines/run.mdx @@ -0,0 +1,13 @@ + +
+ + +### `run` required string {#pipelines-run} + +Run is the actual shell command that should be executed during this pipeline + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pipelines_reference.mdx b/docs/pages/configuration/_partials/v2beta1/pipelines_reference.mdx new file mode 100755 index 0000000000..baba7e0b34 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pipelines_reference.mdx @@ -0,0 +1,26 @@ + +import PartialRun from "./pipelines/run.mdx" +import PartialFlagsreference from "./pipelines/flags_reference.mdx" +import PartialContinueOnError from "./pipelines/continueOnError.mdx" + + + + + +
+ + +### `flags` required object[] {#pipelines-flags} + +Flags are extra flags that can be used for running the pipeline via +devspace run-pipeline. + + + + + + +
+ + + diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets.mdx new file mode 100755 index 0000000000..8025b2b3b3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets.mdx @@ -0,0 +1,32 @@ + +import PartialPullSecretsreference from "./pullSecrets_reference.mdx" + + +
+ + +## `pullSecrets` required <pullSecret_name>:object {#pullSecrets} + +PullSecrets are image pull secrets that will be created by devspace in the target namespace +during devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single +one or the one specified. + + + + +
+ + +## `` required string {#pullSecrets-name} + +Name is the pull secret name to deploy + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/email.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/email.mdx new file mode 100755 index 0000000000..3abfd2b922 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/email.mdx @@ -0,0 +1,13 @@ + +
+ + +### `email` required string {#pullSecrets-email} + +The optional email to use + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/password.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/password.mdx new file mode 100755 index 0000000000..6d5ffa949e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/password.mdx @@ -0,0 +1,14 @@ + +
+ + +### `password` required string {#pullSecrets-password} + +The password to use for the registry. If this is empty, devspace will +try to receive the auth data from the local docker + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/registry.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/registry.mdx new file mode 100755 index 0000000000..d3db85240d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/registry.mdx @@ -0,0 +1,15 @@ + +
+ + +### `registry` required string {#pullSecrets-registry} + +The registry to create the image pull secret for. +Empty string == docker hub +e.g. gcr.io + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/secret.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/secret.mdx new file mode 100755 index 0000000000..0b9ff14172 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/secret.mdx @@ -0,0 +1,13 @@ + +
+ + +### `secret` required string {#pullSecrets-secret} + +The secret to create + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/serviceAccounts.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/serviceAccounts.mdx new file mode 100755 index 0000000000..0097884edc --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/serviceAccounts.mdx @@ -0,0 +1,13 @@ + +
+ + +### `serviceAccounts` required string[] {#pullSecrets-serviceAccounts} + +The service account to add the secret to + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets/username.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets/username.mdx new file mode 100755 index 0000000000..7b7c7b1918 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets/username.mdx @@ -0,0 +1,14 @@ + +
+ + +### `username` required string {#pullSecrets-username} + +The username of the registry. If this is empty, devspace will try +to receive the auth data from the local docker + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/pullSecrets_reference.mdx b/docs/pages/configuration/_partials/v2beta1/pullSecrets_reference.mdx new file mode 100755 index 0000000000..75be3501df --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/pullSecrets_reference.mdx @@ -0,0 +1,24 @@ + +import PartialRegistry from "./pullSecrets/registry.mdx" +import PartialUsername from "./pullSecrets/username.mdx" +import PartialPassword from "./pullSecrets/password.mdx" +import PartialEmail from "./pullSecrets/email.mdx" +import PartialSecret from "./pullSecrets/secret.mdx" +import PartialServiceAccounts from "./pullSecrets/serviceAccounts.mdx" + + + + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/reference.mdx b/docs/pages/configuration/_partials/v2beta1/reference.mdx new file mode 100755 index 0000000000..5e20c2bc11 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/reference.mdx @@ -0,0 +1,312 @@ + +import PartialVersion from "./version.mdx" +import PartialName from "./name.mdx" +import PartialImportsreference from "./imports_reference.mdx" +import PartialFunctions from "./functions.mdx" +import PartialPipelinesreference from "./pipelines_reference.mdx" +import PartialImagesreference from "./images_reference.mdx" +import PartialDeploymentsreference from "./deployments_reference.mdx" +import PartialDevreference from "./dev_reference.mdx" +import PartialVarsreference from "./vars_reference.mdx" +import PartialCommandsreference from "./commands_reference.mdx" +import PartialDependenciesreference from "./dependencies_reference.mdx" +import PartialPullSecretsreference from "./pullSecrets_reference.mdx" +import PartialRequirereference from "./require_reference.mdx" + + + + + + + + +
+ + +## `imports` required object[] {#imports} + +Imports merges specified config files into this one. This is very useful to split up your DevSpace configuration +into multiple files and reuse those through git, a remote url or common local path. + + + + + + +
+ + + + + + +
+ + +## `pipelines` required <pipeline_name>:object {#pipelines} + +Pipelines are the work blocks that DevSpace should execute when devspace dev, devspace build, devspace deploy or devspace purge +is called. Pipelines are defined through a special POSIX script that allows you to use special commands +such as create_deployments, start_dev, build_images etc. to signal DevSpace you want to execute +a specific functionality. The pipelines dev, build, deploy and purge are special and will override +the default functionality of the respective command if defined. All other pipelines can be either run +via the devspace run-pipeline command or used within another pipeline through run_pipelines. + + + + +
+ + +## `` required string dev
deploy
build
purge
.*
{#pipelines-name} + +Name of the pipeline, will be filled automatically + +
+ + + + +
+ + +
+ + + +
+ + +## `images` required <image_name>:object {#images} + +Images holds configuration of how DevSpace should build images. By default, DevSpace will build all defined images. +If you are using a custom pipeline, you can dynamically define which image is built at which time during the +execution. + + + + +
+ + +## `` required string {#images-name} + +Name of the image, will be filled automatically + + + + + + +
+ + +
+ + + +
+ + +## `deployments` required <deployment_name>:object {#deployments} + +Deployments holds configuration of how DevSpace should deploy resources to Kubernetes. By default, DevSpace will deploy all defined deployments. +If you are using a custom pipeline, you can dynamically define which deployment is deployed at which time during the +execution. + + + + +
+ + +## `` required string {#deployments-name} + +Name of the deployment + + + + + + +
+ + +
+ + + +
+ + +## `dev` required <dev_name>:object {#dev} + +Dev holds development configuration. Each dev configuration targets a single pod and enables certain dev services on that pod +or even rewrites it if certain changes are requested, such as adding an environment variable or changing the entrypoint. +Dev allows you to: +- sync local folders to the Kubernetes pod +- port forward remote ports to your local computer +- forward local ports into the Kubernetes pod +- configure an ssh tunnel to the Kubernetes pod +- proxy local commands to the container +- restart the container on file changes + + + + +
+ + +## `` required string {#dev-name} + +Name of the dev configuration + + + + + + +
+ + +
+ + + +
+ + +## `vars` required <var_name>:object {#vars} + +Vars are config variables that can be used inside other config sections to replace certain values dynamically + + + + +
+ + +## `` required string {#vars-name} + +Name is the name of the variable + + + + + + +
+ + +
+ + + +
+ + +## `commands` required <command_name>:object {#commands} + +Commands are custom commands that can be executed via 'devspace run COMMAND'. These commands are run within a pseudo bash +that also allows executing special commands such as run_watch or is_equal. + + + + +
+ + +## `` required string {#commands-name} + +Name is the name of a command that is used via `devspace run NAME` + + + + + + +
+ + +
+ + + +
+ + +## `dependencies` required <dependency_name>:object {#dependencies} + +Dependencies are sub devspace projects that lie in a local folder or remote git repository that can be executed +from within the pipeline. In contrast to imports, these projects pose as separate fully functional DevSpace projects +that typically lie including source code in a different folder and can be used to compose a full microservice +application that will be deployed by DevSpace. Each dependency name can only be used once and if you want to use +the same project multiple times, make sure to use a different name for each of those instances. + + + + +
+ + +## `` required string {#dependencies-name} + +Name is used internally + + + + + + +
+ + +
+ + + +
+ + +## `pullSecrets` required <pullSecret_name>:object {#pullSecrets} + +PullSecrets are image pull secrets that will be created by devspace in the target namespace +during devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single +one or the one specified. + + + + +
+ + +## `` required string {#pullSecrets-name} + +Name is the pull secret name to deploy + + + + + + +
+ + +
+ + + +
+ + +## `require` required {#require} + +Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not +fulfilled, DevSpace will fail. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require.mdx b/docs/pages/configuration/_partials/v2beta1/require.mdx new file mode 100755 index 0000000000..9eb1672135 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require.mdx @@ -0,0 +1,18 @@ + +import PartialRequirereference from "./require_reference.mdx" + + +
+ + +## `require` required {#require} + +Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not +fulfilled, DevSpace will fail. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands.mdx new file mode 100755 index 0000000000..c33b401b7d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands.mdx @@ -0,0 +1,17 @@ + +import PartialCommandsreference from "./commands_reference.mdx" + + +
+ + +### `commands` required object[] {#require-commands} + +Commands specifies an array of commands that need to be installed locally to use this config + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands/name.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands/name.mdx new file mode 100755 index 0000000000..75a1aed5f6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands/name.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `name` required string {#require-commands-name} + +Name is the name of the command that should be installed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands/version.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands/version.mdx new file mode 100755 index 0000000000..4bd813efed --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands/version.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `version` required string {#require-commands-version} + +Version constraint of the command that should be installed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands/versionArgs.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands/versionArgs.mdx new file mode 100755 index 0000000000..095479ac70 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands/versionArgs.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `versionArgs` required string[] {#require-commands-versionArgs} + +VersionArgs are the arguments to retrieve the version of the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands/versionRegEx.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands/versionRegEx.mdx new file mode 100755 index 0000000000..003b188a0f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands/versionRegEx.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `versionRegEx` required string {#require-commands-versionRegEx} + +VersionRegEx is the regex that is used to parse the version + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/commands_reference.mdx b/docs/pages/configuration/_partials/v2beta1/require/commands_reference.mdx new file mode 100755 index 0000000000..372fd92dc2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/commands_reference.mdx @@ -0,0 +1,16 @@ + +import PartialName from "./commands/name.mdx" +import PartialVersionArgs from "./commands/versionArgs.mdx" +import PartialVersionRegEx from "./commands/versionRegEx.mdx" +import PartialVersion from "./commands/version.mdx" + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/require/devspace.mdx b/docs/pages/configuration/_partials/v2beta1/require/devspace.mdx new file mode 100755 index 0000000000..91cb92e2a8 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/devspace.mdx @@ -0,0 +1,13 @@ + +
+ + +### `devspace` required string {#require-devspace} + +DevSpace specifies the DevSpace version constraint that is needed to use this config + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/plugins.mdx b/docs/pages/configuration/_partials/v2beta1/require/plugins.mdx new file mode 100755 index 0000000000..de19b2ff46 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/plugins.mdx @@ -0,0 +1,17 @@ + +import PartialPluginsreference from "./plugins_reference.mdx" + + +
+ + +### `plugins` required object[] {#require-plugins} + +Plugins specifies an array of plugins that need to be installed locally + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/plugins/name.mdx b/docs/pages/configuration/_partials/v2beta1/require/plugins/name.mdx new file mode 100755 index 0000000000..bd8b3e870e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/plugins/name.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `name` required string {#require-plugins-name} + +Name of the plugin that should be installed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/plugins/version.mdx b/docs/pages/configuration/_partials/v2beta1/require/plugins/version.mdx new file mode 100755 index 0000000000..7d3606af8e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/plugins/version.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `version` required string {#require-plugins-version} + +Version constraint of the plugin that should be installed + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/require/plugins_reference.mdx b/docs/pages/configuration/_partials/v2beta1/require/plugins_reference.mdx new file mode 100755 index 0000000000..29f8e9cef9 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require/plugins_reference.mdx @@ -0,0 +1,8 @@ + +import PartialName from "./plugins/name.mdx" +import PartialVersion from "./plugins/version.mdx" + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/require_reference.mdx b/docs/pages/configuration/_partials/v2beta1/require_reference.mdx new file mode 100755 index 0000000000..994d64135b --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/require_reference.mdx @@ -0,0 +1,38 @@ + +import PartialDevspace from "./require/devspace.mdx" +import PartialCommandsreference from "./require/commands_reference.mdx" +import PartialPluginsreference from "./require/plugins_reference.mdx" + + + + + +
+ + +### `commands` required object[] {#require-commands} + +Commands specifies an array of commands that need to be installed locally to use this config + + + + + + +
+ + + +
+ + +### `plugins` required object[] {#require-plugins} + +Plugins specifies an array of plugins that need to be installed locally + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars.mdx b/docs/pages/configuration/_partials/v2beta1/vars.mdx new file mode 100755 index 0000000000..f3c47da4d1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars.mdx @@ -0,0 +1,30 @@ + +import PartialVarsreference from "./vars_reference.mdx" + + +
+ + +## `vars` required <var_name>:object {#vars} + +Vars are config variables that can be used inside other config sections to replace certain values dynamically + + + + +
+ + +## `` required string {#vars-name} + +Name is the name of the variable + + + + + + +
+ + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/alwaysResolve.mdx b/docs/pages/configuration/_partials/v2beta1/vars/alwaysResolve.mdx new file mode 100755 index 0000000000..ba6d5f38c3 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/alwaysResolve.mdx @@ -0,0 +1,13 @@ + +
+ + +### `alwaysResolve` required boolean false {#vars-alwaysResolve} + +AlwaysResolve makes sure this variable will always be resolved and not only if it is used somewhere + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/args.mdx b/docs/pages/configuration/_partials/v2beta1/vars/args.mdx new file mode 100755 index 0000000000..2f74c50004 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/args.mdx @@ -0,0 +1,13 @@ + +
+ + +### `args` required string[] {#vars-args} + +Args are optional args that will be used for the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/command.mdx b/docs/pages/configuration/_partials/v2beta1/vars/command.mdx new file mode 100755 index 0000000000..74fe528fba --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/command.mdx @@ -0,0 +1,14 @@ + +
+ + +### `command` required string {#vars-command} + +Command is the command how to retrieve the variable. If args is omitted, command is parsed as a shell +command. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/commands.mdx b/docs/pages/configuration/_partials/v2beta1/vars/commands.mdx new file mode 100755 index 0000000000..301688ad93 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/commands.mdx @@ -0,0 +1,18 @@ + +import PartialCommandsreference from "./commands_reference.mdx" + + +
+ + +### `commands` required object[] {#vars-commands} + +Commands are additional commands that can be used to run a different command on a different operating +system. + + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/commands/args.mdx b/docs/pages/configuration/_partials/v2beta1/vars/commands/args.mdx new file mode 100755 index 0000000000..9daeeb3f04 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/commands/args.mdx @@ -0,0 +1,13 @@ + +
+ + +#### `args` required string[] {#vars-commands-args} + +Args are optional arguments for the command + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/commands/command.mdx b/docs/pages/configuration/_partials/v2beta1/vars/commands/command.mdx new file mode 100755 index 0000000000..2a6db43661 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/commands/command.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `command` required string {#vars-commands-command} + +Command is the command to use to retrieve the value for this variable. If no +args are specified the command is run within a pseudo shell. + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/commands/os.mdx b/docs/pages/configuration/_partials/v2beta1/vars/commands/os.mdx new file mode 100755 index 0000000000..aaf8aca674 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/commands/os.mdx @@ -0,0 +1,14 @@ + +
+ + +#### `os` required string {#vars-commands-os} + +OperatingSystem is optional and defines the operating system this +command should be executed on + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/commands_reference.mdx b/docs/pages/configuration/_partials/v2beta1/vars/commands_reference.mdx new file mode 100755 index 0000000000..53ddbd9a01 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/commands_reference.mdx @@ -0,0 +1,12 @@ + +import PartialOs from "./commands/os.mdx" +import PartialCommand from "./commands/command.mdx" +import PartialArgs from "./commands/args.mdx" + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/vars/default.mdx b/docs/pages/configuration/_partials/v2beta1/vars/default.mdx new file mode 100755 index 0000000000..20f9a9312d --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/default.mdx @@ -0,0 +1,13 @@ + +
+ + +### `default` required string|integer|boolean {#vars-default} + +Default is the default value the variable should have if not set by the user + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/group_execution.mdx b/docs/pages/configuration/_partials/v2beta1/vars/group_execution.mdx new file mode 100755 index 0000000000..e0efd5684f --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/group_execution.mdx @@ -0,0 +1,27 @@ + +import PartialCommand from "./command.mdx" +import PartialArgs from "./args.mdx" +import PartialCommandsreference from "./commands_reference.mdx" + +
+
Value From Command
+ + + + +
+ + +### `commands` required object[] {#vars-commands} + +Commands are additional commands that can be used to run a different command on a different operating +system. + + + + + + +
+ +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/vars/group_question.mdx b/docs/pages/configuration/_partials/v2beta1/vars/group_question.mdx new file mode 100755 index 0000000000..2051b34029 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/group_question.mdx @@ -0,0 +1,21 @@ + +import PartialQuestion from "./question.mdx" +import PartialDefault from "./default.mdx" +import PartialOptions from "./options.mdx" +import PartialPassword from "./password.mdx" +import PartialValidationPattern from "./validationPattern.mdx" +import PartialValidationMessage from "./validationMessage.mdx" +import PartialNoCache from "./noCache.mdx" + +
+
Value From Input (Question)
+ + + + + + + + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/vars/group_static.mdx b/docs/pages/configuration/_partials/v2beta1/vars/group_static.mdx new file mode 100755 index 0000000000..b80a2607e1 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/group_static.mdx @@ -0,0 +1,9 @@ + +import PartialValue from "./value.mdx" + +
+
Static Value
+ + + +
\ No newline at end of file diff --git a/docs/pages/configuration/_partials/v2beta1/vars/noCache.mdx b/docs/pages/configuration/_partials/v2beta1/vars/noCache.mdx new file mode 100755 index 0000000000..876a38e090 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/noCache.mdx @@ -0,0 +1,13 @@ + +
+ + +### `noCache` required boolean false {#vars-noCache} + +NoCache can be used to prompt the user on every run for this variable + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/options.mdx b/docs/pages/configuration/_partials/v2beta1/vars/options.mdx new file mode 100755 index 0000000000..5c47862414 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/options.mdx @@ -0,0 +1,13 @@ + +
+ + +### `options` required string[] {#vars-options} + +Options are options that can be selected when the variable question is asked + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/password.mdx b/docs/pages/configuration/_partials/v2beta1/vars/password.mdx new file mode 100755 index 0000000000..467c53a10a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/password.mdx @@ -0,0 +1,13 @@ + +
+ + +### `password` required boolean false {#vars-password} + +Password signals that this variable should not be visible if entered + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/question.mdx b/docs/pages/configuration/_partials/v2beta1/vars/question.mdx new file mode 100755 index 0000000000..30c380dc2e --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/question.mdx @@ -0,0 +1,13 @@ + +
+ + +### `question` required string {#vars-question} + +Question can be used to define a custom question if the variable was not yet used + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/source.mdx b/docs/pages/configuration/_partials/v2beta1/vars/source.mdx new file mode 100755 index 0000000000..8a7dbba768 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/source.mdx @@ -0,0 +1,13 @@ + +
+ + +### `source` required string all all
env
input
command
none
{#vars-source} + +Source defines where the variable should be taken from + +
+ + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/validationMessage.mdx b/docs/pages/configuration/_partials/v2beta1/vars/validationMessage.mdx new file mode 100755 index 0000000000..a9e1d3f554 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/validationMessage.mdx @@ -0,0 +1,13 @@ + +
+ + +### `validationMessage` required string {#vars-validationMessage} + +ValidationMessage can be used to tell the user the format of the variable value + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/validationPattern.mdx b/docs/pages/configuration/_partials/v2beta1/vars/validationPattern.mdx new file mode 100755 index 0000000000..759afe391a --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/validationPattern.mdx @@ -0,0 +1,13 @@ + +
+ + +### `validationPattern` required string {#vars-validationPattern} + +ValidationPattern can be used to verify the user input + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars/value.mdx b/docs/pages/configuration/_partials/v2beta1/vars/value.mdx new file mode 100755 index 0000000000..ef29bd83c6 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars/value.mdx @@ -0,0 +1,13 @@ + +
+ + +### `value` required string|integer|boolean {#vars-value} + +Value is a shortcut for using source: none and default: my-value + + + + + +
diff --git a/docs/pages/configuration/_partials/v2beta1/vars_reference.mdx b/docs/pages/configuration/_partials/v2beta1/vars_reference.mdx new file mode 100755 index 0000000000..2c4c527e1c --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/vars_reference.mdx @@ -0,0 +1,20 @@ + +import PartialGroupstatic from "./vars/group_static.mdx" +import PartialGroupquestion from "./vars/group_question.mdx" +import PartialGroupexecution from "./vars/group_execution.mdx" +import PartialAlwaysResolve from "./vars/alwaysResolve.mdx" +import PartialSource from "./vars/source.mdx" + + + + + + + + + + + + + + diff --git a/docs/pages/configuration/_partials/v2beta1/version.mdx b/docs/pages/configuration/_partials/v2beta1/version.mdx new file mode 100755 index 0000000000..0e0353c1a2 --- /dev/null +++ b/docs/pages/configuration/_partials/v2beta1/version.mdx @@ -0,0 +1,15 @@ + +
+ + +## `version` required string v2beta1
v1beta11
v1beta10
v1beta9
v1beta8
v1beta7
v1beta6
v1beta5
v1beta4
v1beta3
v1beta2
v1beta1
{#version} + +Version holds the config version. DevSpace will always convert older configs to the current latest +config version, which makes it possible to use the newest DevSpace version also with older config +versions. + +
+ + + +
diff --git a/docs/pages/configuration/commands/README.mdx b/docs/pages/configuration/commands/README.mdx new file mode 100644 index 0000000000..8f9dd86239 --- /dev/null +++ b/docs/pages/configuration/commands/README.mdx @@ -0,0 +1,78 @@ +--- +title: Custom Commands +sidebar_label: commands +--- + +import ConfigPartialCommands from '../_partials/v2beta1/commands.mdx' + +The idea of custom commands is that someone on a team defines a set of useful commands and stores them in the `devspace.yaml`, then commits and pushes this config to the code repository. Now, others can run these custom commands without having to remember all the details or having to read through endless pages of documentation. + +Custom commands are being shared in the `commands` section of `devspace.yaml`: +```yaml +# File: devspace.yaml +images: + default: + image: john/backend +commands: +- name: debug-backend + command: "devspace dev --profile=debug-backend $@" +profiles: +- name: debug-backend + patches: + - op: replace + path: images.default.entrypoint + value: ["npm", "run", "debug"] +``` + +:::note +Custom commands can be used for more than just running `devspace` commands, e.g. they can run any other script or command, set environment variables etc. If you are familiar with the `scripts` section of the `package.json` for Node.js, you will find that `devspace run [name]` works pretty much the same way as `npm run [name]` +::: + +The above example configuration would allow everyone to run the custom command `debug-backend` like this: +```bash +devspace run debug-backend +devspace run debug-backend --verbose-dependencies +devspace run debug-backend -- --verbose-dependencies -s +``` + +And `devspace run` would execute the following commands internally: +```bash +devspace dev --profile=debug-backend +devspace dev --profile=debug-backend --verbose-dependencies +devspace dev --profile=debug-backend --verbose-dependencies -s +``` + +:::note `--` End of Options Separator +The `--` between the command name and the additional flags for the command tells your terminal that the arguments and flags that follow after the `--` do not belong to `devspace run` and should not be parsed. It is not required but often helpful to use `--` when executing commands using `devspace run`. +::: + +:::info Interactive Commands +Custom commands proxy input and output streams, so you can even share interactive commands such as `devspace enter`. +::: + + +## Configuration + + + + +
+ +## Useful Commands + +### `devspace list commands` +Run this command to list all custom commands that are configured: +```bash +devspace list commands +``` + + +### `devspace run dependency1.command` +You can run a command defined in one of the dependencies of the current project like this: +```bash +devspace run [dependency].[command] [command-flags-and-args] +``` + +:::note Working Directory +When running a command of a dependency, DevSpace will use the root folder of the dependency as current working directory when executing the command. +::: diff --git a/docs/pages/configuration/dependencies/README.mdx b/docs/pages/configuration/dependencies/README.mdx new file mode 100644 index 0000000000..e3261b4ba6 --- /dev/null +++ b/docs/pages/configuration/dependencies/README.mdx @@ -0,0 +1,189 @@ +--- +title: Dependencies +sidebar_label: "Basics" +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import PartialDependenciesConfig from '../_partials/v2beta1/dependencies.mdx' + +DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: + +- You want to reuse an already existing `devspace.yaml` of another project +- You want to define a more complex pipeline with multiple build, hook and deploy steps +- You want to define a common build / deploy step for other projects + +Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. + + + + +```yaml +dependencies: +- name: api-server + source: + git: https://github.com/my-api-server + branch: stable + dev: + ports: true +- name: auth-server + source: + git: https://github.com/my-auth-server + revision: c967392 + profile: production +- name: database-server + source: + git: https://github.com/my-database-server + tag: v3.0.1 + subPath: /configuration + vars: + - name: ROOT_PASSWORD + value: ${ROOT_PASSWORD} +``` + + + + +```yaml +dependencies: +- name: component-1 + source: + path: ./component-1 +- name: component-2 + source: + path: ./component-2 +``` + + + + +## Dependency Source +DevSpace is able to work with dependencies from the following sources: +- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration +- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) + + +## Execution Order + +Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 + dev: + sync: true +- name: dep2 + source: + path: dep2 + dev: + ports: true +images: + image1: + image: myimage/image +deployments: +- name: deployment1 + helm: + ... +dev: + ports: ... + sync: ... +``` + +### Explanation +In the above `devspace.yaml`, execution order would be as followed: +* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) +* Execute dependency dep2's pull secrets, image building & deployments +* Build image `image1` +* Deploy deployment `deployment1` +* Start merged portforwarding from `dep2` and `dev.ports` +* Start sync from `dep1` and `dev.sync` + +## Referencing Dependencies + +### Reference Image Names +You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 +dev: + # Will open a terminal to the pod with the + # image from dep1 + terminal: + imageSelector: ${runtime.dependencies.dep1.images.image1} +``` + +With `dep1/devspace.yaml`: +```yaml +images: + image1: + image: myusername/devspace +deployments: + - name: quickstart + helm: + componentChart: true + values: + containers: + - image: myusername/devspace +``` + +### Referencing Dependencies in Deployment Values / Manifests + +It is also possible to reference a dependency's image with runtime variables in a deployment: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 +deployments: + - name: quickstart + helm: + componentChart: true + values: + containers: + - image: ${runtime.dependencies.dep1.image1.image}:${runtime.dependencies.dep1.image1.tag} # -> replaced with 'myusername/devspace:xxxx' +``` + +With a dependency `dep1/devspace.yaml` that looks like: +```yaml +images: + image1: + image: myusername/devspace +``` + +## Dependency Resolution +When a DevSpace project has dependencies, DevSpace will: + +1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository +2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) +3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets +4. Remove the leave node from the tree and repeat step 3 until everything has been deployed + +The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. + +### Redundant Dependencies +If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. + +### Circular Dependencies +If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. + +## Useful Commands + +### `devspace update dependencies` +If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: +```bash +devspace update dependencies +``` + + +## Configuration + + diff --git a/docs/pages/configuration/dependencies/basics.mdx b/docs/pages/configuration/dependencies/basics.mdx deleted file mode 100644 index d8e454564c..0000000000 --- a/docs/pages/configuration/dependencies/basics.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Dependencies -sidebar_label: "Basics" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: - -- You want to reuse an already existing `devspace.yaml` of another project -- You want to define a more complex pipeline with multiple build, hook and deploy steps -- You want to define a common build / deploy step for other projects - -Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. - - - - -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - ports: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - vars: - - name: ROOT_PASSWORD - value: ${ROOT_PASSWORD} -``` - - - - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - - - - -## Dependency Source -DevSpace is able to work with dependencies from the following sources: -- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration -- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) - - -## Execution Order - -Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 - dev: - sync: true -- name: dep2 - source: - path: dep2 - dev: - ports: true -images: - image1: - image: myimage/image -deployments: -- name: deployment1 - helm: - ... -dev: - ports: ... - sync: ... -``` - -### Explanation -In the above `devspace.yaml`, execution order would be as followed: -* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) -* Execute dependency dep2's pull secrets, image building & deployments -* Build image `image1` -* Deploy deployment `deployment1` -* Start merged portforwarding from `dep2` and `dev.ports` -* Start sync from `dep1` and `dev.sync` - -## Referencing Dependencies - -### Reference Image Names -You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageSelector: ${runtime.dependencies.dep1.images.image1} -``` - -With `dep1/devspace.yaml`: -```yaml -images: - image1: - image: myusername/devspace -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: myusername/devspace -``` - -### Referencing Dependencies in Deployment Values / Manifests - -It is also possible to reference a dependency's image with [runtime variables](../variables/runtime-variables.mdx) in a deployment: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: ${runtime.dependencies.dep1.image1.image}:${runtime.dependencies.dep1.image1.tag} # -> replaced with 'myusername/devspace:xxxx' -``` - -With a dependency `dep1/devspace.yaml` that looks like: -```yaml -images: - image1: - image: myusername/devspace -``` - -## Dependency Resolution -When a DevSpace project has dependencies, DevSpace will: - -1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository -2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) -3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets -4. Remove the leave node from the tree and repeat step 3 until everything has been deployed - -The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. - -### Redundant Dependencies -If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. - -### Circular Dependencies -If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. - -## Useful Commands - -### `devspace update dependencies` -If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: -```bash -devspace update dependencies -``` diff --git a/docs/pages/configuration/dependencies/git-repository.mdx b/docs/pages/configuration/dependencies/git-repository.mdx index daac214a38..18a08c9d89 100644 --- a/docs/pages/configuration/dependencies/git-repository.mdx +++ b/docs/pages/configuration/dependencies/git-repository.mdx @@ -1,19 +1,12 @@ --- title: Deploy Git-based Dependencies -sidebar_label: "source.git" +sidebar_label: "from git://..." --- -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; +import ConfigPartialDependencyGit from '../_partials/v2beta1/dependencies/group_git.mdx' +import ConfigPartialDependencyExecution from '../_partials/v2beta1/dependencies/group_execution.mdx' -## Example ```yaml dependencies: - name: api-server @@ -36,144 +29,15 @@ dependencies: ports: true dev: terminal: - imageSelector: ${runtime.dependencies.api-server.images.server-image} + imageSelector: ghcr.io/org/project/image ``` :::info Authentication DevSpace is using the git credential store. So, if you are able to clone or pull from the specified repository, DevSpace will also be able clone or pull this repository. ::: -## `source` -### `source.git` -The `source.git` option expects a string with the URL of a git repository. DevSpace will use the `master` branch by default and assumes that the `devspace.yaml` is located at the root directory of the git repository. To customize this behavior, use the following, complementary config options: -- [`branch` for a different git branch](#sourcebranch) -- [`tag` for a specific git tag or release](#sourcetag) -- [`revision` for a specific git commit hash](#sourcerevision) -- [`subPath` for custom location of `devspace.yaml` within the repository](#sourcesubpath) +## Configuration -:::note Caching -DevSpace will clone the git repository which is defined as a dependency and cache the project in the global cache folder (i.e. `$HOME/.devspace`). DevSpace will also pull new commits before deploying the dependency. -::: - -#### Example: Git Projects as Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable -- source: - git: https://github.com/my-auth-server - revision: c967392 -- source: - git: https://github.com/my-auth-server - tag: v3.0.1 -``` -**Explanation:** -- When you run `devspace deploy` or `devspace dev` for the first time after defining the dependencies, DevSpace will check out all git projects into the global cache folder `$HOME/.devspace`. -- Whenever you run `devspace deploy` or `devspace dev` (even the first time), DevSpace will: - - Run a `git pull` for all cached repositories. - - Load the `devspace.yaml` files of the dependency projects and resolve their dependencies respectively. - - Deploy all dependency projects according to their `devspace.yaml` files. - -### `source.branch` -The `source.branch` option expects a string stating the branch of the git repository referenced via `source.git` that should be used when deploying this dependency. - -#### Default Value For `source.branch` -```yaml -branch: master -``` - -### `source.tag` -The `source.tag` option expects a string stating a tag of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.revision` -The `source.revision` option expects a string stating a commit hash of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.subPath` -The `source.subPath` option expects a string stating a folder within the git repository referenced via `source.git` that contains the `devspace.yaml` for this dependency. - -#### Default Value For `source.subPath` -```yaml -subPath: / -``` - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name within the git repository's `source.subPath` folder. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file dev.yaml for the dependency's DevSpace configuration -# at the root folder of the repository's "stable" branch -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable - configName: dev.yaml -``` - - -## Git Options - -### `source.disableShallow` -The `source.disableShallow` option expects a boolean that prevents DevSpace from using shallow clones (git flag `--depth 1`) when retrieving a dependency via git clone. - -:::info Shallow Clone By Default -DevSpace uses shallow clones of git dependencies which reduces the time to retrieve the dependency. -::: - -#### Default Value For `source.disableShallow` -```yaml -disableShallow: false -``` - -### `source.cloneArgs` -The `source.cloneArgs` option expects an array of additional arguments that DevSpace will pass when cloning a git dependency using the `git clone` command. - -#### Default Value For `source.cloneArgs` -```yaml -cloneArgs: [] -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - + + diff --git a/docs/pages/configuration/dependencies/local-folder.mdx b/docs/pages/configuration/dependencies/local-folder.mdx index ebbf86ec81..b74d6d1e58 100644 --- a/docs/pages/configuration/dependencies/local-folder.mdx +++ b/docs/pages/configuration/dependencies/local-folder.mdx @@ -1,106 +1,34 @@ --- title: Deploy Path-Based Local Dependencies -sidebar_label: "source.path" +sidebar_label: "from path/" --- -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; +import ConfigPartialDependencyPath from '../_partials/v2beta1/dependencies/group_path.mdx' +import ConfigPartialDependencyExecution from '../_partials/v2beta1/dependencies/group_execution.mdx' -## Example ```yaml dependencies: - name: component-1 source: path: ./different/component-1 + path: ./different/component-1 - name: component-2 source: path: ./different/component-2 + path: ./different/component-2 deployments: +- name: use-dependency-image - name: use-dependency-image helm: componentChart: true values: containers: - - image: ${runtime.dependencies.component-1.image1} -``` - -## `source` - -### `source.path` -The `source.path` option expects a string with a relative path to a folder that contains a `devspace.yaml` which marks a project that is a dependency of the project referencing it. - -#### Example: Local Project as Dependency -```yaml -dependencies: -- source: - path: ../other-project -- source: - path: ./different/subproject + - image: ghcr.io/org/project/image + - image: ghcr.io/org/project/image ``` -**Explanation:** -- Whenever you run `devspace deploy` or `devspace dev`, DevSpace will: - - Load the `devspace.yaml` files of both dependencies and resolve their dependencies respectively. - - Deploy both projects according to their `devspace.yaml` files. - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name. If not provided, `devspace.yaml` at the dependency `source.path` will be used. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file component-1/dev.yaml -# for the dependency's DevSpace configuration -dependencies: -- source: - path: component-1 - configName: dev.yaml -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - -### `dev` +## Configuration - + + diff --git a/docs/pages/configuration/deployments/README.mdx b/docs/pages/configuration/deployments/README.mdx new file mode 100644 index 0000000000..e11ddc1a09 --- /dev/null +++ b/docs/pages/configuration/deployments/README.mdx @@ -0,0 +1,100 @@ +--- +title: Deployments +sidebar_label: Basics +--- + +import ConfigPartialDeployments from '../_partials/v2beta1/deployments.mdx' + + +The `deployments` section in `devspace.yaml` defines Helm charts, Kubernetes manifests and Kustomizations that can deployed using the [`create_deployments` function](../functions/README.mdx#create_deployments). + + +## Workflow +To deploy resources with DevSpace, you need to: +1. Define the `deployments` section of `devspace.yaml` +2. Call the `create_deployments` function inside the `pipelines` section of `devspace.yaml` +3. Execute the respective pipeline + + +### 1. Define Deployments +To deploy to Kubernetes using DevSpace, we need to define `deployments` in `devspace.yaml`: +```yaml title=devspace.yaml +version: v2beta1 +deployments: + configs: + kubectl: + manifests: + - ./api/deploy/configmap.yaml + - ./payments/deploy/configmap.yaml + api: + helm: + chart: + name: component-chart + repo: https://charts.devspace.sh + values: + containers: + - image: ghcr.io/loft-sh/devspace-example-api + service: + ports: + - port: 8080 + payments: + helm: + chart: + name: ./payments/chart/ + valuesFiles: + - ./payments/helm-values-dev.yaml + auth: + helm: + chart: + name: auth-server-chart + version: 3.2.1 + repo: https://mycompany.tld/helm/ + values: + ... +``` +The example above defines 4 deployments: +- `configs` which deploys two ConfigMap objects to Kubernetes from plain manifest files +- `api` which is deployed from the component chart provided by DevSpace +- `payments` which is deployed using a local Helm chart that is located in a folder +- `auth` which is deployed from a chart that has been pushed to a Helm repository + + +### 2. Call `create_deployments` in Pipeline +DevSpace deploys resources to Kubernetes when the [`create_deployments` function](../functions/README.mdx#create_deployments) is called within `pipelines` as shown in this example: + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + # highlight-start + dev: |- + create_deployments --all + start_dev --all + deploy: |- + build_images --all + create_deployments --all + deploy-api: |- + create_deployments api + deploy-ordered: |- + create_deployments auth + create_deployments api payments + # highlight-end + +deployments: + api: ... # see example above + payments: ... # see example above + auth: ... # see example above +``` + + +### 3. Run Pipeline +Given the example above, you can now run: +- `devspace deploy` or `devspace dev` to deploy all deployments +- `devspace run-pipeline deploy-api` to deploy only the component chart deployment named `api` +- `devspace run-pipeline deploy-ordered` to + 1. First deploy `auth` (blocking) + 2. Then deploy `api` and `payments` in parallel + + +## Configuration + + diff --git a/docs/pages/configuration/deployments/basics.mdx b/docs/pages/configuration/deployments/basics.mdx deleted file mode 100644 index 0447586dfc..0000000000 --- a/docs/pages/configuration/deployments/basics.mdx +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Deployments -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; - -Deployments are configured within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction - -- name: "deployment-2" # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml - -- name: "deployment-3" # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... - -- name: "deployment-4" # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction -``` - - - - -```yaml -deployments: -- name: database # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... -- name: backend # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - kustomize: true - manifests: - - app/kustomization/ -``` - - - - -:::info Sequential and Concurrent Deployment -Unlike images, which are built in parallel by default, deployments will be deployed sequentially following the order in which they are specified in the `devspace.yaml`. If a deployment has `concurrent: true` set, then it will run before any sequential deployments and in parallel with other deployments that also have concurrency enabled. -::: - -## Run Deployments -When you run one of the following commands, DevSpace will run the deployment process: -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger the deployment process: -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - -## Deployment Process -DevSpace loads the `deployments` configuration from `devspace.yaml` and by default deploys each deployment sequentially in the order that they are specified in the `deployments` array. Alternatively, some or all deployments can be configured to deploy in parallel by setting `concurrent: true`. Deployments with concurrency enabled will deploy before sequential deployments. Additionally, DevSpace also deploys related projects specified in `dependencies`. - -:::warning Helm hooks and concurrency -When using concurrency for Helm deployments that have Helm hooks, be cautious if those hooks depend on resources created by other deployments. You may want such a deployments to be run sequentially after concurrent deployments are completed. Otherwise, appropriate retry logic will be necessary for the affected Helm hook in order to avoid deployment failure. -::: - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - -
- ---- - -## Useful Commands - -### `devspace list deployments` -This command lists all deployments and their status: -```bash -devspace list deployments -``` - -### `devspace render` -This command prints all Kubernetes manifests that would be created when running `devspace deploy` or `devspace dev` but without actually deploying them to the cluster: -```bash -devspace render -``` -In case of Helm deployments, this command behaves similar to `helm install --dry-run --debug` - -:::info Image Building & Tag Replacement -This command will build images (if necessary) and update the tags within manifests and Helm chart values. -::: diff --git a/docs/pages/configuration/deployments/helm/README.mdx b/docs/pages/configuration/deployments/helm/README.mdx new file mode 100644 index 0000000000..a9821eed4f --- /dev/null +++ b/docs/pages/configuration/deployments/helm/README.mdx @@ -0,0 +1,109 @@ +--- +title: Deploy Helm Charts +sidebar_label: helm +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ConfigPartial from '../../_partials/v2beta1/deployments/helm.mdx' +import FragmentInfoComponentChart from '../../../_partials/info-component-chart.mdx'; + +To deploy Helm charts, you need to configure them within the `deployments` section of the `devspace.yaml`. + +## Examples + + + + +```yaml +deployments: + backend: + helm: + chart: + name: component-chart + repo: https://charts.devspace.sh + values: + containers: + - image: reg.tld/username/devspace + service: + ports: + - port: 3000 +``` + + + + + + +```yaml {4-6} +deployments: + backend: + helm: + chart: + name: chart-name + repo: https://my-charts.company.tld/ + values: + # If registry.url/repo/image was found under images as well, will be + # rewritten to registry.url/repo/image:generated_tag + imageWithTag: registry.url/repo/image + # If registry.url/repo/image was found under images.app as well, will be + # rewritten to registry.url/repo/image + imageWithoutTag: ${runtime.images.app.image} + # If registry.url/repo/image was found under images.app as well, will be + # rewritten to generated_tag + onlyTag: ${runtime.images.app.tag} +``` + + + + +```yaml {5} +deployments: + backend: + helm: + chart: + name: ./path/to/chart + values: + # If registry.url/repo/image was found under images as well, will be + # rewritten to registry.url/repo/image:generated_tag + imageWithTag: registry.url/repo/image + # If registry.url/repo/image was found under images.app as well, will be + # rewritten to registry.url/repo/image + imageWithoutTag: ${runtime.images.app.image} + # If registry.url/repo/image was found under images.app as well, will be + # rewritten to generated_tag + onlyTag: ${runtime.images.app.tag} +``` + + + + + +```yaml {5} +deployments: + backend: + helm: + chart: + git: https://github.com//.git + # optional git configs + branch: branchName + tag: tag + revision: revision + subPath: subpath/chartdir +``` + + + + + +## Config Reference + + diff --git a/docs/pages/configuration/deployments/helm/chart/README.mdx b/docs/pages/configuration/deployments/helm/chart/README.mdx new file mode 100644 index 0000000000..c4f9dac4f5 --- /dev/null +++ b/docs/pages/configuration/deployments/helm/chart/README.mdx @@ -0,0 +1,16 @@ +--- +title: Helm Charts +sidebar_label: Chart +--- + +import ConfigPartial from '../../../_partials/v2beta1/deployments/helm/chart.mdx' + +DevSpace can deploy any Helm chart, including: +- [The DevSpace component-chart](./component-chart.mdx) +- [Local charts](./local.mdx) stored on your filesystem +- [Remote charts](./remote.mdx) stored in a remote Helm registry, in another git repository (e.g. infra repo), etc. + + +## Config Reference + + diff --git a/docs/pages/configuration/deployments/helm/chart/component-chart.mdx b/docs/pages/configuration/deployments/helm/chart/component-chart.mdx new file mode 100644 index 0000000000..84a0eb8322 --- /dev/null +++ b/docs/pages/configuration/deployments/helm/chart/component-chart.mdx @@ -0,0 +1,35 @@ +--- +title: Deploy Applications via Component Chart +sidebar_label: Component Chart +--- + +import ConfigPartial from '../../../_partials/v2beta1/deployments/helm/componentChart/reference.mdx' + + +DevSpace provides a built-in general purpose Helm chart that allows you to deploy applications without creating your own Helm chart. The idea of this chart is to be quite generic, so that it is suitable to deploy most applications with it by just customizing the values passed to the chart. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + api: + helm: + chart: + name: component-chart + repo: https://charts.devspace.sh + values: + containers: + - image: ghcr.io/loft-sh/devspace-example-api + service: + ports: + - port: 8080 +``` + +:::info Values Validation +Because the component chart is embedded into DevSpace itself, DevSpace will parse the `values` for a component-chart deployment and is able to run a config validation against the [component-chart's values specification](#values-reference). +::: + + +## Values Reference +The component chart supports the following fields for its `values`: + + diff --git a/docs/pages/configuration/deployments/helm/chart/local.mdx b/docs/pages/configuration/deployments/helm/chart/local.mdx new file mode 100644 index 0000000000..09091799af --- /dev/null +++ b/docs/pages/configuration/deployments/helm/chart/local.mdx @@ -0,0 +1,59 @@ +--- +title: Deploy Local Charts +sidebar_label: Local Chart +--- + +DevSpace can deploy Helm charts located on the same filesystem as the `devspace.yaml` file. + + +## Local Charts vs Dependencies +If you have multiple services located in the same git repository (monorepo), you may be tempted to have a single `devspace.yaml` at the root of the git repository and then specify one deployment for each service using a local path to each service's chart folder, for example. However, ideally you want to encapsule the build, deployment and development logic for each service inside a separate devspace.yaml that is located very closely to the actual code. + +Instead of creating one giant `devspace.yaml` at the root of a monorepo, it's recommended to create separate `devspace.yaml` files in each sub-project contained in the monorepo because this has several benefits: +1. It keeps the `devspace.yaml` for each microservice small and bundled with the actual microservice itself. +2. It allows you work on microservices independenctly (start a `devspace dev` session for each service if needed) +3. It only pulls in and deploys other microservices if they are actually needed. + +**Dependencies:** DevSpace provides a feature called [`dependencies`](../../../dependencies/README.mdx) which allows you to define relationships between `devspace.yaml` files to allow users to start working on a service while DevSpace stands up and maintains dependent microservices if needed. + + +## Chart Sources +To deploy a local Helm chart, you need to tell DevSpace where to locate the chart. + +### From Folder +A common structure is to have a folder in your git repository which contains the Helm chart for this service. In this case, use the `path` field to specify the path to the Helm chart folder relative to the `devspace.yaml` file. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + payments: + helm: + chart: + // highlight-start + path: ./payments/chart/ + // highlight-end + values: + key: value + ... + valuesFiles: + - ./payments/helm-values-dev.yaml +``` + +### From Tar Archive +In case you want to deploy a Helm chart that has been archived to a `tar` file (or a compressed `.tar.gz` for example), you can use the `path` field to specify the path to the archive file relative to the `devspace.yaml` file. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + payments: + helm: + chart: + // highlight-start + path: ./payments/chart.tar.gz + // highlight-end + values: + key: value + ... + valuesFiles: + - ./payments/helm-values-dev.yaml +``` diff --git a/docs/pages/configuration/deployments/helm/chart/remote.mdx b/docs/pages/configuration/deployments/helm/chart/remote.mdx new file mode 100644 index 0000000000..917c73f33b --- /dev/null +++ b/docs/pages/configuration/deployments/helm/chart/remote.mdx @@ -0,0 +1,158 @@ +--- +title: Deploy Remote Charts +sidebar_label: Remote Chart +--- + +import HelmRepoChartConfigPartial from '../../../_partials/v2beta1/deployments/helm/chart/group_repo.mdx' +import GitChartConfigPartial from '../../../_partials/v2beta1/deployments/helm/chart/group_git.mdx' + + +Just like Helm itself, DevSpace supports the deployment of Helm charts that need to be downloaded from a remote location. + +:::info Artifact Hub +If you are looking for Helm charts for standard off-the-shelf software components such as databases, message queues, etc., you may want to search for prepackaged Helm charts on [Artifact Hub](https://artifacthub.io/) rather than creating and maintaining your own charts for everything. + +To deploy Helm charts from Artifact Hub, follow the instructions for [Charts from Helm Repositories](#from-helm-repository). +::: + + +## Remote Charts vs Dependencies +If you have several other microservices that are required to work on the current project, you may want to consider if these microservices already have a `devspace.yaml` or should ideally have one at some point. DevSpace provides a feature called [`dependencies`](../../../dependencies/README.mdx) which allows you to define relationships between `devspace.yaml` files to allow users to start working on a service while DevSpace stands up and maintains dependent microservices if needed. + +Everything that belongs to the current project itself and is not directly developed by you (e.g. a mysql database, a redis cache, etc.) should be defined as a `deployment` in this project. However, any other related microservices that you own and develop separately should rather be defined a [`dependencies`](../../../dependencies/README.mdx) instead of as remote chart deployments. + + +## Source + +### From Helm Repository +To deploy a Helm chart from a Helm repository, specify at least `name` and `repo` for the respective Helm deployment in `devspace.yaml`. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + database: + helm: + chart: + // highlight-start + name: mysql + repo: https://charts.bitnami.com/bitnami + version: 9.0.0 + // highlight-end + values: + ... +``` + + +
+ + +#### Config Reference For Helm Repository Charts + + + + + +
+ +
+ + +#### Authentication For Helm Repositories + + + +If you need to authenticate with the Helm repository, you can provide the `username` and `password` fields: +```yaml title=devspace.yaml +version: v2beta1 +deployments: + database: + helm: + chart: + name: mysql + repo: https://charts.bitnami.com/bitnami + version: 9.0.0 + // highlight-start + username: john + password: ${HELM_REPO_PASSWORD} + // highlight-end + values: + ... +``` + +
+ +:::caution Local Repo Names +When deploying charts, make sure to specify the full URL to the Helm chart repository that contains the respective chart. Do **not** use the local shortcut name for your repository. + +If, for example, you would locally run this Helm install command: +```bash +helm install database bitnami/mysql --version 9.0.0 +``` +Transferring this to DevSpace could look like this: + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + database: + helm: + chart: + name: bitnami/mysql # DO NOT USE THIS / This line is problematic! + version: 9.0.0 + values: + ... +``` + +You can see the `bitnami/mysql` chart name in this install command. This chart name includes `bitnami/` as a prefix which looks on your local machine for the Helm repository you added as `bitnami`. Unfortunately, this is only available on your local machine and is hard to transfer to other team members. + +To make sure your `devspace.yaml` can be used by anyone, do not specify the `bitnami/` prefix and instead specify the full Helm repository URL using the `repo` field: + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + database: + helm: + chart: + name: mysql + repo: https://charts.bitnami.com/bitnami + version: 9.0.0 + values: + ... +``` + +::: + + +### From Tar Archive +If your Helm chart has not been pushed to a Helm repository but can be downloaded as a tar archive from a web server, you can tell DevSpace to deploy using the URL of the tar archive. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + api: + helm: + chart: + name: https://mycompany.tld/example-api-server.tar.gz + values: + ... +``` + + +### From Git Repository +If the chart you want to deploy is not (yet) pushed to a Helm repository or available as a tar archive, you can tell DevSpace to retrieve it from a git repository. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + api: + helm: + chart: + git: https://github.com/loft-sh/example-api-server.git + subPath: ./chart/ + tag: v1.2.3 + values: + ... +``` + +The following config fields are available to specify git-based Helm deployments: + + diff --git a/docs/pages/configuration/deployments/helm/values.mdx b/docs/pages/configuration/deployments/helm/values.mdx new file mode 100644 index 0000000000..5141aa775a --- /dev/null +++ b/docs/pages/configuration/deployments/helm/values.mdx @@ -0,0 +1,82 @@ +--- +title: Specifying Helm Values +sidebar_label: Values +--- + +DevSpace allows you to pass values to your Helm charts either inline within `devspace.yaml` or using external yaml files. + + +## Inline Values +To specify the values for a Helm deployment directly within `devspace.yaml`, use the `values` field and define the values according to the values specification of the Helm chart that you are deploying. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + api: + helm: + chart: + name: component-chart + repo: https://charts.devspace.sh + // highlight-start + values: + containers: + - image: ghcr.io/loft-sh/devspace-example-api + service: + ports: + - port: 8080 + // highlight-end +``` + +## Load Values From Files +DevSpace allows you to load Helm values from one or even multiple yaml files using the `valuesFiles` field. + +```yaml title=devspace.yaml +version: v2beta1 +deployments: + api: + helm: + chart: + name: component-chart + repo: https://charts.devspace.sh + values: + service: + port: ${SERVICE_PORT} + // highlight-start + valuesFiles: + - chart/values_common.yaml + - chart/values_dev.yaml + // highlight-end +``` + +:::info Precedence +The `valuesFiles` field is an ordered array, i.e. that yaml fields from the beginning of the array can be overwritten by values specified in other yaml files that are further down in the `valuesFiles` list. +::: + +:::caution Limitations +If you use the `valuesFiles` feature, it is important to understand that the values are loaded as static yaml values. That means that DevSpace features such as `${VARIABLES}`, inline `$(COMMANDS)` and other templating options are **not** available. + +To overcome such limitations, define inline values via the `values` fields for everything that needs these features (see example above). You can always combine `values` and `valuesFiles`. +::: + + +## Combine `values` + `valuesFiles` +Combine inline and file-based values +DevSpace allows you to specify `values` (for inline values) and `valuesFiles` (for loading values from external yaml files) alongside each other. + + +## Update Image Tags +If the `updateImageTags` is set to `true`, DevSpace searches through the Helm values for this deployment (specified via `values` or `valuesFiles`) and tries to find any images in the Helm values that are also defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it updates the image tag in the Helm values dynamically, so the tag in the Helm values matches the tag that DevSpace created during the most recent image building process for this image. Image tag updates make sure that your application will always be started with the most up-to-date image that DevSpace has built for you. + +#### Example: Enable Tag Updates +```yaml {3} +deployments: + database: + updateImageTags: true + helm: + chart: + name: bitnami/mysql +``` + +:::info In-Memory Tag Replacement +Updating image tags takes place **in-memory** and DevSpace will **not** write anything to the filesystem, i.e. it will **never** change any of your configuration or Helm values files. +::: diff --git a/docs/pages/configuration/deployments/kubectl/README.mdx b/docs/pages/configuration/deployments/kubectl/README.mdx new file mode 100644 index 0000000000..79ff59a148 --- /dev/null +++ b/docs/pages/configuration/deployments/kubectl/README.mdx @@ -0,0 +1,16 @@ +--- +title: Deploy with kubectl +--- + + +import ConfigPartial from '../../_partials/v2beta1/deployments/kubectl.mdx' + + +DevSpace supports two types of deployments aside from Helm charts: +- [`Kubernetes manifests`](./manifests.mdx) (think `kubectl apply -f manifest.yaml`) +- [`Kustomizations`](./kustomizations.mdx) (think `kubectl apply -k kustomization/`) + + +## Config Reference + + diff --git a/docs/pages/configuration/deployments/kubectl/kustomizations.mdx b/docs/pages/configuration/deployments/kubectl/kustomizations.mdx new file mode 100644 index 0000000000..97f2801db4 --- /dev/null +++ b/docs/pages/configuration/deployments/kubectl/kustomizations.mdx @@ -0,0 +1,99 @@ +--- +title: Deploy Kustomizations +sidebar_label: Kustomizations +--- + +import FragmentKubectlApplyArgs from '../../../_partials/kubectl-options-applyArgs.mdx'; +import FragmentKubectlBinaryPath from '../../../_partials/kubectl-options-binaryPath.mdx'; +import FragmentKubectlKustomize from '../../../_partials/kubectl-kustomize.mdx'; +import FragmentKustomizeKustomizeArgs from '../../../_partials/kustomize-options-kustomizeArgs.mdx'; +import FragmentUpdateImageTags from '../../../_partials/kubectl-updateImageTags.mdx'; + +To deploy Kustomizations using `kustomize` / `kubectl apply -k`, you need to configure them within the `deployments` section of the `devspace.yaml`. + +## Example +```yaml {4} title=devspace.yaml +deployments: + my-deployment: + kubectl: + kustomize: true + manifests: + - my-kustomization/ + - another-kustomization/ +``` + +The above example will be executing during the deployment process as follows if the `kustomize` binary is not installed: +```bash +kubectl apply -k my-kustomization/ +kubectl apply -k another-kustomization/ +``` + +:::caution Kustomize Deployments +DevSpace only uses `kustomize build` to render the manifest templates. The actual deployment will be executed using `kubectl apply`. +::: + + +## `kustomize` vs `kubectl -k` +Kustomization deployments require `kubectl` or `kustomize` to be installed. If both are available, DevSpace will use the `kustomize` binary by default. + +DevSpace also provides the `kustomizeBinaryPath` field which expects a path to the `kustomize` binary. By default, DevSpace will use the `kustomize` located on your `$PATH`. Use this to specify a location for `kustomize` if it is not on your `$PATH`. + +#### Example: Setting Path To Kustomize Binary +```yaml +deployments: + backend: + kubectl: + kustomize: true + kustomizeBinaryPath: /path/to/kustomize + manifests: + - backend/ +``` +Deploying the above example would use the `/path/to/kustomize` binary to render the manifests. + + +:::warning +Setting `kustomizeBinaryPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kustomize` to your `$PATH` environment variable instead. +::: + + + +## Update Image Tags + + + + +## Extra Arguments +When deploying manifests via `kubectl`, DevSpace can pass additional arguments and flags to the `kubectl` commands used for the deployment process. + +### Args For `kubectl create` +The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. + +#### Example: Custom Kubectl Args & Flags +```yaml +deployments: + backend: + kubectl: + manifests: + - backend/ + createArgs: + - "--recursive" +``` +**Explanation:** +Deploying the above example would roughly be equivalent to this command: +```bash +kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ +``` + +:::info Kustomize Deployments +DevSpace only uses `kustomize create` to render the manifests using the default flags `--dry-run --output yaml --validate=false`. The actual deployment will be executed using `kubectl apply` after DevSpace has replaced the image tags within the rendered manifests in memory. +::: + + +### Args For `kubectl apply` + + + + +### Args For `kustomize` + + diff --git a/docs/pages/configuration/deployments/kubectl/manifests.mdx b/docs/pages/configuration/deployments/kubectl/manifests.mdx new file mode 100644 index 0000000000..043f9eb128 --- /dev/null +++ b/docs/pages/configuration/deployments/kubectl/manifests.mdx @@ -0,0 +1,77 @@ +--- +title: Deploy Kubernetes Manifests +sidebar_label: Manifests +--- + +import FragmentKubectlApplyArgs from '../../../_partials/kubectl-options-applyArgs.mdx'; +import FragmentKubectlBinaryPath from '../../../_partials/kubectl-options-binaryPath.mdx'; +import FragmentKubectlKustomize from '../../../_partials/kubectl-kustomize.mdx'; +import FragmentKustomizeKustomizeArgs from '../../../_partials/kustomize-options-kustomizeArgs.mdx'; +import FragmentUpdateImageTags from '../../../_partials/kubectl-updateImageTags.mdx'; + +To deploy Kubernetes manifests with `kubectl apply`, you need to configure them within the `deployments` section of the `devspace.yaml`. + + +## Example +```yaml title=devspace.yaml +pipelines: + dev: + run: | + create_deployments backend + create_deployments frontend +deployments: + backend: + kubectl: + manifests: + - backend/ + - backend-extra/ + frontend: + kubectl: + manifests: + - frontend/manifest.yaml +``` + +The above example will be executed during the deployment process as follows: +```bash +kubectl apply -f backend/ +kubectl apply -f backend-extra/ +kubectl apply -f frontend/manifest.yaml +``` + + +## Update Image Tags + + + + +## `kubectl` Binary +Deployments with `kubectl` require `kubectl` to be installed. If the `kubectl` binary cannot be found within the `$PATH` variable and it is not specified by specifying the [`kubectlBinaryPath` option](./README.mdx#deployments-kubectl-kubectlBinaryPath), DevSpace will download the `kubectl` binary into the `$HOME/.devspace/bin` folder. + + + +## Extra Arguments +When deploying manifests via `kubectl`, DevSpace can pass additional arguments and flags to the `kubectl` commands used for the deployment process. + +### Args For `kubectl create` +The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. + +#### Example: Custom Kubectl Args & Flags +```yaml +deployments: + backend: + kubectl: + manifests: + - backend/ + createArgs: + - "--recursive" +``` +**Explanation:** +Deploying the above example would roughly be equivalent to this command: +```bash +kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ +``` + + +### Args For `kubectl apply` + + diff --git a/docs/pages/configuration/dev/README.mdx b/docs/pages/configuration/dev/README.mdx new file mode 100644 index 0000000000..b7e9b2cac1 --- /dev/null +++ b/docs/pages/configuration/dev/README.mdx @@ -0,0 +1,74 @@ +--- +title: Development Mode +sidebar_label: Basics +--- + +import FragmentWarningMultipleDev from '../../_partials/warning-multiple-dev.mdx'; +import FragmentWorkflowDeployDependencies from '../../_partials/workflow-deploy-dependencies.mdx'; +import FragmentWorkflowBuildImages from '../../_partials/workflow-build-images.mdx'; +import FragmentWorkflowReplaceTags from '../../_partials/workflow-replace-tags.mdx'; +import FragmentWorkflowDeployProject from '../../_partials/workflow-deploy-project.mdx'; +import FragmentNoteGeneralPurposeCommand from '../../_partials/note-general-purpose-command.mdx'; +import FragmentWorkflowOpenLinks from '../../_partials/workflow-open-links.mdx'; +import ConfigPartial from '../_partials/v2beta1/dev.mdx' +import ConfigPartialSelector from '../_partials/v2beta1/dev/group_selector.mdx' +import ConfigPartialModifications from '../_partials/v2beta1/dev/group_modifications.mdx' + +A lot of teams configure DevSpace so that the development experience is very similar to using `docker-compose` but with the additional benefits of running inside Kubernetes, having a reproducible dev environment that is as close to production as it gets. If an engineer is already familiar with how to develop with `docker-compose`, DevSpace will be easy to get started with. + + +## Dev Containers +Dev containers are central to the DevSpace-based development experience. A dev container serves as a remote work environment for the engineer that is connected to the local machine of the engineer via port forwarding, file sync, etc. These connections allow engineers to work with their local IDE or with any cloud IDE without having to change their habits and familiar workflows. + +DevSpace can turn any container into a dev container, no matter if this container has been deployed by DevSpace or by another tool. That means you could use a GitOps tool like ArgoCD for deployment of your dev environments and then use DevSpace to connect to the deployed applications to debug and develop them inside your dev cluster. + +To define a dev container, you need to configure the `dev` section of `devspace.yaml` and first: +1. [Define a selector](#1-select-container) that matches a pod/container running inside your Kubernetes cluster +2. [Modify selected container](#2-modify-container-for-development) to prepare it for the use as remote development environment +3. Optionally [modify the dev container](#3-modify-container-for-development) to optimize it for the use as remote development environment + + +## 1. Select Container +DevSpace provides several ways to select a pod/container. The most common option to select a container is by defining an `imageSelector` which selects the container that runs the specified image. Alternatively, you could also use the `labelSelector` that is a common pattern in Kubernetes to select objects in a cluster. + + + +:::tip Logical `&&` For Selectors +If multiple selectors (e.g. `imageSelector` and `labelSelector`) are specified, DevSpace will combine them with a logical AND (`&&`) when looking for a pod/container to match the specified conditions. +::: + + +## 2. Add Dev Connections +Dev connections defines how your local machine and IDE is connected to the dev container that runs in Kubernetes. + +Common dev connections include: +- **[Bi-directional file sync](./connections/file-sync.mdx)** to make sure files on localhost and inside the containers main working dir are kept in sync +- **[Port forwarding (and reverse port forwarding)](./connections/port-forwarding.mdx)** to allow engineers to access services inside the dev container via localhost on their local machine (and vice versa) +- **[Connecting the local terminal to the dev container](./connections/terminal.mdx)** either by starting a new terminal session, by attaching the container's entrypoint process, or by simply streaming the container logs +- **[Injecting an SSH server into the dev container](./connections/ssh.mdx)** to SSH into the container, e.g. to use the remote environment capabilities in IDEs such as VS Code +- **[Auto-restart the container](./connections/restart-helper.mdx)** to create a hot reloading experience without the need for image building +- **[Proxy certain commands](./connections/proxy-commands.mdx)** to make commands on the local machine accessible inside the container (e.g. be able to run `kubectl` commands inside the dev container without having to copy credentials inside the dev container) +- **[Auto-open URLs](./connections/open.mdx)** to provide a starting point for the engineer when the dev container is ready to go + + +## 3. Modify Container For Development +Because the idea behing dev containers is that you just deploy your prod/stable containers and then turn one or even multiple containers into dev containers later on when you actually want to work on them, DevSpace allows you to make modifications for these containers on-the-fly. + +A common example for modifying a container to optimize it for development would be to use the `devImage` feature which tells DevSpace to swap out the container's prod/stable image with a prebuilt dev-optimized image (e.g. that contains a remote debugger and other dev tooling). + + + + + +## Start Development Mode +Start the development mode using this command: +```bash +devspace dev +``` + + + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/README.mdx b/docs/pages/configuration/dev/connections/README.mdx new file mode 100644 index 0000000000..3d2ca13334 --- /dev/null +++ b/docs/pages/configuration/dev/connections/README.mdx @@ -0,0 +1,39 @@ +--- +title: Dev Workflows +--- + +import ConfigPartialSync from '../../_partials/v2beta1/dev/sync.mdx' +import ConfigPartialPorts from '../../_partials/v2beta1/dev/ports.mdx' +import ConfigPartialReversePorts from '../../_partials/v2beta1/dev/reversePorts.mdx' +import ConfigPartialTerminal from '../../_partials/v2beta1/dev/terminal.mdx' +import ConfigPartialAttach from '../../_partials/v2beta1/dev/attach.mdx' +import ConfigPartialLogs from '../../_partials/v2beta1/dev/logs.mdx' +import ConfigPartialSSH from '../../_partials/v2beta1/dev/ssh.mdx' +import ConfigPartialRestartHelper from '../../_partials/v2beta1/dev/restartHelper.mdx' +import ConfigPartialProxyCommands from '../../_partials/v2beta1/dev/proxyCommands.mdx' +import ConfigPartialOpen from '../../_partials/v2beta1/dev/open.mdx' + +Dev connections defines how your local machine and IDE is connected to the dev container that runs in Kubernetes. + +Common dev connections include: +- **[Bi-directional file sync](./file-sync.mdx)** to make sure files on localhost and inside the containers main working dir are kept in sync +- **[Port forwarding (and reverse port forwarding)](./port-forwarding.mdx)** to allow engineers to access services inside the dev container via localhost on their local machine (and vice versa) +- **[Connecting the local terminal to the dev container](./terminal.mdx)** either by starting a new terminal session, by attaching the container's entrypoint process, or by simply streaming the container logs +- **[Injecting an SSH server into the dev container](./ssh.mdx)** to SSH into the container, e.g. to use the remote environment capabilities in IDEs such as VS Code +- **[Auto-restart the container](./restart-helper.mdx)** to create a hot reloading experience without the need for image building +- **[Proxy certain commands](./proxy-commands.mdx)** to make commands on the local machine accessible inside the container (e.g. be able to run `kubectl` commands inside the dev container without having to copy credentials inside the dev container) +- **[Auto-open URLs](./open.mdx)** to provide a starting point for the engineer when the dev container is ready to go + + +## Config Reference + + + + + + + + + + + diff --git a/docs/pages/configuration/dev/connections/file-sync.mdx b/docs/pages/configuration/dev/connections/file-sync.mdx new file mode 100644 index 0000000000..4ddfe8defa --- /dev/null +++ b/docs/pages/configuration/dev/connections/file-sync.mdx @@ -0,0 +1,440 @@ +--- +title: Configure File Synchronization +sidebar_label: File Sync +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/sync.mdx' + + +File sync in DevSpace establishes an ultra-fast sync connection between your local filesystem and your dev container and makes sure that all both filesystems are always in sync depending on which folders you map inside the `dev` section of `devspace.yaml`. + +:::tip Think `kubectl cp` on Steroids +You can think of the file sync in DevSpace as a much faster and smarter version of `kubectl cp` that continuously copies files whenever they change. +::: + + +When starting the development mode by running `start_dev` inside a pipeline, DevSpace starts the file sync as configured in the `dev.*.sync` section of the `devspace.yaml`. +```yaml title=devspace.yaml +deployments: + my-deployment: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + app: + imageSelector: ghcr.io/org/project/image + # highlight-start + sync: + # Map the local path "./" (= local working directory / project root) to the container path "/app" + - path: ./:/app + excludePaths: + - node_modules/ + # highlight-end +``` + +:::info Start Sync Only +To only start the file sync without the other functions of the development mode, use a custom pipeline or run the `devspace sync` command. +::: + + +## Sync Path Mapping +The following snippet shows a file sync configuration with 3 different path mappings: +```yaml title=devspace.yaml +dev: + app: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ # Map local working directory $workdir to remote working directory $remoteWorkdir + - path: my-folder:/tmp # Map local $workdir/my-folder to remote folder /tmp + - path: my-folder # Map local $workdir/my-folder to remote $remoteWorkdir/my-folder +``` + + +### Exclude Paths Inline +The config options for excluding paths use the same syntax as `.gitignore`. + +:::note +An exclude path that matches a folder recursively excludes all files and sub-folders within this folder. +::: + +The `excludePaths` option expects an array of strings with paths that should not be synchronized between the local filesystem and the remote container filesystem. + +```yaml {11-19} +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + excludePaths: + - logs/ + - more/logs/ + uploadExcludePaths: + - node_modules/ + downloadExcludePaths: + - tmp/ +``` +**Explanation:** +- Files in `logs/` and in `more/logs/` would not be synchronized at all. +- Files in `node_modules/` would only be synchronized from the container to the local filesystem, but not the other way around. +- Files in `tmp/` would only be synchronized from the local to the container filesystem, but not the other way around. + +#### Example: Only Sync Specific Folders + +```yaml {11-16} +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + excludePaths: + - '**' + - '!/my-folder-1/' + - '!/my-folder-2/' +``` +**Explanation:** +- All files will be excluded except those in folders `./my-folder-1/` and `./my-folder-2/` + +### Exclude Paths From File +The `excludeFile` option expects a path to a file from which the exclude paths can be loaded. Once loaded, the behavior is identical to the `excludePaths` option. This is useful for sharing a common list of exclude paths between many components. The earlier example, [Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization), can be converted to files as follows: + +```yaml {11-15} +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + excludeFile: .gitignore + uploadExcludeFile: upload.gitignore + downloadExcludeFile: download.gitignore +``` + + +:::info +This option is often useful if you want to download a dependency folder (e.g. `node_modules/`) for code completion but you never want to upload anything from there because of compiled binaries that are not portable between local filesystem and container filesystem (e.g. when your local system is Windows but your containers run Linux). +::: + + +## Sync-Triggered Actions +Sometimes it is useful to execute commands after the sync uploads files/directories between the local filesystem and the container. + +:::warning +Make sure that post-sync commands will **not** trigger a new sync process. This could lead to an **endless loop**. +::: + +### Delay Container Start +The `startContainer` option can be used to delay starting a container until sync has finished uploading all files initially. This is very useful if your container entrypoint requires certain files. This option requires `command` to be set because otherwise DevSpace will not know which command to start your container with. + +#### Example: Enable Container start +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + # required as DevSpace otherwise doesn't know + # what to start. + command: ["entrypoint", "to", "container"] + sync: + - path: ./ + startContainer: true # Will start the container after sync is done +``` + +:::note Multiple `startContainer` +If multiple sync paths with `startContainer` exist, DevSpace will wait for all to finish before starting the container. You can combine `startContainer` sync configurations and non `startContainer` configurations to customize when the container is actually started. +::: + + +### Restart Container +The `restartContainer` option expects a boolean which defines if DevSpace should restart the container every time either a single file or even a batch of files have been uploaded to the container using file sync. + +:::caution Restart Helper Required +Setting `restartContainer: true` requires you to also set `command: ["my", "container", "entrypoint"]`. Otherwise, DevSpace will not know which command to restart. +::: + +:::note When not to use this option +Using `restartContainer: true` is most useful if your application runs based on a compiled language and you are **not** using a framework or language specific tool which provides hot reloading capabilities. If you are using tools like nodemon or frameworks like React, Rails or Flask, they allow you to enable hot reloading which may be much faster than restarting the entire container. In this case you should disable `restartContainer`. +::: + +#### Example: Enable Container Restart + +```yaml {17} +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + # required as DevSpace otherwise doesn't know + # what to restart. + command: ["entrypoint", "to", "container"] + sync: + - path: ./ + onUpload: + restartContainer: true +``` + +### Run Command +The `onUpload.exec` option defines command(s) that should be executed after DevSpace uploaded files and folder to the container. DevSpace will ensure that those commands are not executed while initially syncing the state, and command execution will also halt any syncing activities. + +If this is defined together with `onUpload.restartContainer`, DevSpace will ensure that the commands are always executed **before** the container is restarted. + +#### Example: Post-Upload Commands +```yaml {14-29} +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + onUpload: + # These post-sync commands will be executed after DevSpace synced changes to the container in the given order + exec: + - command: |- + npm install + onChange: ["./package.json"] + - command: |- + echo 123 > local.txt + local: true # Execute this command locally instead of in the container + - command: "touch abc.txt" # string | Command that should be executed after DevSpace made changes + args: [] # string[] | Optional args that will force DevSpace to not execute the command in a shell + failOnError: false # bool | If true, DevSpace will restart the sync if the command fails (default: false) + local: false # bool | If true, DevSpace will run the command locally instead of in the container (default: false) + onChange: ["package.json"] # string[] | Optional array of file patterns that will trigger this command + name: my-command # string | DevSpace will print this name instead of the command when executing +``` + + +## Initial Sync + +### Initial Sync Strategy +The `initialSync` option expects a string with an initial sync strategy. The following strategies are available: + +`mirrorLocal` mirrors the local filesystem inside the container (default) + 1. deletes all files inside the conainer that are not existing on the local filesystem + 2. uploads all files which are existing on the local filesystem but are missing within the container + 3. resolves all file conflicts (different content on local filesystem than in inside the container) by preferring the file on the local filesystem (i.e. all files in the container will be replaced if they are different than on the local filesystem) + +`preferLocal` is like `mirrorLocal` but skips step 1. + +`mirrorRemote` mirrors the container files to the local filesystem: + 1. deletes all files on the local filesystem that do not exist inside the container + 2. downloads all files that exist inside the container, but are missing on the local filesystem + 3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the file within the container (i.e. all files on the local filesystem will be replaced if they are different than inside the container) + +`preferRemote` is like `mirrorRemote` but skips step 1. + +`preferNewest` merges local and remote filesystem while resolving all conflicts + 1. uploads all files which are existing on the local filesystem but are missing within the container + 2. downloads all files which are existing inside the container but are missing on the local filesystem + 3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the newest file (i.e. compares last modified timestamps and replaces all outdated files) + +`keepAll` merges local and remote filesystem without resolving any conflicts + +1. uploads all files which are existing on the local filesystem but are missing within the container +2. downloads all files which are existing inside the container but are missing on the local filesystem + + +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + excludePaths: + - node_modules/* + - path: ./node_modules/:/app/node_modules/ + initialSync: preferRemote +``` +**Explanation:** +With this configuration, `devspace dev` performs the following tasks: +- DevSpace would start port-forwarding and file synchronzation. +- Initial sync is started automatically. +- The first sync config section synchronizes all files except files within `node_modules/`. This means that during initial sync, all remote files that do not already exist locally are deleted, and other files are updated to the most recent version. +- The second sync config section only synchronizes files within `node_modules/`. Because of `initialSync: preferRemote`, DevSpace downloads all remote files which are not present on the local filesystem and overrides all local files which are different than the files within the container. + +### Wait For Initial Sync +The `waitInitialSync` option expects a boolean which defines if DevSpace should wait until the initial sync process has terminated before opening the container terminal or the multi-container log streaming. + +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + waitInitialSync: false +``` +**Explanation:** +With the configuration `devspace dev` does the following: +- DevSpace starts port-forwarding and file synchronization. +- Initial sync would be started automatically. + +- Before the initial sync process is finished, DevSpace starts the log streaming. + + + +## Advanced + +### One-Directional Sync +These flags allow for local or remote container file systems to be ignored during synchronization. + +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + disableDownload: true +``` + +### Bandwidth Limits +Sometimes it is useful to throttle the file synchronization, especially when large files or a large number of files are expected to change during development. The following config options provide these capabilities: + +The `bandwidthLimits` options expect integer values representing the max file upload/download speed in KB/s, e.g. `download: 100` would limit the file sync to a download speed of `100 KB/s`. + +:::note +By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. +::: + +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + bandwidthLimits: + download: 200 # 200 KB/s + upload: 100 # 100 KB/s +``` +**Explanation:** +- Downloading files from the container to the local filesystem is limited to a transfer speed of `200 KB/s`. +- Upload files from the local filesystem to the container is limited to a transfer speed of `100 KB/s`. + + + +### File Watchers vs Polling +By default, DevSpace uses [inotify](https://man7.org/linux/man-pages/man7/inotify.7.html) to detect changes. This can be more efficient, however, sometimes it might be unsupported or not feasible in certain situations, in which case, polling might be preferred. + +Polling can help fix issues with file watchers. Enabling polling tells DevSpace to traverse over all watched files and folders periodically in the container to identify file changes. + +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + my-dev: + imageSelector: ghcr.io/org/project/image + sync: + - path: ./ + polling: true +``` + +:::info +Polling might increase CPU consumption of the container drastically, depending on the amount of files and folders watched +::: + +### Disable File Watchers +If the `noWatch` option is specified, DevSpace will stop syncing after initially comparing and resolving differences. This is useful if you want a one-time sync, but then continue doing other steps in your pipeline. + + + +## FAQ + +
+How does the sync work? + +DevSpace establishes a bi-directional code synchronization between the specified local folders and the remote container folders. It automatically recognizes any changes within the specified folders during the session and will update the corresponding files locally and remotely in the background. It uses a small helper binary that is injected into the target container to accomplish this. + +The algorithm roughly works like this: + +1. Inject a small helper binary via `kubectl cp` into the target container +2. Run initial sync accoring to the [`initialSync` config option](#initial-sync) +3. Watch for file changes on both sides (local and remote) and sync them according to the [sync path mappings](#sync-path-mapping) +4. After every sync process, [restart the container](#onuploadrestartcontainer) or run other custom [post-sync commands](#post-sync-commands) (optional) + +
+ +
+Are there any requirements for the sync to work? + +The `tar` command has to be present in the container, otherwise `kubectl cp` will not work and the helper binary cannot be injected into the container. + +No server-side component or special container privileges for code synchronization are required, since the sync algorithm runs completely client-only within DevSpace. The synchronization mechanism works with any container filesystem and no special binaries have to be installed into the containers. File watchers running within the containers like nodemon will also recognize changes made by the synchronization mechanism. + +
+ + + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/open.mdx b/docs/pages/configuration/dev/connections/open.mdx new file mode 100644 index 0000000000..c58e202998 --- /dev/null +++ b/docs/pages/configuration/dev/connections/open.mdx @@ -0,0 +1,28 @@ +--- +title: Open Links in Browser +sidebar_label: Auto-Open URLs +--- + +import FragmentWorkflowOpenLinks from '../../../_partials/workflow-open-links.mdx'; +import ConfigPartial from '../../_partials/v2beta1/dev/restartHelper.mdx' + + +DevSpace allows you to define URLs that should open after deploying an application in development mode, i.e. using `devspace dev`. + +The configuration for automatically opening URLs can be found in the `dev.*.open` section of `devspace.yaml`. +```yaml +dev: + my-dev: + open: + - url: http://localhost:3000/dashboard # Open the dashboard page of your app UI + - url: http://localhost:8089/ # Open DevSpace UI +``` + + +## How does it work? + + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/port-forwarding.mdx b/docs/pages/configuration/dev/connections/port-forwarding.mdx new file mode 100644 index 0000000000..2707735344 --- /dev/null +++ b/docs/pages/configuration/dev/connections/port-forwarding.mdx @@ -0,0 +1,83 @@ +--- +title: Port Forwarding +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/group_ports.mdx' + + +DevSpace allows you to forward network traffic from your local machine to the dev container and vice versa: +- [Port forwarding](#port-forwarding) for traffic forwarding from local machine to the dev container +- [Reverse port forwarding](#reverse-forwarding) for traffic forwarding from the dev container to your local machine (e.g. to let your application connect to your IDE for debugging) + +:::tip Think `kubectl port-forward` on Steroids +You can think of the port forwarding in DevSpace as a much faster and smarter version of `kubectl port-forward` that continuously reconnect whenever the connection gets lost and that is also able to reverse port forward from the container to your local machine. +::: + + +## Port Forwarding vs Reverse Port Forwarding +When you define `8080:80`: +- as value in `ports` then you can connect to `localhost:8080` on your local machine and it will be the same as connecting to `localhost:80` from within the container +- as value in `reversePorts` then a service inside your dev container can connect to `localhost:80` from inside the container and it will be the same as connecting to `localhost:8080` on your local machine + +Port-forwarding allows you to access your application on `localhost:[PORT]` by forwarding the network traffic from a localhost port to a specified port of a container. + + +## Port Forwarding +When starting the development mode, DevSpace starts port forwarding as configured in the `dev.*.ports` section of the `devspace.yaml`. +```yaml title=devspace.yaml +deployments: + app-backend: + helm: + values: + containers: + - image: john/devbackend + +dev: + app: + imageSelector: ghcr.io/org/project/image # The dev container you are selecting + # highlight-start + ports: + - port: "8080:80" # Map localhost port 8080 to container port 80 + # highlight-end +``` + +:::warning Unique Local Port +The localhost port must be unique to avoid conflicting ports. +::: + +:::warning System Ports +Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. +::: + + +## Reverse Port Forwarding +Reverse port-forwarding allows you to forward traffic from within your containers to your local machine. This can be useful when: +- using certain remote debuggers that connect to your IDE instead of the other way around +- developing a service on localhost which should be accessed from other services that run within the cluster, i.e. using the [Telepresence development model](https://www.telepresence.io/discussion/why-telepresence) but with DevSpace to get better performance and cross-platform support + +With reverse port-forwarding, you can access `localhost:[PORT]` inside the container and it will redirect to a program that runs on your local dev machine. + +When starting the development mode, DevSpace starts reverse port-forwarding as configured in the `dev.*.reversePorts` section of the `devspace.yaml`. +```yaml title=devspace.yaml +deployments: + app-backend: + helm: + values: + containers: + - image: ghcr.io/org/project/image + +dev: + app: + imageSelector: ghcr.io/org/project/image + ports: + - port: "8080:80" # Map localhost port 8080 to remote port 80 + # highlight-start + reversePorts: + - port: "5678:6678" # Map localhost port 5678 to remote port 6678 + # highlight-end +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/proxy-commands.mdx b/docs/pages/configuration/dev/connections/proxy-commands.mdx new file mode 100644 index 0000000000..6473076501 --- /dev/null +++ b/docs/pages/configuration/dev/connections/proxy-commands.mdx @@ -0,0 +1,51 @@ +--- +title: Access Local Commands In A Dev Container +sidebar_label: Proxy Commands +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/proxyCommands.mdx' + + +Proxy commands are commands that are available within a dev container whose execution output is redirected to the local computer. They can be very useful for: +- Remote IDE's that want to access local git +- Making local credentials helper (AWS, docker, GCLOUD etc) available in the container +- Exposing devspace, kubectl and other kubernetes tools into the container +- Keeping the development container footprint small + +:::warning Careless definitions of proxy commands pose a security risk +Allowing proxy commands such as `bash`, `sh` etc. essentially allows you to remotely execute commands on a developer's machine. While this is sometimes wanted, it also enables **everybody** that can access the development container to execute proxy commands on the developers machine if DevSpace is currently running. +::: + +For example: +```yaml +deployments: + app-backend: + helm: + values: + containers: + - image: john/devbackend + +dev: + my-dev: + imageSelector: john/devbackend + terminal: {} + proxyCommands: + - command: git + - command: devspace + - command: kubectl +``` + +This allows you to use the commands `git`, `devspace` and `kubectl` in the terminal that is forwarded by DevSpace. + +:::info +DevSpace also tries it best to rewrite paths that are returned from the command as well as provided through an argument, so calling for example `git rev-parse --show-toplevel` within the container should print a rewritten path +::: + + +## How does it work? +In order for this to work, DevSpace will start a custom SSH server locally that accepts connections to execute the defined `proxyCommands`. This SSH server is then reverse port-forwarded into the container and can be accessed there through the DevSpace helper binary. + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/restart-helper.mdx b/docs/pages/configuration/dev/connections/restart-helper.mdx new file mode 100644 index 0000000000..2e66bd4af2 --- /dev/null +++ b/docs/pages/configuration/dev/connections/restart-helper.mdx @@ -0,0 +1,84 @@ +--- +title: Restart Helper +sidebar_label: Restart Container +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/restartHelper.mdx' + +DevSpace provides a small shell script that can used as container entrypoint (PID 1 process) to start the container instead of your actual container start command. + +For example, if your entrypoint would be `pyhton main.py`, DevSpace would rewrite the container start command to: +```bash +/.devspace/devspace-restart-helper python main.py +``` + +This has the advantage that DevSpace (or you) can restart your application without crashing the contianer because normally, the python command would be the PID 1 and if that gets killed, the container will be destroyed. If the restart helper script is PID 1, we can kill the python process without impacting the container. Then, the restart helper will just restart the python command again. + + +## Inject Restart Helper +To tell DevSpace to inject the restart helper into the container, set `inject: true` for the `restartHelper` field: + +```yaml title=devspace.yaml +dev: + app: + imageSelector: ghcr.io/org/project/image + restartHelper: + inject: true +``` + + +## Trigger Restarts +The restart helper per se does not do much except restarting your application if it has been killed. You can either manually kill your application to trigger a restart or you can configure DevSpace to trigger a restart automatically, e.g. when the file sync changes specific files. + +### Manually +You can manually trigger a restart using the `devspace restart` command: +``` +devspace restart +devspace restart -n my-namespace --pod my-pod +devspace restart -n my-namespace --label-selector abc=def +``` + +You can also trigger a restart manually via `kubectl`: +``` +kubectl exec my-pod -- sh -c 'PID=$(cat /.devspace/devspace-pid) && rm /.devspace/devspace-pid && kill -9 -$PID' +``` + +Here is a more verbose version of the above `kubectl exec` command as it will be run inside the container: +```bash +# 1. Get the PID of your applications process +PID=$(cat /.devspace/devspace-pid) + +# 2. Remove the PID file to tell the restart helper that this is an intended restart +# (otherwise the restart helper will terminate as well which will kill the container) +rm /.devspace/devspace-pid + +# 3. Kill the application process group (restart helper on PID 1 will detect this and restart it again) +kill -9 -$PID +``` + +### On File Sync +You can use the [sync-triggered action `restartContainer: true`](./file-sync#restart-container) to restart your application inside the container every time DevSpace syncs files into the container. + + +## Restart Helper Script +To view the script used for the restart helper, [view this link to the DevSpace source code](https://github.com/loft-sh/devspace/blob/main/pkg/devspace/build/builder/restart/restart.go#L33-L123). + + +## Custom Restart Helper Script +To provide a custom script instead of using the default restart helper in DevSpace, use the `path` option to point to a script: + +```yaml title=devspace.yaml +dev: + app: + imageSelector: ghcr.io/org/project/image + restartHelper: + inject: true + path: ./my-custom-script.sh +``` + +In the example above, DevSpace would inject the script you provide into the dev container instead of using the default script. + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/ssh.mdx b/docs/pages/configuration/dev/connections/ssh.mdx new file mode 100644 index 0000000000..39bf96b609 --- /dev/null +++ b/docs/pages/configuration/dev/connections/ssh.mdx @@ -0,0 +1,42 @@ +--- +title: Inject An SSH Server Into Dev Container +sidebar_label: SSH Server +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/ssh.mdx' + + +DevSpace allows you to start an SSH server in the target container, to easily connect to your development environment. This has the following advantages: +- Since IDE's have a great remote SSH integration you can use that directly for your Kubernetes containers +- Use all SSH features and tools such as scp or terminal with your development container + +DevSpace will make sure that ssh is properly configured locally and automatically add an entry to your `~/.ssh/config` as well as create an appropriate ssh key pair in `~/.devspace/ssh/id_devspace_rsa` to establish a secure connection with the remote container. +You can then connect to the container with `ssh ..devspace`, where `` denotes the name of the dev config and `` the name of the devspace.yaml file. + +For example, to start ssh for an ubuntu container: +```yaml +name: my-devspace-project + +deployments: + my-deployment: + helm: + values: + containers: + - image: ubuntu + +dev: + my-dev: + imageSelector: ubuntu + ssh: {} +``` + +After starting `devspace dev`, you will be able to connect to the ubuntu container with `ssh my-dev.my-devspace-project.devspace`. + + +## How does it work? +DevSpace will inject a small helper binary into the running container that contains an SSH server. Then DevSpace will port-forward a random local port to the remote SSH port and configure the local `~/.ssh/config` accordingly. + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/terminal.mdx b/docs/pages/configuration/dev/connections/terminal.mdx new file mode 100644 index 0000000000..27b2ac3134 --- /dev/null +++ b/docs/pages/configuration/dev/connections/terminal.mdx @@ -0,0 +1,110 @@ +--- +title: Configure Terminal +sidebar_label: Terminal +--- + +import ConfigPartialTerminal from '../../_partials/v2beta1/dev/terminal.mdx' +import ConfigPartialAttach from '../../_partials/v2beta1/dev/attach.mdx' +import ConfigPartialLogs from '../../_partials/v2beta1/dev/logs.mdx' + + +DevSpace provides three modes for connecting your terminal to the dev container: +- **[Start a new terminal session](#start-new-terminal-session)** and connect to it (think `kubectl exec -it [pod] -c [container]`) +- **[Attach to the dev container's entrypoint process](#attach-to-entrypoint)** (i.e. PID 1 inside the container, think `kubectl attach [pod] -c [container]`) +- **[Stream the dev container's logs](#stream-logs)** (i.e. stdout of the container, think `kubectl logs [pod] -c [container]`) + + +:::caution Mutual Exclusive +Beware that you can only enable one of the three modes since you only have one terminal locally. + +However, if you open a second terminal locally, you could run on-demand commands such as `devspace enter`, `devspace attach`, or `devspace logs` which may achieve similar results but they will **not** do any implicit patches to your dev container. + +Alternatively, the pipelines in your `devspace.yaml` could introduce custom flags such as `--terminal` or `--attach` to let the user pick which mode to enable. +::: + + +## Start New Terminal Session +Using the `dev.*.terminal` section in the `devspace.yaml`, you can tell DevSpace to start a terminal session inside the dev container and then connect to it as part of the `start_dev` process: +```yaml +deployments: + app: + helm: + values: + containers: + - image: myregistry/myapp + +dev: + my-dev: + imageSelector: myregistry/myapp + terminal: {} +``` + +Under the hood DevSpace will replace the running pod and apply the following changes, before actually starting a terminal to it: +- Remove `readinessProbes`, `startupProbes` & `livenessProbes` +- Change the entrypoint of the container to `sleep 100000` + +:::info POD REPLACE +If you do not want DevSpace to replace the pod with a modified version, use `disableReplace: true` +::: + +:::info SCREEN +DevSpace will also try to install and use [screen](https://linuxize.com/post/how-to-use-linux-screen/) to start the terminal session, as this allows you to reconnect to your existing session after losing connection. You can disable this via the `disableScreen: true` option +::: + + +## Attach To Entrypoint +Attach can be used to attach to a process that is already running inside an existing container, typically the PID 1 process (container entrypoint). + +Under the hood this mode is effectively calling [`kubectl attach`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#attach). + +```yaml +deployments: + my-deployment: + helm: + values: + containers: + - image: ubuntu + +dev: + my-dev: + imageSelector: ubuntu + attach: {} +``` + +Under the hood DevSpace will replace the running pod and apply the following changes, before actually attaching to it: +- Remove `readinessProbes`, `startupProbes` & `livenessProbes` +- Add `stdin: true` and `tty: true` to the container spec + +:::info +If you don't want DevSpace to replace the pod with a modified version, use `disableReplace: true` +::: + + +## Stream Logs +Instead of starting an interactive terminal session or attaching to the container, you can also just stream the logs of the dev container. + +The benefit of log streaming may be that you can stream the logs of multiple dev containers in parallel whereas a terminal connection can only be established to a single container at the time. + +To configure log streaming, set the `dev.*.logs` field in the `devspace.yaml for the respective dev container: +```yaml +dev: + my-dev-1: + imageSelector: ... + logs: {} + my-dev-2: + imageSelector: ... + logs: {} + my-dev-3: + imageSelector: ... + logs: + lastLines: 100 +``` + +DevSpace will continously check what pods match the given selectors and start or end log streaming accordingly. + + +## Config Reference + + + + diff --git a/docs/pages/configuration/dev/connections/terminal/attach.mdx b/docs/pages/configuration/dev/connections/terminal/attach.mdx new file mode 100644 index 0000000000..d4bb2e9919 --- /dev/null +++ b/docs/pages/configuration/dev/connections/terminal/attach.mdx @@ -0,0 +1,14 @@ +--- +title: Attaching to a container +sidebar_label: attach +--- + +import ConfigPartial from '../../../_partials/v2beta1/dev/attach.mdx' + + + + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/terminal/log-streaming.mdx b/docs/pages/configuration/dev/connections/terminal/log-streaming.mdx new file mode 100644 index 0000000000..c19589121d --- /dev/null +++ b/docs/pages/configuration/dev/connections/terminal/log-streaming.mdx @@ -0,0 +1,14 @@ +--- +title: Configure Log Streaming +sidebar_label: logs +--- + +import ConfigPartial from '../../../_partials/v2beta1/dev/logs.mdx' + + + + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/connections/terminal/terminal.mdx b/docs/pages/configuration/dev/connections/terminal/terminal.mdx new file mode 100644 index 0000000000..055d1a5dab --- /dev/null +++ b/docs/pages/configuration/dev/connections/terminal/terminal.mdx @@ -0,0 +1,40 @@ +--- +title: Configure Terminal +sidebar_label: terminal +--- + +import ConfigPartial from '../../../_partials/v2beta1/dev/terminal.mdx' + + +In the `dev.*.terminal` section in the `devspace.yaml` you can configure the terminal: +```yaml +deployments: + app: + helm: + values: + containers: + - image: myregistry/myapp + +dev: + my-dev: + imageSelector: myregistry/myapp + terminal: {} +``` + +## How does it work? + +Under the hood DevSpace will replace the running pod and apply the following changes, before actually starting a terminal to it: +- Remove `readinessProbes`, `startupProbes` & `livenessProbes` +- Change the entrypoint of the container to `sleep 100000` +:::info POD REPLACE +If you don't want DevSpace to replace the pod with a modified version, use `disableReplace: true` +::: + +:::info SCREEN +DevSpace will also try to install and use [screen](https://linuxize.com/post/how-to-use-linux-screen/) to start the terminal session, as this allows you to reconnect to your existing session after losing connection. You can disable this via the `disableScreen: true` option +::: + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/README.mdx b/docs/pages/configuration/dev/modifications/README.mdx new file mode 100644 index 0000000000..d9f003d85e --- /dev/null +++ b/docs/pages/configuration/dev/modifications/README.mdx @@ -0,0 +1,31 @@ +--- +title: Dev Container Modifications +sidebar_label: 2. Modify Container +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/group_modifications.mdx' + +DevSpace allows you to modify the selected dev container to optimize it for development. + + +## How does it work? +When any modifications are defined for a dev container, DevSpace will do the following: +1. Find the Kubernetes pod that contains the dev container according to the [selectors](../selectors/README.mdx) defined for this dev container. +2. Find the replica owner that this pod was created from (e.g. Deployment, StatefulSet, etc.) +3. Scale down the replica number for the replica owner object, i.e. set `replicas: 0` for the Deployment, StatefulSet, etc. +4. Clone the replica owner object to create a new Deployment/StatefulSet with the name `[old-object-name]-devspace` +5. Apply the modifications to the newly created Deployment/StatefulSet, e.g. swap out the image, add env vars, etc. +6. Wait until the a new pod was created from the new Deployment/StatefulSet + + +## Undo Modifications +To undo the changes that DevSpace made to create the modified version of our dev container, you can run: + +```bash +devspace reset pods +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/dev-image.mdx b/docs/pages/configuration/dev/modifications/dev-image.mdx new file mode 100644 index 0000000000..842365b578 --- /dev/null +++ b/docs/pages/configuration/dev/modifications/dev-image.mdx @@ -0,0 +1,29 @@ +--- +title: Dev-Optimized Images For Dev Containers +sidebar_label: Dev Image +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/devImage.mdx' + +One of the most common modifications for a dev container is to replace the stable/prod image of the container with a generic prebuilt dev image. + +```yaml title=devspace.yaml +dev: + backend: + # highlight-start + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # highlight-end +``` + +The example above selects the container with the stable/prod image `ghcr.io/org/project/image` and replaces the image with the prebuilt dev-optimized image `ghcr.io/loft-sh/devspace-containers/python:3-alpine`. + +:::tip Prebuilt Dev Images = Generic Images Without Source Code +Prebuilt images used for development are usually generic images that do **not** contain your application or any source code. They often only contain the necessary tooling to build, run, and debug your application in the appropriate language. + +In our example above, the image `ghcr.io/loft-sh/devspace-containers/python:3-alpine` is a generic image for the development of Python based applications, so it contains tools like `python` and `pip` but does not contain any Python source code. Instead, you would be using the [file sync feature](../connections/file-sync.mdx) in DevSpace to sync your source code from your local computer into the dev container to then be able to build and run your Python application using the tools provided inside the container. +::: + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/entrypoint.mdx b/docs/pages/configuration/dev/modifications/entrypoint.mdx new file mode 100644 index 0000000000..246a2099d4 --- /dev/null +++ b/docs/pages/configuration/dev/modifications/entrypoint.mdx @@ -0,0 +1,51 @@ +--- +title: Change Entrypoint Command & Args +sidebar_label: Entrypoint +--- + +import ConfigPartialCommand from '../../_partials/v2beta1/dev/command.mdx' +import ConfigPartialArgs from '../../_partials/v2beta1/dev/args.mdx' + +To change the start command for your dev container, you can use the following options: +- `command` to change the entrypoint +- `args` to change the arguments provided to the entrypoint command + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # highlight-start + command: ["npm"] + args: ["run", "start"] + # highlight-end +``` + +The dev container shown in the example above would be started with the command `npm run start`. + +:::tip Automatic Sleep Modification For Terminal +If you [enable the `terminal`](../connections/terminal) for this dev container, DevSpace will assume that you manually want to start your application using the terminal session and it automatically changes the container entrypoint to `sleep`: + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # Terminal is enabled + terminal: + command: ./devspace_start.sh + # highlight-start + # The following will automatically be added by DevSpace in-memory: + # command: ["sleep"] + # args: ["1000000000"] + # highlight-end +``` + +To disable the automatic modifications of the entrypoint for terminal-enabled dev containers, add `disableReplace: true` under the `terminal` settings. +::: + + +## Config Reference + + + diff --git a/docs/pages/configuration/dev/modifications/env-vars.mdx b/docs/pages/configuration/dev/modifications/env-vars.mdx new file mode 100644 index 0000000000..ccd1aed3ce --- /dev/null +++ b/docs/pages/configuration/dev/modifications/env-vars.mdx @@ -0,0 +1,27 @@ +--- +title: Change Env Vars For Development +sidebar_label: Env Vars +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/env.mdx' + +To add additional environment variables or change the value of existing environment variables for your dev container, you can specify the `env` field. + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # highlight-start + env: + - name: DEBUG + value: "true" + - name: APP_PORT + value: "8080" + # highlight-end +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/patches.mdx b/docs/pages/configuration/dev/modifications/patches.mdx new file mode 100644 index 0000000000..3021c5e3fd --- /dev/null +++ b/docs/pages/configuration/dev/modifications/patches.mdx @@ -0,0 +1,92 @@ +--- +title: Custom Patches To Dev Containers' Pods +sidebar_label: Pod Patches +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/patches.mdx' + +Besides the common shortcut modifications such as setting `devImage`, DevSpace also allows you to write custom patches to the Kubernetes PodSpec when a pod is being replaced to turn one (or multiple) of its containers into a dev container. + +### Custom Patches +For advanced use cases, DevSpace provides a feature for custom patches to the Kubernetes PodSpec when a pod is being replaced. To add custom patches, add them to the `patches` field. + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # highlight-start + patches: + - op: replace + path: spec.terminationGracePeriodSeconds + value: 3 + - op: remove + path: spec.securityContext + - op: add + path: spec.containers.name=backend.command + value: "" + # highlight-end +``` + +:::info Patch Specification +Patches in DevSpace generally follow the JSON Patch standard ([RFC 9602](https://datatracker.ietf.org/doc/html/rfc6902)) as implemented by the [yaml-jsonpath](https://github.com/vmware-labs/yaml-jsonpath) library. +::: + +:::caution `add` Operation +Using `op: add` only works as expected when path points to an array/list. Using `op: add` to add fields to an object/map will **not** work and instead replace all existing properties. +::: + +:::tip `path` + Arrays/Lists +When you want to define a `path` that contains an array (e.g. `spec.containers`), you have several options: + +1. Use the index of the array item you want to patch, e.g. `spec.containers[0]` +2. Use a property selector matching the array item(s) you want to patch, e.g. `spec.containers.name=backend` +3. Use a wildcard selector to match all array item(s), e.g. `spec.containers.*` +4. Use a comparison selector matching the array item(s) you want to patch, e.g. `spec.containers[?(@.image=='ghcr.io/loft-sh/image')]` +5. Use a regular expression selector matching the array item(s) you want to patch, e.g. `spec.containers[?(@.name=~/^production/)]` + +Using a selector rather than the array index is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A selector is also able to select multiple array items if all of them have the same value for this property. +::: + +### Implicit Patches +DevSpace adds certain modifications and patches in-memory if certain conditions are met. This helps to keep `devspace.yaml` shorter and makes its configuration easier. The following table shows a list of implicit modifications and patches added by DevSpace: + + + + + + + + + + + + + + +
ConditionImplicit Configuration
+ +`terminal` enabled + + + +```yaml title=devspace.yaml +dev: + $name: + command: ["sleep"] + args: ["1000000000"] + patches: + - op: remove + path: spec.containers[].livenessProbe + - op: remove + path: spec.containers[].readinessProbe + - op: remove + path: spec.containers[].startupProbe +``` + +
+ + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/persistence.mdx b/docs/pages/configuration/dev/modifications/persistence.mdx new file mode 100644 index 0000000000..f7d3d203b7 --- /dev/null +++ b/docs/pages/configuration/dev/modifications/persistence.mdx @@ -0,0 +1,81 @@ +--- +title: Persist Paths In Dev Containers +sidebar_label: Persistent Paths +--- + +import ConfigPartialPersistPaths from '../../_partials/v2beta1/dev/persistPaths.mdx' +import ConfigPartialPersistanceOptions from '../../_partials/v2beta1/dev/persistenceOptions.mdx' + +DevSpace offers you the ability to easily persist certain folders in an exchanged pod through a [persistent volume claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). This might be useful if you have to sync large amounts of files that are needed in multiple containers or the replaced pod might get rescheduled or killed often. + +:::info Cleanup of Persistent Volume Claims +If DevSpace creates the persistent volume claim, it will also get cleaned up on a `devspace reset pods` or if config changes in the `replacePods` section are detected. +::: + +### Persist Paths In Dev Container + +The `persistPaths` option expects an array of paths that should get persisted on the replaced pod. + +#### Example: Persist the folders +```yaml +dev: + my-dev: + imageSelector: my-app/dev + persistPaths: + - path: /app + # Optional path on the persistent volume to mount + # volumePath: my-volume/app + # Optional name of the container to persist this path + # containerName: my-container +``` + +**Explanation:** +- The `imageSelector` would select the pod with image `my-app/dev`. +- DevSpace would create a new persistent volume claim for the pod if the pod was not yet replaced +- DevSpace would replace the pod with a pod which has a volume mount for the path `/app` that references the created persistent volume claim + + +## Persistence Options + +`persistenceOptions` is an object that defines additional options for `persistPaths`. You can configure the following options: + +- `size`: the size of the persistent volume to request. (Defaults to `10Gi`) +- `storageClassName`: the storage class name to use for the persistent volume claim. (Defaults to empty) +- `accessModes`: the access modes to use for the persistent volume claim. (Defaults to `ReadWriteOnce`) +- `readOnly`: if the persistent volume claim should get mounted in read only mode. (Defaults to `false`) +- `name`: the name of the persistent volume claim to use or create. (Defaults to name of the replaced pod) + +#### Example: Share a single persistent volume across two pods +```yaml +dev: + frontend: + imageSelector: my-image/frontend + sync: + - path: .:/app + persistPaths: + - path: /app + volumePath: app + persistenceOptions: + name: my-pvc + + backend: + imageSelector: my-image/backend + persistPaths: + - path: /backend + volumePath: app + persistenceOptions: + name: my-pvc + readOnly: true +``` + +**Explanation:** +- DevSpace will create a persistent volume claim `my-pvc` if it does not exist +- DevSpace will replace the pods with image `my-image/frontend` and `my-image/backend` with pods that mount the persistent volume claim called `my-pvc` +- DevSpace will sync the local files into the persisted folder `/app` of the replaced pod with image `my-image/frontend`. Since the replaced pods share a common persistent volume claim, also the backend container will get the updated files. + + + +## Config Reference + + + diff --git a/docs/pages/configuration/dev/modifications/resources.mdx b/docs/pages/configuration/dev/modifications/resources.mdx new file mode 100644 index 0000000000..61ce533605 --- /dev/null +++ b/docs/pages/configuration/dev/modifications/resources.mdx @@ -0,0 +1,30 @@ +--- +title: Change Resource Constraints For Dev Containers +sidebar_label: Resources +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/resources.mdx' + +Containers in Kubernetes can request a required amount of infrastructure resources such as CPU and memory. Additionally, containers can also be limited to use no more than a certain threshold of such resources. + +To change the infrastructure requests or limits for your dev container, specify the `resources` field. + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + # highlight-start + resources: + limits: + memory: 2Gi + requests: + cpu: 0.2 + memory: 512Mi + # highlight-end +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/modifications/workdir.mdx b/docs/pages/configuration/dev/modifications/workdir.mdx new file mode 100644 index 0000000000..e291de1d02 --- /dev/null +++ b/docs/pages/configuration/dev/modifications/workdir.mdx @@ -0,0 +1,25 @@ +--- +title: Change Working Directory Of Dev Containers +sidebar_label: Working Directory +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/workingDir.mdx' + +The working directory is the folder inside the container's filesystem where the entrypoint command is executed and where (by default) terminal sessions start. To change the working directory, specify the `workingDir` field. + +```yaml title=devspace.yaml +dev: + backend: + imageSelector: ghcr.io/org/project/image + devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine + command: ["npm"] + args: ["run", "start"] + # highlight-start + workingDir: /app/dev + # highlight-end +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/selectors/README.mdx b/docs/pages/configuration/dev/selectors/README.mdx new file mode 100644 index 0000000000..f70c5fe5df --- /dev/null +++ b/docs/pages/configuration/dev/selectors/README.mdx @@ -0,0 +1,26 @@ +--- +title: Select Container as Dev Container +sidebar_label: 1. Select Dev Container +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/group_selector.mdx' + + +The first step to turn a regular container deployed to your cluster into a dev container is to tell DevSpace how to find this container inside the cluster. You can achieve this by defining one or multiple selectors. + +DevSpace supports the following selectors: +1. [`imageSelector`](./image.mdx) to select based on the image running the container +2. [`labelSelector`](#select-by-pod-labels) to select based on Kubernetes pod labels + +Additionally, the following two fields can be used: +- `container` to select one specific container if a pod has multiple containers +- `namespace` to select containers from another namespace + +:::tip Logical `&&` For Selectors +If multiple selectors (e.g. `imageSelector` and `labelSelector`) are specified, DevSpace will combine them with a logical AND (`&&`) when looking for a pod/container to match the specified conditions. +::: + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/selectors/image.mdx b/docs/pages/configuration/dev/selectors/image.mdx new file mode 100644 index 0000000000..ef889bef65 --- /dev/null +++ b/docs/pages/configuration/dev/selectors/image.mdx @@ -0,0 +1,32 @@ +--- +title: Select Container as Dev Container +sidebar_label: By Container Image +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/group_selector.mdx' + +To select a container based on the image it is running, specify the `imageSelector` field. + +```yaml title=devspace.yaml +dev: + backend: + # highlight-start + imageSelector: ghcr.io/org/project/image + # highlight-end +``` + +:::tip Image Tags +If the image you provide as `imageSelector` is an image that has previously been built by DevSpace, DevSpace will automatically match the most recently built tag. To define a static tag for the selector, add append the tag to the `imageSelector` value. +::: + + +## Common Scenarios +It is key to make sure that your combination of selectors clearly selects one single container. If there is ambiguity because multiple pod and/or containers could be selected, DevSpace will require that you increase the specificity of your selectors. Here are a few common cases that may require you to combine multiple selectors: + +### Multiple Containers Use Same Image +If you are using the `imageSelector` but multiple containers in your namespace run the same image with different arguments or entrypoints (very common for Ruby applications), it will be easier for you to use the `labelSelector` and optionally specify the `container` field if needed. + + +## Config Reference + + diff --git a/docs/pages/configuration/dev/selectors/labels.mdx b/docs/pages/configuration/dev/selectors/labels.mdx new file mode 100644 index 0000000000..2b04dd770b --- /dev/null +++ b/docs/pages/configuration/dev/selectors/labels.mdx @@ -0,0 +1,72 @@ +--- +title: Select Container as Dev Container +sidebar_label: By Pod Labels +--- + +import ConfigPartial from '../../_partials/v2beta1/dev/group_selector.mdx' + +To use standard Kubernetes label selectors to select a dev container, specify the `labelSelector` field which first selects a Kubernetes pod and then the appropriate container inside of it. + +```yaml title=devspace.yaml +dev: + backend: + # highlight-start + labelSelector: + app.kubernetes.io/name: payment-service + app.kubernetes.io/component: rest-api + # highlight-end +``` + +:::caution Selects Pod, Not Container +Because Kubernetes does not provide labels for container, DevSpace will select a pod if you specify the `labelSelector` field. If the pod has only one container, DevSpace will use that container. If the pod has multiple contianers, make sure to also specify the `container` field. +::: + + +## Common Scenarios +It is key to make sure that your combination of selectors clearly selects one single container. If there is ambiguity because multiple pod and/or containers could be selected, DevSpace will require that you increase the specificity of your selectors. Here are a few common cases that may require you to combine multiple selectors: + +### Pods with Multiple Containers +If you are using the `labelSelector` and DevSpace selects a pod with multiple containers, make sure you add the container name using the `container` field to tell DevSpace which of the containers to select as dev container. + +:::tip Image Selector +If a pod has multiple containers but each container has a different image, you could use the `imageSelector` instead of setting `labelSelector + container`. +::: + +### Multiple Dev Containers Per Pod +If you want to make modifications for development for multiple containers in the same pod, you need to use the `containers` field because some of the modifications you can define for dev containers actually apply to the pod itself and you want to reduce issues with conflicting modifications. + +```yaml title=devspace.yaml +dev: + backend: + # Select the pod via labelSelector: + labelSelector: + app.kubernetes.io/name: payment-service + app.kubernetes.io/component: rest-api + # Specify ports (not reversePorts) for the entire pod, not per container + ports: + - port: 3000 + # Make modifications for each container separately + # highlight-start + containers: + api: + container: api + devImage: ghcr.io/org/project/image + reversePort: + - port: 3306 + cache: + container: redis + env: + DEBUG: true + # highlight-end +``` + +:::tip `containers` + Dev Connections +When using the `containers` option, you should also specify the sections `files`, `persistPaths`, `reversePorts`, etc. for each individual container. + +However, since pods share the same network stack, the `ports` option needs to be on the top-level instead of for each container individually. +::: + + +## Config Reference + + diff --git a/docs/pages/configuration/development/terminal.mdx b/docs/pages/configuration/development/terminal.mdx deleted file mode 100644 index dc5753aca9..0000000000 --- a/docs/pages/configuration/development/terminal.mdx +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Configure Terminal -sidebar_label: terminal ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -There are two main modes how to develop with DevSpace, by streaming the log output of pods in DevSpace or by opening a terminal to the pod you would like to develop with. If you prefer the latter, you can configure the `dev.terminal` option to tell DevSpace to open a terminal to a target container. - -In the `dev.terminal` section in the `devspace.yaml` you can configure the terminal: -```yaml {18-23} -images: - frontend: - image: myregistry/appfrontend -dependencies: -- name: backend - source: - path: backend -deployments: -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appfrontend - workDir: '/path/to/my/workdir' - # If you would like to open a different shell or start - # it with a different command you can also use - command: ["bash"] -``` - -:::warning Sleeping Container -You will need to make sure that the container has a terminal equipped and is sleeping so that you can start your application. -::: - -## Configuration - -### `imageSelector` - - -#### Example: Setting imageName -```yaml {25-34} -images: - frontend: - image: myregistry/appfrontend - backend: - image: myregistry/appbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: myregistry/appbackend -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appbackend -``` - -### `labelSelector` - - -#### Example: Setting labelSelector -```yaml {25-34} -dev: - terminal: - labelSelector: - app: my-app - # If the pod has multiple containers make sure to set this - containerName: container1 -``` - -:::note Execute command locally -If `imageSelector` and `labelSelector` are not defined then the `command` will be executed on your local machine. -::: - -### `containerName` -If you select a pod via `labelSelector` and the pod has multiple containers, you'll need to specify a container name with this option. - -### `namespace` -If this option is specified DevSpace will search the pod in this namespace. - -### `workDir` -If this option is specified DevSpace will open the shell in the specified working directory. - -### `command` -The `command` option expects a string array as optional configuration for how to open the shell for terminal forwarding. If this option is specified, `workDir` will not work anymore. - -:::note Command Termination -If `command` is a non-interactive command that terminates, DevSpace will run the command and exits after the command has terminated. -::: diff --git a/docs/pages/configuration/expressions.mdx b/docs/pages/configuration/expressions.mdx index a9104bbaae..c4572c63f7 100644 --- a/docs/pages/configuration/expressions.mdx +++ b/docs/pages/configuration/expressions.mdx @@ -1,6 +1,6 @@ --- title: Config Expressions -sidebar_label: $(expression) +sidebar_label: $(expressions) --- import Tabs from '@theme/Tabs'; @@ -14,7 +14,6 @@ Config expressions are a powerful feature to load the `devspace.yaml` in a more { label: 'Load From File', value: 'file', }, { label: 'If Else', value: 'if', }, { label: 'Only in dev', value: 'command', }, - { label: 'If Variable', value: 'variable', }, { label: 'Generate Section', value: 'generate', }, { label: 'Return JSON', value: 'json', }, { label: 'Force String', value: 'forcestring', }, @@ -24,8 +23,7 @@ Config expressions are a powerful feature to load the `devspace.yaml` in a more Load a deployment specification from file: ```yaml -deployments: - - $(cat deployment.yaml) +deployments: $(cat deployment.yaml) ``` @@ -35,18 +33,18 @@ You can use either inline or multi-line if else: ```yaml deployments: -# Inline If-Else -- $( [ ${devspace.namespace} == "test" ] && cat deployment.yaml || echo "" ) - -# Multi-Line If-Else -- |- - $( - if [ ${devspace.context} == "minikube" ]; then - cat minikube.yaml - else - echo "" - fi - ) + # Inline If-Else + backend: $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" ) + + # Multi-Line If-Else + frontend: |- + $( + if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then + cat minikube.yaml + else + echo "" + fi + ) ``` @@ -60,37 +58,12 @@ images: disabled: $( [ $1 == "dev" ] && echo "true" || echo "false" ) ``` - - - -Add sync path if profile is "debug" - -```yaml -dev: - sync: - - |- - $( - if [ "${DEVSPACE_PROFILE}" == "debug" ]; then - syncConfig=" - imageSelector: test - excludePaths: - - test - - test2 - " - - echo "$syncConfig" - else - echo "" - fi - ) -``` - Generate a whole section through a script: ```yaml -dev: $(./my-script.sh ${devspace.namespace} ${devspace.context} ${DEVSPACE_PROFILE}) +dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE}) ``` @@ -110,9 +83,9 @@ images: By default, DevSpace will try to convert the stdout to a number, bool or yaml value, however you can also force the return value to be a string by using `$!()`: ```yaml deployments: - - name: quickstart + backend: helm: - componentChart: true + chart: ... values: labels: test: '$!(echo true)' @@ -129,17 +102,6 @@ Expressions are run in a golang shell that is syntax compatible to a regular POS Variables are resolved before and after applying expressions, which means that you can load a section from file within an expression that contains a variable which will still be resolved afterwards. ::: -:::warning Unsupported Config Expressions -Expressions are not supported in these configuration properties: -- `vars` -- `profiles[*].name` -- `profiles[*].parent` -- `profiles[*].parents` -- `profiles[*].activations` -- `profiles[*].patches[*].op` -- `profiles[*].patches[*].path` -::: ### Testing Config Expressions - The command `devspace print` can be used to test your config expressions and shows the config after all profiles, variables and expressions were applied. diff --git a/docs/pages/configuration/functions/README.mdx b/docs/pages/configuration/functions/README.mdx new file mode 100644 index 0000000000..b826a0bdb5 --- /dev/null +++ b/docs/pages/configuration/functions/README.mdx @@ -0,0 +1,67 @@ +--- +title: Functions +sidebar_label: functions +--- + +import ConfigPartial from '../_partials/v2beta1/functions.mdx' +import PipelineFunctionRef from '../_partials/functions/reference_pipeline.mdx' +import GlobalFunctionRef from '../_partials/functions/reference_global.mdx' + + +Functions are bash functions that can be called inside the remainder of `devspace.yaml`. A common use case is to define reusable functionality that is called from within the scripts you specify within the `pipelines` section. + +There are two types of functions: +1. [Custom Functions](#custom-functions) defined in `devspace.yaml` (often added via [`imports`](../imports/README.mdx)) +2. [Built-In Functions](#built-in-functions) such as `build_images` or `create_deployments` + + +## Custom Functions +DevSpace provides support for custom functions. To use them, you need to: +1. Declare your custom functions within the `functions` section of `devspace.yaml` +2. Call custom functions from any scripted field in `devspace.yaml` such as in `pipelines` or in any value defined using an inline script such as `$(command)` + +### 1. Declare Functions +Declaring a function means adding a key with the function name to the `functions` section in `devspace.yaml` as shown in the example below: +```yaml title=devspace.yaml +version: v2beta1 +functions: + hello_world: |- + echo "Hello World" + get_tag: |- + echo $(git rev-parse --short HEAD) +``` + +### 2. Call Functions +To call a custom function +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + deploy: |- + build_images --tag $(get_git_commit) + create_deployments --all + dev: |- + hello_world + run_default_pipeline +``` + + +## Built-In Functions +DevSpace provides a set of built-in functions. There are two types of functions: +1. [Pipeline-Only Functions](#pipeline-only-functions) +2. [Global Functions](#global-functions) + +### Pipeline-Only Functions +Pipeline-only functions can only be used inside the scripts within the `pipelines` section of `devspace.yaml`. + + + + +### Global Functions +Global functions can be used anywhere in `devspace.yaml`, either in config fields that expect a bash script such as within `functions` or using [`$(command)` vars](../variables.mdx#from-commands) in any other config field. + + + + +## Config Reference + + diff --git a/docs/pages/configuration/images/README.mdx b/docs/pages/configuration/images/README.mdx new file mode 100644 index 0000000000..68256606b1 --- /dev/null +++ b/docs/pages/configuration/images/README.mdx @@ -0,0 +1,89 @@ +--- +title: Image Building +sidebar_label: Basics +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import FragmentFaqImageContext from '../../_partials/faq-image-context.mdx'; +import WarningBuildToolPriority from '../../_partials/warning-build-tool-priority.mdx'; +import ConfigPartial from '../_partials/v2beta1/images.mdx' +import PreventBuildTip from './_partials/prevent_build.mdx' + +DevSpace can build, tag and push images using a variety of build engines. + + + + +## Workflow +To build, tag and push images with DevSpace, you need to: +1. Define your images in the `images` section of `devspace.yaml` +2. Call the `build_images` function inside the `pipelines` section of `devspace.yaml` +3. Execute the respective pipeline + + +### 1. Define `images` +Define as many images as need in your `devspace.yaml`: +```yaml +images: + backend: + dockerfile: ./Dockerfile + frontend: + dockerfile: ./frontend/Dockerfile + context: ./frontend + other: ... +``` + + +### 2. Call `build_images` in Pipeline + + + + +```yaml +pipelines: + build: + run: | + build_images --all +``` + + + + +```yaml +pipelines: + build: + run: | + build_images backend +``` + + + + +```yaml +pipelines: + build: + run: | + build_images backend frontend +``` + + + + + +### 3. Run Pipeline +Any of the pipelines shown above can be executed via: +- `devspace build` (shortcut) +- `devspace run-pipeline build` (long form) + + +## Config Reference + + diff --git a/docs/pages/configuration/images/_partials/prevent_build.mdx b/docs/pages/configuration/images/_partials/prevent_build.mdx new file mode 100644 index 0000000000..87587853a9 --- /dev/null +++ b/docs/pages/configuration/images/_partials/prevent_build.mdx @@ -0,0 +1,9 @@ + +:::tip Do Not Build Images During Development +Because image building can waste a lot of time and slows down developers, we recomment that you only build images when running DevSpace in your CI/CD pipelines using `devspace build/deploy` but **not** when a developer runs `devspace dev`. + +Instead of image building, the use the following workflow for `devspace dev`: +1. Deploy your application using prod/stable images +2. Use the [`devImage` feature](../dev/modifications/dev-image) to swap out the prod/stable images in runtime using a prebuilt dev-optimized image. +3. Use the [`sync` feature](../dev/connections/file-sync) for hot reloading your containers +::: diff --git a/docs/pages/configuration/images/_registries/aws.mdx b/docs/pages/configuration/images/_registries/aws.mdx new file mode 100644 index 0000000000..8688b08bd7 --- /dev/null +++ b/docs/pages/configuration/images/_registries/aws.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: AWS ECR +--- diff --git a/docs/pages/configuration/images/_registries/azure.mdx b/docs/pages/configuration/images/_registries/azure.mdx new file mode 100644 index 0000000000..2cff182a14 --- /dev/null +++ b/docs/pages/configuration/images/_registries/azure.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: Azure ACR +--- diff --git a/docs/pages/configuration/images/_registries/docker-hub.mdx b/docs/pages/configuration/images/_registries/docker-hub.mdx new file mode 100644 index 0000000000..8fc7011b99 --- /dev/null +++ b/docs/pages/configuration/images/_registries/docker-hub.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: Docker Hub +--- diff --git a/docs/pages/configuration/images/_registries/github.mdx b/docs/pages/configuration/images/_registries/github.mdx new file mode 100644 index 0000000000..18cf31d517 --- /dev/null +++ b/docs/pages/configuration/images/_registries/github.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: GitHub GHCR +--- diff --git a/docs/pages/configuration/images/_registries/google.mdx b/docs/pages/configuration/images/_registries/google.mdx new file mode 100644 index 0000000000..24464bc350 --- /dev/null +++ b/docs/pages/configuration/images/_registries/google.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: Google GCR +--- diff --git a/docs/pages/configuration/images/_registries/index.mdx b/docs/pages/configuration/images/_registries/index.mdx new file mode 100644 index 0000000000..b413e22983 --- /dev/null +++ b/docs/pages/configuration/images/_registries/index.mdx @@ -0,0 +1,3 @@ +--- +title: Push +--- diff --git a/docs/pages/configuration/images/_registries/other.mdx b/docs/pages/configuration/images/_registries/other.mdx new file mode 100644 index 0000000000..cc539e4b8f --- /dev/null +++ b/docs/pages/configuration/images/_registries/other.mdx @@ -0,0 +1,4 @@ +--- +title: Push +sidebar_label: Other +--- diff --git a/docs/pages/configuration/images/build-engines/README.mdx b/docs/pages/configuration/images/build-engines/README.mdx new file mode 100644 index 0000000000..e7205f682a --- /dev/null +++ b/docs/pages/configuration/images/build-engines/README.mdx @@ -0,0 +1,13 @@ +--- +title: Build Engines +--- + +DevSpace supports the following build engines: +- [Docker](./docker.mdx) +- [Buildkit](./buildkit.mdx) +- [Kaniko](./kaniko.mdx) +- [Custom](./custom.mdx) + +If no build engine is explicitly defined for the respective image, DevSpace uses: +1. Docker (if docker is installed and the Docker daemon is running) +2. Kaniko (as a fallback for Docker) diff --git a/docs/pages/configuration/images/build-engines/buildkit.mdx b/docs/pages/configuration/images/build-engines/buildkit.mdx new file mode 100644 index 0000000000..8a85758fe1 --- /dev/null +++ b/docs/pages/configuration/images/build-engines/buildkit.mdx @@ -0,0 +1,92 @@ +--- +title: Build Images with BuildKit +sidebar_label: buildKit +--- + + +import ConfigPartial from '../../_partials/v2beta1/images/buildKit.mdx' +import InClusterConfigPartial from '../../_partials/v2beta1/images/buildKit/inCluster.mdx' + + +Using [BuildKit](https://github.com/moby/buildkit) as build tool allows you to build images either locally or inside your Kubernetes cluster without a Docker daemon. + +:::info +In order to use the build kit you'll either need to have [Docker](https://docs.docker.com/get-docker/) installed locally or alternatively the [buildx CLI](https://github.com/docker/buildx/releases). **If you only want to use the in-cluster build functionality, you won't need a running Docker daemon and just need the CLI tools instead.** +::: + +When the `buildKit` field is defined for an image, DevSpace will use `docker buildx build` for building. If in-cluster building is enabled, DevSpace will deploy a BuildKit deployment into the Kubernetes cluster that will function as target BuildKit daemon for `docker buildx build`. You can also share a single Kubernetes BuildKit daemon across multiple users to share a common build cache. + +To set `buildKit` as default build tool, use the following configuration: +```yaml +images: + backend: + image: john/appbackend + buildKit: {} +``` + + +## Custom Build Command +DevSpace provides two options to customize the BuildKit build command invocation: + +### `command` +The option takes a string array as value. By default, DevSpace will use `docker buildx` as base command for interacting with BuildKit, if this option is set, you can tell DevSpace to use a different base command. For example: +```yaml +images: + backend: + image: john/appbackend + buildKit: + command: ["/path/to/my/buildx"] +``` +**Explanation:** +- `buildKit` tells DevSpace to use the BuildKit engine to build the image. +- The command option will tell DevSpace to use this command instead of `docker buildx` and the actual build command will look like this: `/path/to/my/buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` + + +### `args` +This option takes a string array as value. The arguments will be appended to the `docker buildx build` call DevSpace will run. For example: +```yaml +images: + backend: + image: john/appbackend + buildKit: + args: ["--cache-to", "user/app:cache"] +``` + +**Explanation:** +- `buildKit` tells DevSpace to use the BuildKit engine to build the image. +- The args option will append arguments to the `docker buildx build` command which will then look something like this: `docker buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` + + +## BuildKit Daemon +DevSpace can build images with a local Docker daemon or with a BuildKit instance deployed to a Kubernetes cluster. + +### Local Daemon +If in-cluster building is not explicitly enabled, DevSpace checks if a local Docker daemon is available for building images. + +#### Minikube Docker Daemon +DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. + + +### In-Cluster Deamon +If the `inCluster` field is defined for an image, DevSpace will build the image directly in the Kubernetes cluster instead of using the local Docker daemon. DevSpace will start or reuse a BuildKit deployment in the Kubernetes cluster that acts as target BuildKit daemon. For example: +```yaml +images: + backend: + image: john/appbackend + buildKit: + inCluster: {} +``` + +**Explanation:** +- `buildKit` tells DevSpace to use the BuildKit engine to build the image. +- `buildKit.inCluster` tells DevSpace to build the image inside the target Kubernetes cluster instead of using the local docker daemon. +- By default, DevSpace will create a BuildKit daemon deployment inside the target namespace that will be used for this and all future builds. + +DevSpace provides a set of config fields to customize the deployment of an in-cluster BuildKit daemon: + + + + +## Config Reference + + diff --git a/docs/pages/configuration/images/build-engines/custom.mdx b/docs/pages/configuration/images/build-engines/custom.mdx new file mode 100644 index 0000000000..af0d11a4e5 --- /dev/null +++ b/docs/pages/configuration/images/build-engines/custom.mdx @@ -0,0 +1,53 @@ +--- +title: Custom Build Scripts +sidebar_label: custom +--- + +import ConfigPartial from '../../_partials/v2beta1/images/custom.mdx' + + +Using `custom` as build tool allows you to define a custom command for building images. This is particularly useful if you want to use a remote build system such as Google Cloud Build. + +#### Example: Building Images With `custom` Build Command +```yaml +images: + backend: + image: john/appbackend + tags: + - dev-latest + custom: + command: |- + # This bash-like script works on all platforms including Windows + docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile +``` +The image `backend` would be built using the following command: +``` +docker build -t john/appbackend:dev-latest . -f custom/Dockerfile" +``` + +:::warning +Make sure your `custom` build command terminates with exit code 0 when the build process was successful. +::: + + +## Rebuild Cache +The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths, and the hash values it stores about these paths, to evaluate if an image should be rebuilt, or if the image building can be skipped because the context of the image has not changed. + +#### Example: OnChange Option For custom Build Command +```yaml +images: + backend: + image: john/appbackend + custom: + command: ./build + imageFlag: "--image" + onChange: + - some/path/ + - another/path/file.txt +``` +The image `backend` is built using the command `./build --image "[IMAGE]:[TAG]"`, and DevSpace skips the build if none of the files within `some/path/`, nor the file `another/path/file.txt`, has changed since the last build. + + +## Config Reference + + diff --git a/docs/pages/configuration/images/build-engines/docker.mdx b/docs/pages/configuration/images/build-engines/docker.mdx new file mode 100644 index 0000000000..362b57ab07 --- /dev/null +++ b/docs/pages/configuration/images/build-engines/docker.mdx @@ -0,0 +1,73 @@ +--- +title: Build Images with Docker +sidebar_label: docker +--- + +import ConfigPartial from '../../_partials/v2beta1/images/docker.mdx' + + +If nothing is specified, DevSpace always tries to build the image using Docker as build tool. + + +## Kaniko Fallback +When using `docker` as build tool, DevSpace checks if the Docker daemon is installed and running. If Docker is not installed or not running, DevSpace will use kaniko as fallback to build the image unless the option `disableFallback` is set to `false`. + +#### Example: Disabling kaniko Fallback +```yaml +images: + backend: + image: john/appbackend + frontend: + image: john/appfrontend + docker: + disableFallback: true +``` +**Explanation:** +- The first image `backend` would be built using Docker and if Docker is not available, the image would be built using kaniko as a fallback. +- The second image `frontend` would be built using Docker and if Docker is not available, DevSpace would exit with a fatal error instead of using the kaniko fallback. + + +## Minikube Docker Daemon +DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. + +#### Example: Building Images in Minikube +```yaml +images: + backend: + image: john/appbackend + docker: + preferMinikube: true + frontend: + image: john/appfrontend + docker: + preferMinikube: false +``` +**Explanation:** +- The first image `backend` would be preferably built with Minikube's Docker daemon and the image would **not** be pushed to a registry. +- The second image `frontend` would **not** be built with the Docker daemon of Minikube and it would be pushed to a registry after building and tagging the image using Docker (or kaniko as fallback). + + +## Custom `args` For `docker build` +The `args` option expects an array of strings to be passed as arguments and flags to the `docker build` command. + +#### Example: Docker Args +```yaml +images: + backend: + image: john/appbackend + docker: + args: + - "--no-cache" + - "--compress" +``` + +:::warning +When specifying `args`, DevSpace will invoke your installed Docker CLI via a command-line call instead of using the built-in Docker client. This has the negative effects that: +- The kaniko fallback will not be used anymore. +- You need to make sure that everyone who is using this configuration has the same version (or a compatible one) of Docker installed. +::: + + +## Config Reference + + diff --git a/docs/pages/configuration/images/build-engines/kaniko.mdx b/docs/pages/configuration/images/build-engines/kaniko.mdx new file mode 100644 index 0000000000..caecffbcdc --- /dev/null +++ b/docs/pages/configuration/images/build-engines/kaniko.mdx @@ -0,0 +1,421 @@ +--- +title: Build Images with kaniko +sidebar_label: kaniko +--- + +import ConfigPartial from '../../_partials/v2beta1/images/kaniko.mdx' + +Using [kaniko](https://github.com/GoogleContainerTools/kaniko) as build tool allows you to build images directly inside your Kubernetes cluster without a Docker daemon. DevSpace simply starts a build pod and builds the image using `kaniko`. + +To set `kaniko` as default build tool, use the following configuration: +```yaml +images: + backend: + image: john/appbackend + kaniko: {} +``` + +:::note Automatic Cleanup +After the build process completes, the build pod started for the kaniko build process will be deleted again. +::: + + +## Flags & Arguments + +### `cache` +The `cache` option expects a boolean that states if kaniko should make use of layer caching by pulling the previously build image and using the layers of this image as cache. + +#### Default Value For `cache` +```yaml +cache: true +``` + +#### Example: Building Images with kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + cache: true + frontend: + image: john/appfrontend + kaniko: + cache: false +``` +**Explanation:** +- The first image `backend` is built using kaniko and makes use of the build cache. +- The second image `frontend` is built using kaniko and does **not** use the build cache. + + +### `snapshotMode` +The `snapshotMode` option expects a string that can have the following values: +- `full` tells kaniko to do a full filesystem snapshot +- `time` tells kaniko to do a filesystem snapshot based on `mtime` (default) + +:::warning Limitations +One of the biggest limitations of the `time` mode is that kaniko might **miss** file metadata changes introduced by `RUN` statements, e.g. kaniko might skip a command such as `RUN chown 333:333 -R /app`. In cases where this is not an option, use `full` instead. Learn more about [limitations related to kaniko snapshots using `mtime`](https://github.com/GoogleContainerTools/kaniko#mtime-and-snapshotting). +::: + +#### Default Value For `snapshotMode` +```yaml +snapshotMode: time +``` + +#### Example: Building Images with kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + snapshotMode: full + frontend: + image: john/appfrontend + kaniko: + snapshotMode: time +``` +**Explanation:** +- The first image `backend` is built using kaniko and creates full filesystem snapshots. +- The second image `frontend` is built using kaniko and calculates filesystem snapshots only based on `mtime`. + + +### `insecure` +The `insecure` option expects a boolean stating if kaniko should allow to push to an insecure (plain HTTP instead of HTTPS) registry. + +:::warning +This option should only be set to `true` for testing purposes. +::: + +#### Default Value For `insecure` +```yaml +insecure: false +``` + +#### Example: Push to Insecure Registry With kaniko +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + insecure: false +``` +**Explanation:** +The image `backend` is built using kaniko and pushes to the insecure registry `123.456.789.0:5000` if allowed. + + +### `args` +The `args` option expects an array of strings that will be passed as arguments (and flags) when running the kaniko build command. + +:::note Kaniko Documentation +Take a look at the kaniko documentation for a full [list of available flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). +::: + +#### Default Value For `args` +```yaml +args: [] +``` + +#### Example: Passing Args to kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + args: + - --cache-dir=/tmp + - --verbosity=debug +``` +**Explanation:** +The image `backend` is built using kaniko and the flags `--cache-dir=/tmp --verbosity=debug` are set when running the build command within the kaniko pod used for image building. + + +### `command` +The `command` option expects an array of strings that will replace the starting command for the kaniko build container + +#### Default Value For `command` +```yaml +command: [] +``` + +#### Example: Replacing the command for the kaniko build container +```yaml +images: + backend: + image: john/appbackend + kaniko: + command: + - kaniko-custom +``` + + +
+ +## Build Pod Configuration + +### `annotations` +The `annotations` option expects a key/value map of extra annotations that will be added to the build pod + +#### Default value for `annotations` +```yaml +annotations: {} +``` + +#### Example: Add annotations to kaniko build pods +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + annotations: + app: kaniko +``` + +### `labels` +The `labels` option expects a key/value map of extra labels that will be added to the build pod + +#### Default value for `labels` +```yaml +labels: {} +``` + +#### Example: Add labels to kaniko build pods +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + labels: + app: kaniko +``` + +### `image` +The `image` option expects a string stating the image that should be used for the kaniko container within the build pod. + +#### Default Value For `image` +```yaml +image: gcr.io/kaniko-project/executor:v1.8.1 +``` + +#### Example: Use Different Kaniko Image/Version +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + image: gcr.io/kaniko-project/executor:v1.6.0 +``` + +### `env` +The `env` option provides extra environment variables that will be added to the build kaniko container. + +#### Default Value For `env` +```yaml +env: {} +``` + +#### Example: Specify environment variables for the kaniko container +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + env: + AZURE_CLIENT_ID: XXXXXXXX +``` + +### `envFrom` +The `envFrom` option provides extra environment variables from configmap or secret that will be added to the build kaniko container. + +#### Default Value For `envFrom` +```yaml +envFrom: {} +``` + +#### Example: Specify environment variables for the kaniko container using a secret +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + envFrom: + AZURE_CLIENT_ID: + secretMapKeyRef: + name: azure-creds + key: AZURE_CLIENT_ID +``` + +### `initImage` +The `initImage` option expects a string stating the image that should be used for the init kaniko container within the build pod. (default is `alpine`) + +### `initEnv` +The `initEnv` option provides extra environment variables that will be added to the build init container. + +#### Default Value For `initEnv` +```yaml +initEnv: {} +``` + +#### Example: Specify environment variables for the kaniko container +```yaml +images: + backend: + image: 123.456.789.0:5000/john/appbackend + kaniko: + initImage: alpine + initEnv: + AZURE_CLIENT_ID: XXXXXXXX +``` + +### `pullSecret` +The `pullSecret` option expects a string with the name of a Kubernetes secret which is used by kaniko as pull/push secret (e.g. for pulling the base image defined in the `FROM` statement of the Dockerfile and for pushing the newly built image after the kaniko build process). + +:::info +In most cases, DevSpace already makes sure that kaniko gets the correct pull secrets to push and pull to registries. +::: + +#### Default Value For `pullSecret` +```yaml +pullSecret: "" +``` + +#### Example: Pull Secret For kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + pullSecret: custom-pull-secret +``` +**Explanation:** +The image `backend` is built using kaniko. Kaniko uses the Kubernete secret, `custom-pull-secret`, to pull images from registries that require authentication. + +:::tip Creating Pull Secrets using `pullSecrets` +If you use the `pullSecret` option, you must create the secret before DevSpace tries to build your images. You can automate this by [using the pullSecrets feature](../../pullSecrets/README.mdx) as shown in this example: +```yaml +pullSecrets: +- registry: my-registry.com:5000 + username: ${REGISTRY_USER} + password: ${REGISTRY_PASSWORD} + secret: custom-pull-secret +``` +::: + +:::note Building AWS ECR images on EKS +If your EKS instance is [configured with access to ECR (see instance role permissions for AWS EKS and ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html), your pull secret referenced by the `pullSecret` option, could be created with this kubectl command: +```yaml +kubectl create secret generic custom-pull-secret --type=kubernetes.io/dockerconfigjson --from-literal .dockerconfigjson='{ "credsStore":"ecr-login" }' +``` +The resulting Kubernetes secret would look like this: +```yaml +apiVersion: v1 +kind: Secret +type: kubernetes.io/dockerconfigjson +metadata: + name: custom-pull-secret +data: + .dockerconfigjson: eyAiY3JlZHNTdG9yZSI6ImVjci1sb2dpbiIgfQ== +``` +If you define `pullSecret: custom-pull-secret` as shown in the example above, DevSpace will automatically mount this secret into the kaniko container and kaniko will be able to pull from and push to ECR. +::: + +### `skipPullSecretMount` +The `skipPullSecretMount` option expects a boolean and if true will skip mounting the pull secret to the kaniko build container. + +#### Default Value For `skipPullSecretMount` +```yaml +skipPullSecretMount: false +``` + + +### `additionalMounts` +The `additionalMounts` option expects an array of mount options that allow to mount Kubernetes Secrets and ConfigMaps into the kaniko container within the build pod. + +#### Default Value For `additionalMounts` +```yaml +additionalMounts: [] +``` + +#### Example: Mount ConfigMaps & Secrets For Kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + additionalMounts: + - mountPath: /some/configmap/dir + configMap: + name: my-configmap + - mountPath: /some/secret/dir + secret: + name: my-secret + items: + - key: aws-token + path: token.json +``` +**Explanation:** +The above configuration creates a kaniko container which mounts the following volumes: +- All keys within the ConfigMap `my-configmap` will be mounted as files within the folder `/some/configmap/dir`. The filenames will be the keys within the ConfigMap. +- The key `aws-token` within the Secret `my-secret` will be mounted as the file `/some/secret/dir/token.json`. + + +### `resources` +The `resources` option expects a Kubernetes resource object, so that the kaniko pod can specify `requests` and `limits` for resources such as `memory` and `cpu`. + +#### Default Value For `resources` +```yaml +resources: {} +``` + +#### Example: Resource Limits For Kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + resources: + limits: + memory: "256Mi" + cpu: "500m" +``` + + +### `namespace` +The `namespace` option expects a string stating a namespace that should be used to start the kaniko build pod in. + +:::warning Hard-Coding Namespaces Discouraged +Unless you really know what you are doing, it is discouraged to hard-code namespaces within devspace.yaml because that makes it harder to share the project and its configuration with others. +::: + +#### Default Value For `namespace` +```yaml +namespace: "" # defaults to the default namespace of the current kube-context +``` + +#### Example: Different Namespace For kaniko +```yaml +images: + backend: + image: john/appbackend + kaniko: + namespace: build-namespace +``` +**Explanation:** +The image `backend` is built using kaniko. The build pod starts to run the kaniko build process and creates the namespace `build-namespace` within the cluster that the current kube-context points to. + +### `serviceAccount` + +The service account to use for the build pod. + +### `nodeSelector` + +A key value map of the node selector to use for the build pod. + +### `tolerations` + +Array of node [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#concepts) that should be used to schedule the build pod. + +
+ + +## Config Reference + + diff --git a/docs/pages/configuration/images/build.mdx b/docs/pages/configuration/images/build.mdx new file mode 100644 index 0000000000..f05dd2918b --- /dev/null +++ b/docs/pages/configuration/images/build.mdx @@ -0,0 +1,238 @@ +--- +title: Image Building with DevSpace +sidebar_label: 1. Build +--- + +import ConfigPartialBuildConfig from '../_partials/v2beta1/images/group_buildconfig.mdx' +import ConfigPartialOverwrites from '../_partials/v2beta1/images/group_overwrites.mdx' +import ConfigPartialRebuildStrategy from '../_partials/v2beta1/images/rebuildStrategy.mdx' +import PreventBuildTip from './_partials/prevent_build.mdx' + +DevSpace can build images using a variety of build engines. + + + + +## Building Images + +### 1. Define Images +In build images with DevSpace, we need to add them to the `images` section of `devspace.yaml`: +```yaml title=devspace.yaml +version: v2beta1 +images: + api: + image: ghcr.io/loft-sh/devspace-example-api + payments: + image: ghcr.io/loft-sh/devspace-example-payments + dockerfile: ./payments/Dockerfile + context: ./payments/ + auth: + image: ghcr.io/loft-sh/devspace-example-auth + dockerfile: ./auth/Dockerfile + context: ./auth/ + target: production + buildArgs: + SOME_ARG: "value" + ANOTHER_ARG: "some other value" +``` +The example above defines 3 images: +- `api` with Dockerfile in `./Dockerfile` and build context in `./` (default values) +- `payments` with Dockerfile in `./payments/Dockerfile` and build context in `./payments/` +- `auth` with Dockerfile in `./auth/Dockerfile` and build context in `./auth/` + Additionally, the image `auth` also defines a few [`buildArgs`](#buildargs) and a [build `target`](#target-for-multi-stage-builds) for multi-stage builds. + + +### 2. Call `build_images` in Pipeline +DevSpace builds images when the [`build_image` function](../functions/README.mdx#build_images) is called within `pipelines` as shown in this example: +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + # highlight-start + build: |- + build_images --all + build-api: |- + build_images api + build-ordered: |- + build_images auth + build_images api payments + # highlight-end + +images: + api: ... # see example above + payments: ... # see example above + auth: ... # see example above +``` + + +### 3. Run Pipeline +Given the example above, you can now run: +- `devspace build` to build all 3 images in parallel +- `devspace run-pipeline build-api` to build only the image named `api` +- `devspace run-pipeline build-ordered` to + 1. First build the image `auth` (blocking) + 2. Then build the images `api` and `payments` in parallel + + +## Build Configuration +DevSpace lets you customize the build process for each image using the following config fields: + + + + +### `buildArgs` +Your Dockerfile can use the `ARG` instruction to define arguments that will be used in other build instructions as this example shows: +```Dockerfile title=Dockerfile +ARG JDK_VERSION=17 +FROM maven:3-openjdk-${JDK_VERSION}-slim +``` +By default, this Dockerfile uses `maven:3-openjdk-7-slim` as base image but you can pass the build arg `JDK_VERSION` to change this dynamically. + +There are two options to provide build args in `devspace.yaml`: + +
+ + +#### 1. Setting `buildArgs` in the `images` section + + + +```yaml title=devspace.yaml +version: v2beta1 +images: + auth: + image: ghcr.io/loft-sh/devspace-example-auth + # highlight-start + buildArgs: + JDK_VERSION: 8 + ANOTHER_ARG: "some other value" + # highlight-end +``` + +
+ +
+ + +#### 2. Calling `build_images` with the `--set` flag to dynamically add or override the `buildArgs` at runtime + + + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + build_images --set buildArgs.JDK_VERSION=11 --set "buildArgs.SOME_ARG_NAME=some value" +images: + auth: + image: ghcr.io/loft-sh/devspace-example-auth +``` + +
+ + + +### `target` For Multi-Stage Builds +Some Dockerfiles contain multiple `FROM` instructions that define build stages optionally using the `AS ` suffix as shown below: +```Dockerfile title=Dockerfile +# highlight-next-line +FROM golang:1.17-bullseye AS builder +ADD . /go/src/app +RUN go build -o /go/bin/app + +# highlight-next-line +FROM gcr.io/distroless/base-debian11 +COPY --from=builder /go/bin/app / +CMD ["/app"] +``` +Without defining a build `target`, DevSpace (just like Docker and most other build engines) would build the entire image. However, for developerment, you may not want to use the fully built image because in this case it is a distroless container that only contains the final Go binary but no development tooling, not even `sh` to be able to open a terminal inside the container via `devspace enter`. + +If you want the image building process to only build the `builder` stage (line 1-4), then you have two options to pass a build `target`: + +
+ + +#### 1. Setting `target` in the `images` section + + + +```yaml title=devspace.yaml +version: v2beta1 +images: + auth: + image: ghcr.io/loft-sh/devspace-example-auth + # highlight-next-line + target: builder +``` + +
+ +
+ + +#### 2. Calling `build_images` with the `--set` flag to dynamically add or override the `target` at runtime + + + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + build_images auth --set target=builder +images: + auth: + image: ghcr.io/loft-sh/devspace-example-auth +``` + +
+ + +### Dockerfile Overwrites +DevSpace provides several config options to make in-memory changes to the build process without the need to change your Dockerfile: + + + + +## Rebuild Strategy +By default, DevSpace tries to skip building images as much as possible. Once any of your images is built once, DevSpace will only rebuild it if one of the conditions is true: +- The `dockerfile` has changed +- Any file within the build `context` folder has changed (while respecting `.dockerignore` rules) +- The image configuration within the `devspace.yaml` has changed (including values set in the pipeline scripe, e.g. via `--set`) +- The image was **not** been built before or the `.devspace/` folder has been deleted/manipulated + +You can explicitly override this behavior using the `rebuildStrategy` field: + + + +You can also set the `rebuildStrategy` during runtime using the `--set` flag: +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + build_images auth --set rebuildStrategy=always +``` + +:::tip `.devspace/` Folder +DevSpace stores the information about each previously built image inside the `.devspace/` folder within your project. Do **not** commit this folder via `git`. It should always be listed in `.gitignore`. +::: + + +## `--skip-build` Flag +If you call `devspace [dev/deploy/build/run-pipeline]` using the `--skip-build` flag, DevSpace will skip any `build_images` instructions defined in your pipeline script. + + +## Parallel vs Sequential Builds +When calling `build_images --all` or `build_images [image1] [image2]`, DevSpace builds all specified images in parallel. + +To execute image building sequentially, call `build_images` multiple times as shown below: +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + build_images auth + build_images api payments + +images: + api: ... # see example above + payments: ... # see example above + auth: ... # see example above +``` diff --git a/docs/pages/configuration/images/buildkit.mdx b/docs/pages/configuration/images/buildkit.mdx deleted file mode 100644 index 7c6dea9a79..0000000000 --- a/docs/pages/configuration/images/buildkit.mdx +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Build Images with BuildKit -sidebar_label: buildKit ---- - -Using [BuildKit](https://github.com/moby/buildkit) as build tool allows you to build images either locally or inside your Kubernetes cluster without a Docker daemon. - -:::info -In order to use the build kit you'll either need to have [docker](https://docs.docker.com/get-docker/) installed locally or the [buildx CLI](https://github.com/docker/buildx/releases). **If you only want to use the in cluster build functionality, you won't need a running docker daemon and just need the CLI tools.** -::: - -With `buildKit` enabled, DevSpace will use `docker buildx build` for building. If in cluster building is enabled, DevSpace will deploy a BuildKit deployment into the Kubernetes cluster that will function as target BuildKit daemon for `docker buildx build`. You can also share a single Kubernetes BuildKit daemon across multiple users to share a common build cache. - -To set `buildKit` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -## In Cluster Building - -If the `inCluster` object is set, DevSpace will build the image directly in the Kubernetes cluster instead of using the local docker daemon. DevSpace will start or reuse a BuildKit deployment in the Kubernetes cluster that acts as target BuildKit daemon. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- `buildKit.inCluster` tells DevSpace to build the image inside the target Kubernetes cluster instead of using the local docker daemon. -- By default, DevSpace will create a BuildKit daemon deployment inside the target namespace that will be used for this and all future builds. - -### `inCluster.namespace` - -The option takes a string and defines the namespace where to create the BuildKit deployment in. Defaults to the current DevSpace target namespace. - -:::info -By setting `name` and `namespace` you can share a single BuildKit deployment for multiple users. This will have the advantage that a shared build cache is used. -::: - -### `inCluster.name` - -The option takes a string and defines the name of the BuildKit builder DevSpace will use or create if it does not exist. `name` will also be the name of the BuildKit deployment that is created by DevSpace. By default, DevSpace will create a BuildKit builder in the following form: devspace-NAMESPACE. For more information about what BuildKit builders are check the [docker docs](https://docs.docker.com/engine/reference/commandline/buildx_create/). - -### `inCluster.rootless` - -The option takes a boolean and defines if the BuildKit deployment should deploy a non priviledged pod. By default, the BuildKit deployment will try to create a priviledged pod. - -### `inCluster.image` - -The option takes a string and defines the docker image to use for the BuildKit deployment. - -### `inCluster.nodeSelector` - -The option takes a string in the form of `my-label=value,my-label2=value2` that will be used as node selector for the BuildKit deployment. - -### `inCluster.noCreate` - -The option takes a boolean as value. By default, DevSpace will try to create a new builder if it cannot be found. If this option true, DevSpace will fail if the specified builder cannot be found. - -### `inCluster.noRecreate` - -The option takes a boolean as value. By default, DevSpace will try to recreate the builder if the builder configuration in the devspace.yaml differs from the actual builder configuration. If this is true, DevSpace will not try to do that. - -### `inCluster.noLoad` - -The option takes a boolean as value. If image push is disabled (for example by flag `--skip-push` or via `build.buildKit.skipPush`), DevSpace will load the created image into the local docker daemon. If the option is true, DevSpace will not try to do that. - -### `inCluster.createArgs` - -The option takes a string array as value. These arguments will be appended to the `docker buildx create` command. - -## BuildKit options - -If `buildKit.inCluster` is omitted, DevSpace will build the image with the local docker daemon and not interact with the Kubernetes cluster. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- Internally DevSpace will use `docker buildx build` to build the image. - -### `skipPush` - -The option takes a boolean as value. If this option is enabled, DevSpace will not push the image to the registry. If in cluster build is enabled, DevSpace will try to load the image into the local docker daemon if the image is not pushed. - -:::tip -DevSpace will automatically skip image pushing if it detects a local docker daemon such as docker-desktop or minikube. You can disable this behaviour by setting the flag `--skip-push-local-kube=false` -::: - -### `preferMinikube` - -The option takes a boolean as value. If this option is disabled, DevSpace will not try to use the minikube docker daemon for image building. This option only has an effect, if minikube is installed and the current kube context is `minikube`. - -### `args` - -This option takes a string array as value. The arguments will be appended to the `docker buildx build` call DevSpace will run. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - args: ["--cache-to", "user/app:cache"] -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The args option will append arguments to the `docker buildx build` command which will then look something like this: `docker buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -### `command` - -The option takes a string array as value. By default, DevSpace will use `docker buildx` as base command for interacting with BuildKit, if this option is set, you can tell DevSpace to use a different base command. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - command: ["/path/to/my/buildx"] -``` -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The command option will tell DevSpace to use this command instead of `docker buildx` and the actual build command will look like this: `/path/to/my/buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - -### `options.target` - -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. - - - -### `options.network` - - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. - - - -### `options.buildArgs` - -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/pages/configuration/images/docker.mdx b/docs/pages/configuration/images/docker.mdx deleted file mode 100644 index dedc484009..0000000000 --- a/docs/pages/configuration/images/docker.mdx +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Build Images with Docker -sidebar_label: docker ---- - -## `docker` -If nothing is specified, DevSpace always tries to build the image using `docker` as build tool. - - -### `useBuildKit` -The `useBuildKit` option expects a boolean which allows to enable buildkit builds (i.e. `DOCKER_BUILDKIT=1`). - -#### Default Value For `useBuildKit` -```yaml -useBuildKit: false -``` - -#### Example: Docker useBuildKit -```yaml -images: - backend: - image: john/appbackend - build: - docker: - useBuildKit: true -``` - -### `useCli` -If `useCli` is true, devspace will use the local docker installation for building and invoke `docker build`. This option is implicitly true, if `useBuildKit` or `args` is specified. - -### `args` -The `args` option expects an array of strings to be passed as arguments and flags to Docker. - -:::warning -When specifying `args`, DevSpace will invoke your installed Docker CLI via a command-line call instead of using the built-in Docker client. This has the negative effects that: -- The kaniko fallback will not be used anymore. -- You need to make sure that everyone who is using this configuration has the same version (or a compatible one) of Docker installed. -::: - -#### Example: Docker args -```yaml -images: - backend: - image: john/appbackend - build: - docker: - args: - - "--no-cache" - - "--compress" -``` - - -### `disableFallback` -When using `docker` as build tool, DevSpace checks if Docker is installed and running. If Docker is not installed or not running, DevSpace will use kaniko as fallback to build the image unless the option `disableFallback` is set to `false`. - -#### Default Value For `disableFallback` -```yaml -disableFallback: false -``` - -#### Example: Disabling kaniko Fallback -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - build: - docker: - disableFallback: true -``` -**Explanation:** -- The first image `backend` would be built using Docker and if Docker is not available, the image would be built using kaniko as a fallback. -- The second image `frontend` would be built using Docker and if Docker is not available, DevSpace would exit with a fatal error instead of using the kaniko fallback. - - -### `preferMinikube` -DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. - -#### Default Value For `preferMinikube` -```yaml -preferMinikube: true -``` - -#### Example: Building Images in Minikube -```yaml -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -**Explanation:** -- The first image `backend` would be preferably built with Minikube's Docker daemon and the image would **not** be pushed to a registry. -- The second image `frontend` would **not** be built with the Docker daemon of Minikube and it would be pushed to a registry after building and tagging the image using Docker (or kaniko as fallback). - -### `skipPush` -The `skipPush` option expects a boolean value stating if pushing the image to a registry should be skipped during the build process. - -If DevSpace is using a local Kubernetes cluster, pushing images might not be necessary because the image might already be accessible by Kubernetes via a local Docker daemon. In this case, it can make sense to speed up the process by setting `skipPush` to `true`. - -:::info Auto-Enabled for Minikube & Docker Desktop -DevSpace automatically skips image push for kube-contexts with the following names: -- `minikube` -- `docker-desktop` -- `docker-for-desktop` - -This allows to keep `skipPush: false` for these local clusters which helps to keep the configuration reusable and indepent of the kube-context, i.e. it makes it easier to switch between local and remote clusters. -::: - -:::warning Remote Clusters -Setting this option means that the configuration cannot be used to deploy to remote clusters anymore, which makes it harder to switch between clusters and keep the configuration cluster-independent. -::: - -#### Default Value For `skipPush` -```yaml -skipPush: false -``` - -#### Example -```yaml {7} -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - skipPush: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -The above configration would only push the `frontend` image but not the `backend` image. To manually trigger image building and pushing for all images, run: -```bash -devspace build -``` - - - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `target` - -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. - -### `network` - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. - - -### `buildArgs` - -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/pages/configuration/images/kaniko.mdx b/docs/pages/configuration/images/kaniko.mdx deleted file mode 100644 index f5a5caa533..0000000000 --- a/docs/pages/configuration/images/kaniko.mdx +++ /dev/null @@ -1,376 +0,0 @@ ---- -title: Build Images with kaniko -sidebar_label: kaniko ---- - -Using [kaniko](https://github.com/GoogleContainerTools/kaniko) as build tool allows you to build images directly inside your Kubernetes cluster without a Docker daemon. DevSpace simply starts a build pod and builds the image using `kaniko`. - -:::note Automatic Cleanup -After the build process completes, the build pod started for the kaniko build process will be deleted again. -::: - -To set `kaniko` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: {} -``` - -## Flags & Arguments - -### `cache` -The `cache` option expects a boolean that states if kaniko should make use of layer caching by pulling the previously build image and using the layers of this image as cache. - -#### Default Value For `cache` -```yaml -cache: true -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - cache: false -``` -**Explanation:** -- The first image `backend` would be built using kaniko and make use of the build cache. -- The second image `frontend` would be built using kaniko and **not** use the build cache. - - -### `snapshotMode` -The `snapshotMode` option expects a string that can have the following values: -- `full` tells kaniko to do a full filesystem snapshot -- `time` tells kaniko to do a filesystem snapshot based on `mtime` (default) - -:::warning Limitations -One of the biggest limitations of the `time` mode is that kaniko might **miss** file metadata changes introduced by `RUN` statements, e.g. kaniko might skip a command such as `RUN chown 333:333 -R /app`. In cases where this is not an option, use `full` instead. Learn more about [limitations related to kaniko snapshots using `mtime`](https://github.com/GoogleContainerTools/kaniko#mtime-and-snapshotting). -::: - -#### Default Value For `snapshotMode` -```yaml -snapshotMode: time -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - snapshotMode: time -``` -**Explanation:** -- The first image `backend` would be built using kaniko and creating full filesystem snapshots. -- The second image `frontend` would be built using kaniko and calculate filesystem snapthots only based on `mtime`. - - -### `insecure` -The `insecure` option expects a boolean stating if kaniko should allow to push to an insecure (plain HTTP instead of HTTPS) registry. - -:::warning -This option should only be set to `true` for testing purposes. -::: - -#### Default Value For `insecure` -```yaml -insecure: false -``` - -#### Example: Push to Insecure Registry With kaniko -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - insecure: false -``` -**Explanation:** -The image `backend` would be built using kaniko and pushing to the insecure registry `123.456.789.0:5000` would be allowed. - - -### `args` -The `args` option expects an array of strings that will be passed as arguments (and flags) when running the kaniko build command. - -:::note Kaniko Documentation -Take a look at the kaniko documentation for a full [list of available flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). -::: - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Passing Args to kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - args: - - --cache-dir=/tmp - - --verbosity=debug -``` -**Explanation:** -The image `backend` would be built using kaniko and the flags `--cache-dir=/tmp --verbosity=debug` would be set when running the build command within the kaniko pod used for image building. - - - -
- -## Build Pod Configuration - -### `image` -The `image` option expects a string stating the image that should be used for the kaniko container within the build pod. - -#### Default Value For `image` -```yaml -image: gcr.io/kaniko-project/executor:v1.8.1 -``` - -#### Example: Use Different Kaniko Image/Version -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - image: gcr.io/kaniko-project/executor:v1.6.0 -``` - -### `initImage` -The `initImage` option expects a string stating the image that should be used for the init kaniko container within the build pod. (default is `alpine`) - -### `pullSecret` -The `pullSecret` option expects a string with the name of a Kubernetes secret which is used by kaniko as pull/push secret (e.g. for pulling the base image defined in the `FROM` statement of the Dockerfile and for pushing the newly built image after the kaniko build process). - -:::info -In most cases, DevSpace already makes sure that kaniko gets the correct pull secrets to push and pull to registries. -::: - -#### Default Value For `pullSecret` -```yaml -pullSecret: "" -``` - -#### Example: Pull Secret For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - pullSecret: custom-pull-secret -``` -**Explanation:** -The image `backend` would be built using kaniko and kaniko would use the Kubernete secret `custom-pull-secret` to pull images from registries that require authentication. - -:::tip Creating Pull Secrets using `hooks` -If you use the `pullSecret` option, you have to manually create the secret before DevSpace tries to build your images. You can automate this by [defining a hook in devspace.yaml](../../configuration/hooks/basics.mdx) as show in this example: -```yaml -hooks: -- command: kubectl - args: - - create - - secret - - generic - - custom-pull-secret - - --type=kubernetes.io/dockerconfigjson - - --from-literal - - .dockerconfigjson='{ "credsStore":"ecr-login" }' - when: - before: - images: all -``` -::: - -:::note Building AWS ECR images on EKS -If your EKS instance is [configured with access to ECR (see instance role permissions for AWS EKS and ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html), your pull secret referenced by the `pullSecret` option, could be created with this kubectl command: -```yaml -kubectl create secret generic custom-pull-secret --type=kubernetes.io/dockerconfigjson --from-literal .dockerconfigjson='{ "credsStore":"ecr-login" }' -``` -The resulting Kubernetes secret would look like this: -```yaml -apiVersion: v1 -kind: Secret -type: kubernetes.io/dockerconfigjson -metadata: - name: custom-pull-secret -data: - .dockerconfigjson: eyAiY3JlZHNTdG9yZSI6ImVjci1sb2dpbiIgfQ== -``` -If you define `pullSecret: custom-pull-secret` as shown in the example above, DevSpace will automatically mount this secret into the kaniko container and kaniko will be able to pull from and push to ECR. -::: - - -### `additionalMounts` -The `additionalMounts` option expects an array of mount options that allow to mount Kubernetes Secrets and ConfigMaps into the kaniko container within the build pod. - -#### Default Value For `additionalMounts` -```yaml -additionalMounts: [] -``` - -#### Example: Mount ConfigMaps & Secrets For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - additionalMounts: - - mountPath: /some/configmap/dir - configMap: - name: my-configmap - - mountPath: /some/secret/dir - secret: - name: my-secret - items: - - key: aws-token - path: token.json -``` -**Explanation:** -The above configuration would create a kaniko container which mounts the following volumes: -- All keys within the ConfigMap `my-configmap` will be mounted as files within the folder `/some/configmap/dir`. The filenames will be the keys within the ConfigMap. -- The key `aws-token` within the Secret `my-secret` will be mounted as the file `/some/secret/dir/token.json`. - - -### `resources` -The `resources` option expects a Kubernetes resource object, so that the kaniko pod can specify `requests` and `limits` for resources such as `memory` and `cpu`. - -#### Default Value For `resources` -```yaml -resources: {} -``` - -#### Example: Resource Limits For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - resources: - limits: - memory: "256Mi" - cpu: "500m" -``` - - -### `namespace` -The `namespace` option expects a string stating a namespace that should be used to start the kaniko build pod in. - -:::warning Hard-Coding Namespaces Discouraged -Unless you really know what you are doing, it is discouraged to hard-code namespaces within devspace.yaml because that makes it harder to share the project and its configuration with others. -::: - -#### Default Value For `namespace` -```yaml -namespace: "" # defaults to the default namespace of the current kube-context -``` - -#### Example: Different Namespace For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - namespace: build-namespace -``` -**Explanation:** -The image `backend` would be built using kaniko and the build pod started to run the kaniko build process would be created within the namespace `build-namespace` within the cluster that the current kube-context points to. - -### `serviceAccount` - -The service account to use for the build pod. - -### `nodeSelector` - -A key value map of the node selector to use for the build pod. - -### `tolerations` - -Array of node [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#concepts) that should be used to schedule the build pod. - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `options.target` - -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. - - -### `options.network` - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. - - - -### `options.buildArgs` - -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/pages/configuration/images/pull.mdx b/docs/pages/configuration/images/pull.mdx new file mode 100644 index 0000000000..c8e7e86641 --- /dev/null +++ b/docs/pages/configuration/images/pull.mdx @@ -0,0 +1,20 @@ +--- +title: Push +sidebar_label: 4. Pull +--- + +If you want to deploy containers that run based on images from a private registry, your Kubernetes cluster needs credentials for the registry in order to pull these images. + + +## Create Pull Secrets +In many cases, DevSpace automatically creates pull secrets for you but you can also manually create them. + +### Automatic +DevSpace can automatically create pull secrets to provide registry credentials for Kubernetes to pull images from these private registries. DevSpace retrieves the credentials from your local credentials store in Docker. + +The following functions can be called in the scripts defined in your `pipelines` section and when DevSpace executes them, it triggers pull secrets to be created: +1. `build_images` (unless `createPullSecrets` is `false` for the respective image in the `images` section of `devspace.yaml`) +2. `ensure_pull_secrets` + +### Manual +Instead of letting DevSpace automatically create pull secrets, you can also manually create them by using the [`pullSecrets` section in `devspace.yaml`](../pullSecrets/README.mdx) diff --git a/docs/pages/configuration/images/push.mdx b/docs/pages/configuration/images/push.mdx new file mode 100644 index 0000000000..db98a95c07 --- /dev/null +++ b/docs/pages/configuration/images/push.mdx @@ -0,0 +1,90 @@ +--- +title: Push +sidebar_label: 3. Push +--- + +Unless you are working in a localhost cluster, you will need to push your images to an image registry to be able to use them inside a Kubernetes cluster. DevSpace provides capabilities to push images to any registry if properly configured. + +## Which Registry? +DevSpace can work with any registry. It retrieves the location of the registry from the `image` option in `devspace.yaml`: + +```yaml title=devspace.yaml +version: v2beta1 +images: + auth: + # highlight-start + image: loftsh/devspace-example-auth # Docker Hub + # highlight-end + tags: + - dev-latest + api: + # highlight-start + image: ghcr.io/loft-sh/devspace-example-api # GitHub Registry + # highlight-end + payments: + # highlight-start + image: acc123456.dkr.ecr.us-east1.amazonaws.com/devspace-example-payments # AWS ECR + # highlight-end + dockerfile: ./payments/Dockerfile + context: ./payments/ + tags: + - some-tag + - another-tag +``` +The images in the example above would translate to the following `docker push` commands (note that we show these `docker push` commands just for explanatory reasons, DevSpace is actually not running `docker push`): +```bash +# For image auth: +docker push loftsh/devspace-example-auth:dev-latest + +# For image api: +docker push ghcr.io/loft-sh/devspace-example-api:[RANDOM_TAG] # No tags were provided, so DevSpace generates a random tag + +# For image payments: +docker push acc123456.dkr.ecr.us-east1.amazonaws.com/devspace-example-payments:some-tag +docker push acc123456.dkr.ecr.us-east1.amazonaws.com/devspace-example-payments:another-tag +``` + + +## Authentication +DevSpace provides two options for authenticating with a registry: +1. Automatic authentication via Docker Credential Store +2. Manual registry authentication via [`pullSecrets`](../pullSecrets/README.mdx) + +To use the automatic authentication, make sure you sign in to the registry via `docker login`: +```bash +# For Docker Hub: +docker login + +# For GitHub: +docker login ghcr.io +``` + +:::tip Verify Registry Authentication +An easy way to verify if you are successfully authenticated with your registry is to manually run the push command via: +```bash +docker push $REGISTRY/$IMAGE:$TAG +``` +If this command works for your registry, image and tag combination, then DevSpace should also be able to push to the registry. +::: + + +## Skip Push +In some cases you may want to skip image building entirely. The most common case is when you are working with a localhost Kubernetes cluster such as Docker Desktop or Minikube. + +### Automatic Skip Push +DevSpace will automatically try to skip pushing images if it detects that you are working with a localhost Kubernetes cluster. This is only possible if DevSpace is able to build the image with the Docker daemon that powers your Kubernetes cluster (i.e. you are not using kaniko, for example, and the Kubernetes cluster's Docker daemon is reachable for DevSpace). + +### Manual Skip Push +To manually skip image building, you have the following options: +1. Pass the `--skip-push` flag to `build_images` inside your `pipelines` section of `devspace.yaml`. +2. Pass the `--skip-push` flag to the DevSpace command you are running, e.g. `devspace dev` or `devspace run-pipeline mypipeline` which in turn passes the flag through to every `build_images` call in the respective pipeline that will be executed. +3. Set `skipPush: true` within the `images` section of your `devspace.yaml` as shown in this example: + ```yaml title=devspace.yaml + version: v2beta1 + images: + auth: + image: loftsh/devspace-example-auth + # highlight-start + skipPush: true + # highlight-end + ``` diff --git a/docs/pages/configuration/images/tag.mdx b/docs/pages/configuration/images/tag.mdx new file mode 100644 index 0000000000..2ad876fb4b --- /dev/null +++ b/docs/pages/configuration/images/tag.mdx @@ -0,0 +1,64 @@ +--- +title: Tagging Images with DevSpace +sidebar_label: 2. Tag +--- + +DevSpace always instructs the build engine to tag any images that are being built. By default, DevSpace uses a random string to tag each image. However, you can customize how DevSpace should tag your images. + + +## `--tag / -t` Flag +One option to tell DevSpace to use one or multiple custom tags is to use the `--tag / -t` flag for the pipeline function `build_images`, either by providing it inside the pipeline script or by passing it when invoking a `devspace` command that runs the respective pipeline. + +### via `build_images` +The [`build_images` function](../functions/README.mdx#build_images) provides a `--tag / -t` flag that can be passed multiple times to the function to specify one or more tags that DevSpace should use to tag the respective images. + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + GIT_TAG_OR_HASH=$(git describe --always) + # highlight-next-line + build_images api -t latest -t $GIT_TAG_OR_HASH + +images: + api: ... # see example above + payments: ... # see example above + auth: ... # see example above +``` + + +### via `devspace build/dev/deploy/...` +DevSpace also provides a `--tag / -t` flag for pipeline-based commands such as `devspace build`, `devspace deploy` or `devspace run-pipeline [name]` which is passed to every `build_images` call. + +```bash +devspace build -t latest -t $CUSTOM_HASH +``` + + +## `tags` Field in `devspace.yaml` +Instead of using the `--tag` flags, you can also statically define tags for each image in your `images` section and `build_images` will respect them for each image independently: + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + build: |- + build_images --all + +images: + api: + image: ghcr.io/loft-sh/devspace-example-api + # highlight-start + tags: + - dev-latest + - $(git describe --always) + # highlight-end + payments: + image: ghcr.io/loft-sh/devspace-example-payments + dockerfile: ./payments/Dockerfile + context: ./payments/ + # highlight-start + tags: + - some-tag + - another-tag + # highlight-end +``` diff --git a/docs/pages/configuration/imports/README.mdx b/docs/pages/configuration/imports/README.mdx new file mode 100644 index 0000000000..7830b9b3dc --- /dev/null +++ b/docs/pages/configuration/imports/README.mdx @@ -0,0 +1,90 @@ +--- +title: Import Other devspace.yaml Files +sidebar_label: imports +--- + +import ConfigPartialImports from '../_partials/v2beta1/imports.mdx' + + +Importing other `devspace.yaml` files is a powerful way to standardize things across multiple projects. Common use cases include: +- Importing a library of custom [`functions`](../functions/README.mdx) that should be available in each project +- Importing a set of standardized [`pipelines`](../pipelines/README.mdx) to make the `devspace dev` behavior consistent across a set of projects +- Importing a set of custom [`commands`](../commands/README.mdx) that should be available for engineers in similar project (e.g. you want that all Java Spring Boot applications should provide a `devspace run migrate-db` command) + + +## Example +Let's say we have a `devspace.yaml` in `project-a` with the following content: +```yaml title="File: github.com/project-a/devspace.yaml" +version: v2beta1 +imports: +- git: github.com/project-b/devspace.yaml + tag: v1.2.0 +- ... +functions: + function_in_project_a_only: |- + echo "This is a function only available in project a" +``` + +The `devspace.yaml` above imports the `devspace.yaml` from `project-b` which looks like this: +```yaml title="File: github.com/project-b/devspace.yaml" +version: v2beta1 +functions: + shared_function: |- + echo "This is a shared function" +``` + +If we run `devspace print` inside `project-a`, it will show the following merged config: +```yaml title="project-a/ $ devspace print" +version: v2beta1 +functions: + shared_function: |- + echo "This is a shared function" + function_in_project_a_only: |- + echo "This is a function only available in project a" +``` + + +## `imports` vs `dependencies` +The following table clarifies when to use `imports` and when to use `dependencies`: + +| Difference | `imports` | `dependencies` | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Use Case | Importing shared/standardized functionality (e.g. `functions`, `pipelines`, `commands`) into **independent** projects | Defining logical dependencies between **inter-dependent** projects (app A requiring app B to be deployed) | +| Example | If projects A and B should both have some shared functionality that is defined in a shared `devspace.yaml` | If a project A with requires projectd B and C to be deployed in order to work correctly | +| Impact | If project A imports a `devspace.yaml` from another `devspace.yaml`, then everything defined in this imported `devspace.yaml` will be merged into the `devspace.yaml` of project A. | If project A has a `devspace.yaml` that defines project B as a git-based `dependency`, then DevSpace will `git clone` project B and deploy it when you run `run_dependency_pipelines b` inside your pipeline script. | + + +## Naming Conflicts +If a project imports a `devspace.yaml` that defines a named object (e.g. `function`, `pipeline`, etc.), the main `devspace.yaml` that is defining the `imports` takes precedence over the imported `devspace.yaml`. + +Let's assume the following `devspace.yaml` inside `project-a`: +```yaml title="File: github.com/project-a/devspace.yaml" +version: v2beta1 +imports: +- git: github.com/project-b/devspace.yaml +functions: + function_x: |- + echo "This is a function_x from project-a" +``` + +The `devspace.yaml` above imports the `devspace.yaml` from `project-b` which looks like this: +```yaml title="File: github.com/project-b/devspace.yaml" +version: v2beta1 +functions: + function_x: |- + echo "This is function_x from project-b" +``` + +If we run `devspace print` inside `project-a`, it will show the following merged config: +```yaml title="project-a/ $ devspace print" +version: v2beta1 +functions: + function_x: |- + echo "This is a function_x from project-a" +``` + + +## Config Reference +The `imports` section in your `devspace.yaml` file is an array and each entry (import) supports the following fields: + + diff --git a/docs/pages/configuration/pipelines/README.mdx b/docs/pages/configuration/pipelines/README.mdx new file mode 100644 index 0000000000..35ca84c5bf --- /dev/null +++ b/docs/pages/configuration/pipelines/README.mdx @@ -0,0 +1,140 @@ +--- +title: Pipelines +sidebar_label: pipelines +--- + +import ConfigPartialPipeline from '../_partials/v2beta1/pipelines.mdx' + +Pipelines allow you to fully customize the execution logic in DevSpace, i.e. they define what happens when a users run commands such as `devspace dev`, `devspace build`, `devspace deploy` or `devspace run-pipeline my-custom-pipeline` + + +## Using Pipelines + +### 1. Define Pipelines +An example `pipelines` section could look like this in `devspace.yaml`: +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + dev: |- + run_dependency_pipelines --all # 1. Deploy any projects this project needs (see "dependencies") + create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" + start_dev app # 3. Start dev mode "app" (see "dev" section) + deploy: |- + run_dependency_pipelines --all # 1. Deploy any projects this project needs (see "dependencies") + build_images --all -t $(git describe --always) # 2. Build, tag (git commit hash) and push all images (see "images") + create_deployments --all # 3. Deploy Helm charts and manifests specfied as "deployments" + build: + # Here we are using the long-form using `run:` instead of passing the script directly + run: |- + build_images --all -t $(git describe --always) + custom: ... +``` + +Pipelines can: +- Call built-in functions such as `build_images`, `create_deployments` or `start_dev` +- Call functions defined in `devspace.yaml` or in any `import` +- Use bash-like syntax including `if []; then ... fi`, `&&`, `||` or `;` +- Access environment variables and DevSpace variables + + +### 2. Run Pipelines +Pipelines are invoked via: +```bash +devspace run-pipeline [name] +``` + +:::info Cross-Platform Execution +Write all pipeline scrips in `bash` fashion. DevSpace is using a library to make them cross-platform executable. +::: + + +## Default Pipelines +DevSpace provides default pipeline scripts for the following top-level commands: +- [`devspace dev`](#dev) +- [`devspace deploy`](#deploy) +- [`devspace build`](#build) + +
+ + +### `dev` + + + +The `dev` pipeline is executed by running `devspace dev` and has the following default workflow: + +```bash +run_dependency_pipelines --all # 1. Deploy any projects this project needs (see "dependencies") +create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" +start_dev --all # 3. Start all dev modes +``` + +
+ +
+ + +### `deploy` + + + +The `deploy` pipeline is executed by running `devspace deploy` and has the following default workflow: + +```bash +run_dependency_pipelines --all # 1. Deploy any projects this project needs (see "dependencies") +build_images --all # 2. Build, tag (git commit hash) and push all images (see "images") +create_deployments --all # 3. Deploy Helm charts and manifests specfied as "deployments" +``` + +
+ + +
+ + +### `build` + + + +The `build` pipeline is executed by running `devspace build` and has the following default workflow: + +```bash +build_images --all # Build, tag (git commit hash) and push all images (see "images") +``` + +
+ + +## Custom Flags +To add custom flags to commands such as `devspace dev` or `devspace run-pipeline my-custom-pipeline`, you can specify the `flags` field for the respective pipeline. + +The following example defines two flags for `devspace dev`: +- `--logs / -l` with `type` not specified (defaults to `bool`) +- `--env / -e` with `type: stringArray` + +```yaml title=devspace.yaml +version: v2beta1 +pipelines: + dev: + flags: + - name: logs + short: l + - name: env + short: e + type: stringArray + run: |- + extraEnv=$(get_flag "env") # Retrieve the value of the `env` flag and store it in a variable + echo ${extraEnv[1]} + + TERMINAL_ENABLED=true + if [ $(get_flag "logs") == "true" ]; then # Test if --logs/-l flag is used or not + TERMINAL_ENABLED=false # Disable terminal, so DevSpace falls back to log streaming + fi + + start_dev app --set terminal.enabled=$TERMINAL_ENABLED +``` + + +## Config Reference + + diff --git a/docs/pages/configuration/pullSecrets/README.mdx b/docs/pages/configuration/pullSecrets/README.mdx new file mode 100644 index 0000000000..5b30df6d46 --- /dev/null +++ b/docs/pages/configuration/pullSecrets/README.mdx @@ -0,0 +1,63 @@ +--- +title: Pull Secrets +sidebar_label: pullSecrets +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ConfigPartialPullSecrets from '../_partials/v2beta1/pullSecrets.mdx' + +DevSpace allows you to configure additional [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) that should be created in the target namespace. For each configured pull secret in the `devspace.yaml`, DevSpace will create a secret in the target namespace and add the secret to the `imagePullSecrets` field of the service account. + +For [images](../images/README.mdx), DevSpace will also automatically create a pull secret, if authentication data can be found in the local docker store and creation is [enabled](../images/README.mdx#8-create-pull-secrets) via `createPullSecret`. + +Image Pull Secrets are defined in the `pullSecrets` section of the `devspace.yaml`. + + + + +```yaml +# If you don't want to specify the password and username directly in the config +# you can use variables, .env file or save the credentials in the local docker store +pullSecrets: +- registry: my-registry.com:5000 + username: ${REGISTRY_USER} + password: ${REGISTRY_PASSWORD} +``` + + + + +```yaml +# If you leave out the username & password DevSpace will try +# to get these from the local docker store. Make sure you +# are logged into the registry with `docker login my-registry.com:5000` +pullSecrets: +- registry: my-registry.com:5000 +``` + + + + +```yaml +pullSecrets: +- registry: my-registry.com:5000 + secret: my-pull-secret-name + serviceAccounts: + - default + - my-other-service-account +``` + + + + +## Configuration + + diff --git a/docs/pages/configuration/reference.mdx b/docs/pages/configuration/reference.mdx index 8e74c98091..19aa90d16e 100644 --- a/docs/pages/configuration/reference.mdx +++ b/docs/pages/configuration/reference.mdx @@ -3,423 +3,10 @@ title: Config Reference sidebar_label: Config Reference --- -import FragmentConfigImages from '../fragments/config-images.mdx'; -import FragmentConfigDeployments from '../fragments/config-deployments.mdx'; -import FragmentConfigDev from '../fragments/config-dev.mdx'; -import FragmentConfigDependencies from '../fragments/config-dependencies.mdx'; -import FragmentConfigVars from '../fragments/config-vars.mdx'; -import FragmentConfigProfiles from '../fragments/config-profiles.mdx'; -import FragmentConfigCommands from '../fragments/config-commands.mdx'; -import FragmentConfigHooks from '../fragments/config-hooks.mdx'; -import WarningBuildToolPriority from '../fragments/warning-build-tool-priority.mdx'; +import PartialConfig from "./_partials/v2beta1/reference.mdx" -## `version` -```yaml -version: v1beta11 # string | Version of the config -``` +Every project you want to use with DevSpace needs a `devspace.yaml` which defines how to build, deploy, debug and develop this project. -## `images` +The `devspace.yaml` file supports the following fields: - - -[Learn more about how to configure image building.](../configuration/images/basics.mdx) - -### `images[*].build` -```yaml -build: # struct | Build configuration for an image - docker: ... # struct | Build image with docker and set options for docker - kaniko: ... # struct | Build image with kaniko and set options for kaniko - custom: ... # struct | Build image using a custom build script - disabled: false # bool | Disable image building (Default: false) -``` -:::info -Setting the key `docker`, `kaniko`, `custom` or `disabled` will define the build tool for this image. - -- If neither `docker`, `kaniko`, `custom` nor `disabled` is specified, `docker` will be used by default. -- By default, `docker` will use `kaniko` as fallback when DevSpace is unable to reach the Docker host. -::: - - - -### `images[*].build.docker` -```yaml -docker: # struct | Options for building images with Docker - preferMinikube: true # bool | If available, use minikube's in-built docker daemon instaed of local docker daemon (default: true) - skipPush: false # bool | Skip pushing image to registry, enabled automatically for minikube and docker-desktop (Default: false) - disableFallback: false # bool | Disable using kaniko as fallback when Docker is not installed (Default: false) - useCli: false # bool | If true will use the docker cli for building - args: # []string | Additional arguments that should be used for executing the docker cli - - --any-flag - options: ... # struct | Set general build options -``` - -### `images[*].build.buildKit` -```yaml -buildKit: - skipPush: false # bool | If this is true, DevSpace will not push any images - preferMinikube: true # bool | If false, will not try to use the minikube docker daemon to build the image - args: [] # string[] | Additional arguments to call docker buildx build with - command: [] # string[] | Override the base command to create a builder and build images. Defaults to ["docker", "buildx"] - options: ... # struct | Set build general build options - inCluster: # struct | If specified, DevSpace will use BuildKit to build the image within the Kubernetes cluster - name: "" # string | Name is the name of the builder to use. If omitted, DevSpace will try to create - # | or reuse a builder in the form devspace-$NAMESPACE - namespace: "" # string | Namespace where to create the builder deployment in. Defaults to the current active namespace. - rootless: false # bool | If enabled will create a rootless BuildKit deployment. - image: "" # string | The docker image to use for the BuildKit deployment - nodeSelector: "" # string | The node selector to use for the BuildKit deployment - createArgs: [] # string[] | Additional args to create the builder with. - noCreate: false # bool | By default, DevSpace will try to create a new builder if it cannot be found. - # | If this is true, DevSpace will fail if the specified builder cannot be found. - noRecreate: false # bool | By default, DevSpace will try to recreate the builder if the builder configuration - # | in the devspace.yaml differs from the actual builder configuration. If this is - # | true, DevSpace will not try to do that. - noLoad: false # bool | If enabled, DevSpace will not try to load the built image into the local docker - # | daemon if skip push is defined -``` - -### `images[*].build.kaniko` -```yaml -kaniko: # struct | Options for building images with kaniko - cache: true # bool | Use caching for kaniko build process - annotations: {} # map | Extra annotations for the kaniko build pod - labels: {} # map | Extra labels for the kaniko build pod - snapshotMode: "time" # string | Type of snapshotMode for kaniko build process (compresses layers) - insecure: false # bool | Allow working with an insecure registry by not validating the SSL certificate (Default: false) - command: [] # string[] | Array of strings for the kaniko pod - args: [] # string[] | Array of additional args for kaniko build command - image: "" # string | Allows to change the kaniko image or kaniko version / image tag. - initImage: "" # string | Allows to change the init container kaniko image (defaults to alpine) - serviceAccount: "" # string | The service account to use for this build pod - nodeSelector: {} # map | A key value map of node labels to select a node for the build pod - tolerations: [] # struct[] | Array of node tolerations that should be used to schedule the build pod - pullSecret: "" # string | Mount this Kubernetes secret instead of creating one to authenticate to the registry (default: "") - additionalMounts: [] # struct[] | Array of mount configurations for Kubernetes Secrets and ConfigMaps that should be mounted into the kaniko build container - namespace: "" # string | Kubernetes namespace to run kaniko build pod in (Default: "" = deployment namespace) - options: ... # struct | Set build general build options - skipPullSecretMount: true # bool | If true devspace will not mount and create any image pull secret for the kaniko pod - env: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.value field) - my-string-env: value - envFrom: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.valueFrom field) - my-env-from-secret: - secretKeyRef: ... - my-env-from-configmap: - configMapKeyRef: ... - initEnv: {} # map | Key value pairs of enviroment variables that should be added to the kaniko init pod -``` - -### `images[*].build.custom` -```yaml -custom: # struct | Options for building images with a custom build script - command: "./scripts/builder" # string | Command to be executed for building (e.g. path to build script or executable) - commands: [] # struct[] | An array of objects with keys command and os to exchange the command for a specific os - args: [] # string[] | Array of arguments for the custom build command - appendArgs: [] # string[] | Args are prepended to the command (before the image tags) and appendArgs are appended - imageFlag: string # string | Name of the flag that DevSpace uses to pass the image name + tag to the build script - imageTagOnly: false # bool | If true devspace will only use the image tag as argument - skipImageArg: false # bool | If true devspace will skip adding image:tag as argument completely - onChange: [] # string[] | Array of paths (glob format) to check for file changes to see if image needs to be rebuilt -``` - -### `images[*].build.disabled` -```yaml -build: # struct | Build configuration for an image - disabled: true # bool | Disable image building (Default: false) -``` - -### `images[*].build.*.options` -```yaml -options: # struct | Options for building images - target: "" # string | Target used for multi-stage builds - network: "" # string | Network mode used for building the image - buildArgs: {} # map[string]string | Key-value map specifying build arguments that will be passed to the build tool (e.g. docker) -``` - - -## `deployments` - - - -:::info -Using the `helm` or `kubectl` key will define the type of deployment and the deployment tool to be used. -::: - -:::warning -You **cannot** use `helm` and `kubectl` in combination. -::: - -### `deployments[*].helm` -```yaml -helm: # struct | Options for deploying with Helm - chart: ... # struct | Relative path - componentChart: false # bool | Use the DevSpace component chart instead of a custom `chart` = deployment is a component (Default: false) - values: {} # struct | Any object with Helm values to override values.yaml during deployment - valuesFiles: # string[] | Array of paths to values files - - ./chart/my-values.yaml # string | Path to a file to override values.yaml with - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - wait: false # bool | Wait for pods to start after deployment (Default: false) - displayOutput: false # bool | Display output from helm install/upgrade (Default: false) - timeout: 180 # int | Timeout to wait for pods to start after deployment (Default: 180) - force: false # bool | Force deleting and re-creating Kubernetes resources during deployment (Default: false) - atomic: false # bool | Rollback deployment if it fails (Default: false) - cleanupOnFail: false # bool | Delete resources if rollback fails (Default: false) - recreate: false # bool | Recreate pods for applicable resources, e.g. deployments (Default: false) - disableHooks: false # bool | Disable hooks (Default: false) - v2: false # bool | Use legacy Helm v2 (Default: false) - tillerNamespace: "" # string | Kubernetes namespace to run Tiller in when using Helm v2 (Default: "" = same a deployment namespace) - deleteArgs: [] # []string | Extra args for the `helm delete` command during devspace purge - templateArgs: [] # []string | Extra args for the `helm template` command during devspace render - upgradeArgs: [] # []string | Extra args for the `helm upgrade` command during devspace deploy/dev - fetchArgs: [] # []string | Extra args for the `helm fetch` command during devspace render -``` -[Learn more about configuring deployments with Helm.](../configuration/deployments/helm-charts.mdx) - -### `deployments[*].helm.componentChart` -```yaml -helm: - componentChart: true # bool | Use Component chart - values: # struct | Options for deploying a component = Deployment/StatefulSet - initContainers: ... # struct[] | Init Containers of this Deployment/StatefulSet - containers: ... # struct[] | Containers of this Deployment/StatefulSet - labels: {} # map[string]string | Map of Kubernetes labels for labeling the pods of this component - annotations: {} # map[string]string | Map of Kubernetes annotations for annotating the pods of this component - volumes: ... # struct | Component volumes - service: ... # struct | Component service - serviceName: my-service # string | Service name for headless service (for StatefulSets) - ingress: ... # struct | Component ingress - replicas: 1 # int | Number of replicas (Default: 1) - autoScaling: ... # struct | AutoScaling configuration - rollingUpdate: ... # struct | RollingUpdate configuration - pullSecrets: ... # string[] | Array of PullSecret names - podManagementPolicy: OrderedReady # enum | "OrderedReady" or "Parallel" (for StatefulSets) - options: ... # struct | Options for deploying this component with helm -``` - -[Learn more about configuring the component chart.](https://devspace.sh/component-chart/docs/introduction) - -### `deployments[*].helm.chart` - -#### `deployments[*].helm.chart.name` - -```yaml -chart: # struct | Chart to deploy - name: my-chart # string | Path to local chart on filesystem OR chart name for remote chart in helm chart repository - version: v1.0.1 # string | Chart version - repo: "https://my-repo.tld/" # string | Helm chart repository - username: "my-username" # string | Username for Helm chart repository - password: "my-password" # string | Password for Helm chart repository -``` - -#### `deployments[*].helm.chart.git` - -```yaml -chart: - git: - url: https://github.com/chart-repo # string | HTTP(S) URL of the git repository (recommended method for referencing dependencies, must have the format of the git remote repo as usually checked out via git clone) - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - subPath: subpath/chartdir # string | Path within the git repo where devspace.yaml can be found -``` - -### `deployments[*].kubectl` -```yaml -kubectl: # struct | Options for deploying with "kubectl apply" - manifests: [] # string[] | Array containing glob patterns for the Kubernetes manifests to deploy using "kubectl apply" (e.g. kube or manifests/service.yaml) - kustomize: false # bool | Use kustomize when deploying manifests via "kubectl apply" (Default: false) - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - applyArgs: [] # string[] | Array of args for the "kubectl apply" command during deployment - createArgs: [] # string[] | Array of args for the "kubectl create" command during deployment - kustomizeArgs: [] # string[] | Array of args for the "kustomize build" command during deployment - deleteArgs: [] # string[] | Array of args for the "kubectl delete" command when purging deployments - cmdPath: "" # string | Path to the kubectl binary (Default: "" = detect automatically) -``` -[Learn more about configuring deployments with kubectl.](../configuration/deployments/kubernetes-manifests.mdx) - - -## `dev` - - - -[Learn more about configuring development mode.](../configuration/development/basics.mdx) - -### `dev.ports` -```yaml -ports: # struct[] | Array of port forwarding settings for selected pods -- name: somePort # string | Optional string stating the name of this port-forwarding configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - namespace: "" # string | Kubernetes namespace to select pods in - containerName: "" # string | Name of the container to select (only applies if reverseForward is used) - arch: "amd64" # string | Target architecture of the selected container (only applies if reverseForward is used) - forward: # struct[] | Array of ports to be forwarded - - port: 8080 # int | Forward this port on your local computer - remotePort: 3000 # int | Forward traffic to this port exposed by the pod/container selected - bindAddress: "" # string | Address used for binding / use 0.0.0.0 to bind on all interfaces (Default: "localhost" = 127.0.0.1) - reverseForward: # struct[] | Array of ports to reverse forward - - port: 3000 # int | Local port that should be accessible remotely - remotePort: 8080 # int | Port in the container where the local port can be accessed -``` -[Learn more about configuring port forwarding.](../configuration/development/port-forwarding.mdx) - -### `dev.open` -```yaml -open: # struct[] | Array of auto-open settings -- url: "https://localhost:3000/" # string | URL to open after application has started -``` -[Learn more about configuring auto-opening links.](../configuration/development/open-links.mdx) - -### `dev.sync` -```yaml -sync: # struct[] | Array of file sync settings for selected pods -- name: someSync # string | Optional string stating the name of this sync configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - localSubPath: ./ # string | Relative path to a local folder that should be synchronized (Default: "./" = entire project) - disableDownload: false # bool | If true will disable downloading files - disableUpload: false # bool | If true will disable uploading files - containerPath: /app # string | Path in the container that should be synchronized with localSubPath (Default is working directory of container (".")) - excludePaths: [] # string[] | Paths to exclude files/folders from sync in .gitignore syntax - excludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from sync - downloadExcludePaths: [] # string[] | Paths to exclude files/folders from download in .gitignore syntax - downloadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from download - uploadExcludePaths: [] # string[] | Paths to exclude files/folders from upload in .gitignore syntax - uploadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from upload - initialSync: mirrorLocal # enum | Specifies the initialSync algorithm: mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll (Default: mirrorLocal) - initialSyncCompareBy: mtime # enum | Specifies how the initialSync determines if a file has changed: mtime / size - waitInitialSync: false # bool | Wait until initial sync is completed before continuing (Default: false) - throttleChangeDetection: 100 # int | If greater zero, describes the amount of milliseconds to wait after each checked 100 files on the remote site - arch: "amd64" # string | Target architecture of the selected container - polling: false # bool | If polling should be used to detect file changes in the container - bandwidthLimits: # struct | Bandwidth limits for the synchronization algorithm - download: 0 # int64 | Max file download speed in kilobytes / second (e.g. 100 means 100 KB/s) - upload: 0 # int64 | Max file upload speed in kilobytes / second (e.g. 100 means 100 KB/s) - onUpload: # struct | After a file/folder has been uploaded to the container... - restartContainer: true # bool | Restart container after uploading files (requires images.*.injectRestartHelper: true) - exec: - - name: "my-exec-name" # string | Optional string stating the name of this exec configuration - command: "touch abc.txt" # string | Command that should be executed after DevSpace made changes - args: [] # string[] | Optional args that will force DevSpace to not execute the command in a shell - failOnError: false # bool | If true, DevSpace will restart the sync if the command fails (default: false) - local: false # bool | If true, DevSpace will run the command locally instead of in the container (default: false) - onChange: ["package.json"] # string[] | Optional array of file patterns that will trigger this command -``` -[Learn more about configuring the file synchronization.](../configuration/development/file-synchronization.mdx) - -### `dev.logs` -```yaml -logs: # struct | Options for multi-container log streaming in development mode - disabled: false # bool | Disable log streaming in development mode (Default: false) - showLast: 200 # int | Number of last log lines to show before starting stream (Default: 50) - sync: true # bool | If the sync log should be merged with container and pod logs - selectors: # struct[] | An array of label or image selectors to select pods to stream logs from - - labelSelector: - other: label - namespace: optional - containerName: optional - - imageSelector: nginx - namespace: optional -``` -[Learn more about configuring multi-container log streaming.](../configuration/development/log-streaming.mdx) - -### `dev.autoReload` -```yaml -autoReload: # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - paths: [] # string[] | Array containing glob patterns of files that are watched for auto-reloading (i.e. reload when a file matching any of the patterns changes) - deployments: [] # string[] | Array containing names of deployments to watch for auto-reloading (i.e. reload when kubectl manifests or files within the Helm chart change) - images: [] # string[] | Array containing names of images to watch for auto-reloading (i.e. reload when the Dockerfile changes) -``` - -### `dev.terminal` -```yaml -terminal: # struct | Options for terminal mode - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - command: [] # string[] | Array defining the shell command to start the terminal with (Default: ["sh", "-c", "command -v bash >/dev/null 2>&1 && exec bash || exec sh"]) - workDir: "" # string | The working directory where to execute the command or open the shell -``` - -[Learn more about terminal config options.](../configuration/development/terminal.mdx) - -### `dev.replacePods` -```yaml -replacePods: # struct[] | Which pods should be replaced -- imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - replaceImage: "" # string | The image that should be used for the pod - persistPaths: # struct[] | Paths that should get persisted in the replaced pod - - path: /app # string | The container path that should get persisted - volumePath: my-volume/app # string | Optional path on the persistent volume to mount - containerName: "" # string | Optional container name in the replaced pod to persist the path - readOnly: false # bool | If the path should get mounted read only - skipPopulate: false # bool | If true, devspace will not try to pre-populate the path - initContainer: # struct | Additional options for the pre-populating init container - resources: {} # struct | Resources of the pre-populating init container - persistenceOptions: # struct | Additional options for persistPaths - name: "" # string | Optional name of the pvc to reuse / create - size: "10Gi" # string | Size of the pvc to create - readOnly: false # bool | If all defined persistPaths should get mounted read only - storageClassName: "" # string | StorageClassName to use for the persistent volume claim - accessModes: ["ReadWriteOnce"] # string[] | Access modes to use for the persistent volume claim - patches: # struct[] | Other patches that should be applied on the pod - - op: add # enum | Patch operation (replace, add, remove) - path: "spec.containers[0].command" # string | Jsonpath or xpath to config option that should be patched - value: ["sleep"] # arbitrary | Value to use for patch operation -``` - -[Learn more about replacing pods.](../configuration/development/replace-pods.mdx) - -## `dependencies` - - - -[Learn more about configuring dependencies.](./dependencies/basics.mdx) - -:::warning -You **cannot** use `source.git` and `source.path` in combination. You **must** exactly use one of the two. -::: - -## `hooks` - - - - -## `commands` - - - -[Learn more about configuring custom commands.](../configuration/commands/basics.mdx) - - -## `vars` - - - -[Learn more about configuring config variables.](../configuration/variables/basics.mdx) - - -## `profiles` - - - -[Learn more about configuring profiles and patches.](../configuration/profiles/basics.mdx) - -## `pullSecrets` - -```yaml -pullSecrets: # struct[] | Which pull secrets should get created -- registry: my-registry.com:5000 # string | The name of the registry this secret should get created for - disabled: false # bool | If enabled will not create the pull secret for this registry - username: my-user # string | Optional and expects a string with the username to login into the registry - password: my-password # string | Optional and expects a string with the password to login into the registry - email: my-email@domain.com # string | Optional and expects a string with the email to login into the registry. - secret: "" # string | Optional and expects a string how the secret should be named. - serviceAccounts: [] # string[] | Optional and expects an array of strings to which the pull secret should be added -``` + diff --git a/docs/pages/configuration/require/README.mdx b/docs/pages/configuration/require/README.mdx new file mode 100644 index 0000000000..ed3dcf9479 --- /dev/null +++ b/docs/pages/configuration/require/README.mdx @@ -0,0 +1,70 @@ +--- +title: Required Versions +sidebar_label: require +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ConfigPartialRequire from '../_partials/v2beta1/require.mdx' + +DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of: + +- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version +- **Installed Plugins** (`require.plugins`): You can define required plugins and their version +- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range + +Requirements are defined in the `require` section of the `devspace.yaml`. + + + + +```yaml +# You can either specify an exact version or a version range or even +# multiple versions. +require: + devspace: '>= 4.0, < 6.0' +``` + + + + +```yaml +# Each plugin that is defined under plugins needs to be installed +# in the required version. +require: + plugins: + - name: loft + version: ">= 1.11.0" +``` + + + + +```yaml +require: + # By default devspace will try to call the command 'NAME version' + # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version + commands: + - name: helm + version: '> 3.0.0' + - name: my-custom-command + # Override the default args + versionArgs: ["--version"] + # Override the default reg ex + versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" + version: '4.6.7' +``` + + + + +## Configuration + + diff --git a/docs/pages/configuration/variables.mdx b/docs/pages/configuration/variables.mdx new file mode 100644 index 0000000000..e1d9378d96 --- /dev/null +++ b/docs/pages/configuration/variables.mdx @@ -0,0 +1,224 @@ +--- +title: Config Variables +sidebar_label: ${VARIABLES} +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ConfigPartial from './_partials/v2beta1/vars.mdx' + +DevSpace allows you to make your configuration dynamic by using variables. + +While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. If you do not explicitly define a variable, DevSpace will try to load it from the user's local environment variables. + + +## Built-In Variables +DevSpace provides a set of built-in variables: +- `${DEVSPACE_NAMESPACE}` contains the current namespace +- `${DEVSPACE_CONTEXT}` contains the name of the current kube-context (e.g. `minikube`) +- `${DEVSPACE_NAME}` contains the value of the `name` field of the current `devspace.yaml` file +- `${DEVSPACE_GIT_BRANCH}` contains the name of the local git branch that the user is currently on +- `${DEVSPACE_GIT_COMMIT}` contains the hash of the latest git commit in the current repository +- `${DEVSPACE_TIMESTAMP}` contains the current UNIX timestamp +- `${DEVSPACE_USER_HOME}` contains the path to the current user's home directory +- `${DEVSPACE_TMPDIR}` contains a path to a temporary folder that DevSpace cleans up after the `devspace` command terminates +- `${DEVSPACE_PROFILE}` contains the profile that is currently active in DevSpace (e.g. the string provided via `-p / --profile` in a command such as `devspace dev -p my-profile`) +- `${DEVSPACE_VERSION}` contains the version of DevSpace that is currently running + + +## Custom Variables +DevSpace lets you define custom varables inside `devspace.yaml` within the `vars` section. + +:::tip Mix & Match Variable Types +You can define several types of variables in the same config file, e.g. one `devspace.yaml` can contain static variables, env variables and more. +::: + +### With Static Value +To add variables with static value, just provide the value for the respective variable: +```yaml title=devspace.yaml +vars: + MY_VAR: "some value" + ANOTHER_VAR: "some value" +``` + +:::note On-Demand Overwrite +If you want to overwrite a static variable, you can use the `--var MY_VAR=new-value` flag, e.g. `devspace dev --var MY_VAR=value`. +::: + + +### From Env Vars +To load variables from the user's environment variables, you can just use them in the config as `${VAR_NAME}` without the need to explictly define them. + + +### From Command +You can load the values from commands from custom commands via [config expressions](./expressions.mdx) or using the long form by specifying the `command` field: +```yaml title=devspace.yaml +vars: + VAR_FROM_COMMAND: $(git rev-parse HEAD) + ANOTHER_VAR_FROMCOMMAND: + command: git + args: ["rev-parse", "HEAD"] +``` + + +### From User Input (Question) +DevSpace can also ask the user to provide a value for a variable and you can provide a custom question and configure other input attributes for the question: + + + + +```yaml {3,5-7} +images: + database: + image: "mysql:${MYSQL_VERSION}" +vars: + MYSQL_VERSION: + question: Which mysql version do you want to use? + default: "5.7" +``` + + + + +```yaml {3,5-10} +images: + database: + image: "mysql:${MYSQL_VERSION}" +vars: + MYSQL_VERSION: + question: Which mysql version do you want to use? + default: "5.7" + options: + - "5.5" + - "5.6" + - "5.7" +``` + + + + +```yaml {3,5-7} +images: + database: + image: "mysql:${MYSQL_VERSION}" +vars: + MYSQL_VERSION: + question: Which mysql version do you want to use? + password: true +``` + + + + +```yaml {3,5-7} +images: + database: + image: "mysql:${MYSQL_VERSION}" +vars: + MYSQL_VERSION: + question: Which mysql version do you want to use? + noCache: true +``` + + + + + +### From `.env` File +DevSpace also reads environment variables from the `.env` file inside your project. The syntax of the `.env` file is the [same as for docker-compose](https://docs.docker.com/compose/env-file/): + +- Each line should have the format `VAR_NAME=VAR_VALUE`. +- **There is *no* special handling of quotation marks. This means that they are part of the `VAR_VALUE`.** +- Lines beginning with # are processed as comments and ignored. + +:::info Precedence +- Environment variables defined in your terminal session (including system variables) always take precendence over the variables in your `.env` file. +- Variables defined in your `.env` file take precende over the default values defined for config variables (configured in the `vars` section of `devspace.yaml`). +::: + + +## `$DEVSPACE_FLAGS` For Default Flags +A common use case for the `.env` file is to set default flags for the `devspace` commands such as `devspace dev` or `devspace deploy`. You can define the following environment variables to set default flags: +- `DEVSPACE_FLAGS` for global flags that should be added to each commands (e.g. `DEVSPACE_FLAGS=-s -p dev`) +- `DEVSPACE_[COMMAND]_FLAGS` to add default flags for single commands (e.g. `DEVSPACE_DEV_FLAGS=-s --verbose-dependencies`) + +```bash title="File: .env" +DEVSPACE_FLAGS=-s -p dev +DEVSPACE_DEV_FLAGS=-s --verbose-dependencies +``` + +:::note Overwrite Default Flags +Specifying flags for a command will overwrite the default flags, e.g. if `DEVSPACE_FLAGS=-s -p dev` is configured and you run `devspace dev -p production`, the following command would be executed: `devspace dev -s -p production` +::: + + + +## Useful Commands + +### `devspace list vars` +To get a list of all variables defined in the `devspace.yaml`, you can run this command: +```bash +devspace list vars +``` + +### `devspace reset vars` +Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run: +```bash +devspace reset vars +``` + +DevSpace will fill the variables cache again, once you run the next build or deployment command. + +### `devspace print` +The following command prints the config after all variables have been replaced: +```bash +devspace print +``` +You can optionally add the `-p / --profiles` flag to this command. + +### `export VAR_NAME=value` +The value for a config variable can also be set by defining an environment variable named `[VAR_NAME]`. Setting the value of a config variable with name `${IMAGE_NAME}` would be possible by setting an environment value `IMAGE_NAME`. + + + + + +```powershell +$env:IMAGE_NAME = "some-value" +``` + + + + +```bash +export IMAGE_NAME="some-value" +``` + + + + +```bash +export IMAGE_NAME="some-value" +``` + + + + + +## Config Reference + + diff --git a/docs/pages/getting-started/cleanup.mdx b/docs/pages/getting-started/cleanup.mdx index 8b7f52208e..6171e8cbb5 100644 --- a/docs/pages/getting-started/cleanup.mdx +++ b/docs/pages/getting-started/cleanup.mdx @@ -1,9 +1,36 @@ --- title: Cleanup -sidebar_label: 5. Cleanup +sidebar_label: 4. Cleanup --- +DevSpace provides several commands that help you clean up things locally and in your Kubernetes cluster. + + +## Reset Dev Container +The idea behind the dev container in DevSpace is that DevSpace deploys your application using your prod/stable Kubernetes manifests or Helm charts, etc. and then, DevSpace selects one of your containers, changes this container (e.g. swap out the prod/stable image with a prebuilt dev image), and then connects to this dev container using file sync, port forwarding, terminal session, etc. + +To reverse the changes that DevSpace makes when the `start_dev` command is called within a pipeline, you can run: +```bash +devspace reset pods +``` + + +## Purge Project From Cluster To tell DevSpace to remove the deployments from your cluster again, run: ```bash devspace purge ``` + + +## Reset Variables +If you are using any variables in DevSpace and you provided values for these variables, you can reset them using: +```bash +devspace reset vars +``` + + +## Cleanup Images +If you are building images using DevSpace (e.g. via `devspace build`) and your local Docker daemon now has 100s of images with different tags, you can clean them up via: +```bash +devspace cleanup images +``` diff --git a/docs/pages/getting-started/deployment.mdx b/docs/pages/getting-started/deployment.mdx deleted file mode 100644 index 4995196d3c..0000000000 --- a/docs/pages/getting-started/deployment.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Deployment ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; - - -Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. - -
- -
DevSpace CLI - Deployment
-
- - -## Kube-Context & Namespace -For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. - - - - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -p production -``` - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -Running `devspace deploy -p production` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Understand Profiles -As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. - -Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). - -By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: -```yaml -profiles: -- name: production - patches: - - op: remove - path: images.app.build.disabled -``` - -You can print the config after a profile has been applied to see what the profile actually changes: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: -```bash -devspace dev -p start-debugger -``` diff --git a/docs/pages/getting-started/development.mdx b/docs/pages/getting-started/development.mdx index a44cbdc581..fd51784ddf 100644 --- a/docs/pages/getting-started/development.mdx +++ b/docs/pages/getting-started/development.mdx @@ -3,44 +3,53 @@ title: Development with DevSpace sidebar_label: 3. Development --- -import KubeContextFragment from '../fragments/kube-context.mdx'; -import StartAppFragment from '../fragments/start-app.mdx'; -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; +import KubeContextFragment from '../_partials/kube-context.mdx'; +import StartAppFragment from '../_partials/start-app.mdx'; -DevSpace allows you to develop applications directly inside a Kubernetes cluster. +DevSpace allows you to develop applications directly inside a Kubernetes cluster with a very fast hot reloading workflow. -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. -
- -
DevSpace - Development Mode
-
- - -## Kube-Context & Namespace -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. +## Choose Cluster & Namespace +Before you can start the development mode in DevSpace, you need to make sure DevSpace uses the right cluster and namespace: +```bash +devspace use context # to select the right Kubernetes cluster +devspace use namespace my-namespace # will be automatically created during deployment +``` - +:::tip Switch Back & Forth +You can use the `devspace use context` and `devspace use namespace` commands whenever needed. One of the design goals of DevSpace is to allow you to seamlessly switch between clusters (even between localhost and remote clusters) and namespaces as needed. +::: -## Start Development Mode -Run the following command to start the development mode: +## Start Dev Container +Run the following command to deploy the project and start your dev container: ```bash devspace dev ``` +Running `devspace dev` will execute the pipeline named `dev` that is defined in your `devspace.yaml`: +```bash title=devspace.yaml +# This is a list of `pipelines` that DevSpace can execute (you can define your own) +pipelines: + # This is the pipeline for the main command: `devspace dev` (or `devspace run-pipeline dev`) + dev: + run: |- + run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") + create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" + start_dev app # 3. Start dev mode "app" (see "dev" section) +``` + +The pipeline is written in bash syntax but it is an emulated bash, i.e. it runs the same way on any machine, no matter if Linux, Mac, or Windows. You can edit the pipeline script in `devspace.yaml` as needed. -Running `devspace dev` will do the following: +The pipeline you see above, runs 3 commands: +1. `run_dependencies --all` deploys all `dependencies` defined in `devspace.yaml` (i.e. other microservices that may be needed and potentially live in other git repositories with separate `devspace.yaml` files). +2. `create_deployments --all` deploys everything defined in the `deployments` section of `devspace.yaml` (instead of `--all`, you could also pass the names of some deployments to this command instead, e.g. `create_deployments app database`) +3. `start_dev app` starts the development mode named `app` which is defined in the `dev` section of `devspace.yaml` -1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) -2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) -3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) -4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) -5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container -Once the terminal session starts, run the command to start your application: + +## Start Application +Once the terminal to your dev container opens, run the command to start your application: @@ -48,43 +57,21 @@ Once the terminal session starts, run the command to start your application:
-## Workflows +## Start Development ### 1. File Sync -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. +While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE locally but still be able to run and debug your application directly inside the dev container that is running inside Kubernetes. **Try it and just edit a file!** +To change which files should be synchronized, you can edit the `sync` configuration within the `dev` section of your `devspace.yaml` file. -### 2. DevSpace UI -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) -
- -
DevSpace - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: +### 2. Port Forwarding +DevSpace forwards ports from localhost to your dev container and can also reverse-forward ports from the dev container to your local machine. This is useful to access your application on localhost, e.g. access a UI or API in the browser, or to attach your IDE to a remote debugger running inside your dev container. +To change which ports should be forwarded, you can edit the `ports` configuration within the `dev` section of your `devspace.yaml` file. -## Notes - +### 3. DevSpace UI +When running `devspace dev`, DevSpace starts a client-only, localhost UI. By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` output, e.g. [http://localhost:8090](http://localhost:8090) diff --git a/docs/pages/getting-started/initialize-project.mdx b/docs/pages/getting-started/initialize-project.mdx index 8d1cedbb1b..251b5b85c3 100644 --- a/docs/pages/getting-started/initialize-project.mdx +++ b/docs/pages/getting-started/initialize-project.mdx @@ -3,7 +3,7 @@ title: Initialize a Project sidebar_label: 2. Initialize Project --- -import ChooseProjectFragment from '../fragments/choose-project.mdx'; +import ChooseProjectFragment from '../_partials/choose-project.mdx'; ## Choose a Project You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: @@ -19,58 +19,124 @@ Run this command in your project directory to create a `devspace.yaml` config fi devspace init ``` -```bash - - ____ ____ - | _ \ _____ __/ ___| _ __ __ _ ___ ___ - | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \ - | |_| | __/\ V / ___) | |_) | (_| | (_| __/ - |____/ \___| \_/ |____/| .__/ \__,_|\___\___| - |_| - - -? How do you want to deploy this project? [Use arrows to move, type to filter] -> helm: Use Component Helm Chart [QUICK START] (https://devspace.sh/component-chart/docs) - helm: Use my own Helm chart (e.g. local via ./chart/ or any remote chart) - kubectl: Use existing Kubernetes manifests (e.g. ./kube/deployment.yaml) - kustomize: Use an existing Kustomization (e.g. ./kube/kustomization/) ``` -DevSpace will ask you a couple of questions about this project and then generate a `devspace.yaml` for you to start with. If you are using the quickstart projects, choose `Component Helm Chart` for the first question. - -After running `devspace init`, you will see a `devspace.yaml` file in your project which should look like this: -```yaml -version: v1beta10 + %########% + %###########% ____ _____ + %#########% | _ \ ___ __ __ / ___/ ____ ____ ____ ___ + %#########% | | | | / _ \\ \ / / \___ \ | _ \ / _ | / __// _ \ + %#############% | |_| |( __/ \ V / ____) )| |_) )( (_| |( (__( __/ + %#############% |____/ \___| \_/ \____/ | __/ \__,_| \___\\___| + %###############% |_| + %###########% + + +info Detecting programming language... + +? Select the programming language of this project [Use arrows to move, type to filter] + c# (dotnet) +> go + java-gradle + java-maven + javascript + php + python +``` -# `images` specifies all images that may need to be built for this project +DevSpace will ask you a couple of questions about this project, e.g. which programming language the application is written in, how to deploy the project, etc. + +After running `devspace init`, you will see 3 changes in your project: +1. New file `devspace.yaml` (tells DevSpace how this project should be build, deployed, and developed) +2. New file `devspace_start.yaml` (is used to show information to the user when the terminal for the dev container opens) +3. Added `.devspace/` folder to `.gitignore` (the `.devspace/` folder is used by DevSpace to store some information locally when you are working with this project, e.g. caching to speed up things) + +The `devspace.yaml` should look similar to this one: +```yaml title=devspace.yaml +version: v2beta1 +name: devspace-quickstart-golang + +# This is a list of `pipelines` that DevSpace can execute (you can define your own) +pipelines: + # This is the pipeline for the main command: `devspace dev` (or `devspace run-pipeline dev`) + dev: + run: |- + run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") + create_deployments --all # 2. Deploy Helm charts and manifests specfied as "deployments" + start_dev app # 3. Start dev mode "app" (see "dev" section) + # You can run this pipeline via `devspace deploy` (or `devspace run-pipeline deploy`) + deploy: + run: |- + run_dependencies --all # 1. Deploy any projects this project needs (see "dependencies") + build_images --all -t $(git describe --always) # 2. Build, tag (git commit hash) and push all images (see "images") + create_deployments --all # 3. Deploy Helm charts and manifests specfied as "deployments" + +# This is a list of `images` that DevSpace can build for this project +# We recommend to skip image building during development (devspace dev) as much as possible images: - app: # This image is called `app` and this name `app` is referenced multiple times in the config below - image: registry.tld/username/image + app: + image: ghcr.io/loft-sh/devspace/app dockerfile: ./Dockerfile - build: - disabled: true -# `deployments` tells DevSpace how to deploy this project +# This is a list of `deployments` that DevSpace can create for this project deployments: -- name: quickstart-kubectl - # This deployment uses `kubectl` but you can also define `helm` deployments - kubectl: - manifests: - - kube/deployment.yaml -# OR: -- name: quickstart-helm # Name of this deployment - helm: # Deploy using Helm - componentChart: true # Use the Component Helm Chart - values: # Override Values for chart (can also be set using valuesFiles option) - containers: # Defines an array of containers that run in the same pods started by this component - - image: image(app):tag(app) # Image of this container - service: # Expose this component with a Kubernetes service - ports: # Array of container ports to expose through the service - - port: 3000 # Exposes container port 3000 on service port 3000 - -# Settings for development mode (will be explained later) -dev: ... - -# Settings for development mode (will be explained later) -profiles: ... + app: + # This deployment uses `helm` but you can also define `kubectl` deployments or kustomizations + helm: + # We are deploying this project with the Helm chart you provided + chart: + name: component-chart + repo: https://charts.devspace.sh + # Under `values` we can define the values for this Helm chart used during `helm install/upgrade` + # You may also use `valuesFiles` to load values from files, e.g. valuesFiles: ["values.yaml"] + values: + containers: + - image: gentele/app + service: + ports: + - port: 8080 + +# This is a list of `dev` containers that are based on the containers created by your deployments +dev: + app: + # Search for the container that runs this image + imageSelector: ghcr.io/loft-sh/devspace/app + # Replace the container image with this dev-optimized image (allows to skip image building during development) + devImage: ghcr.io/loft-sh/devspace-containers/go:1.18-alpine + # Forward the following ports to be able access your application via localhost + ports: + - port: "2345" + - port: "8080" + # Open the following URLs once they return an HTTP status code other than 502 or 503 + open: + - url: http://localhost:8080 + # Open a terminal and use the following command to start it + terminal: + command: ./devspace_start.sh + # Sync files between the local filesystem and the development container + sync: + - path: ./ + # Inject a lightweight SSH server into the container (so your IDE can connect to the remote dev env) + ssh: + enabled: true + # Make the following commands from my local machine available inside the dev container + proxyCommands: + - command: devspace + - command: kubectl + - command: helm + - command: git + +# Use the `commands` section to define repeatable dev workflows for this project +commands: + migrate-db: + command: |- + echo 'This is a cross-platform, shared command that can be used to codify any kind of dev task.' + echo 'Anyone using this project can invoke it via "devspace run migrate-db"' + +# Define dependencies to other projects with a devspace.yaml +# dependencies: +# api: +# git: https://... # Git-based dependencies +# tag: v1.0.0 +# ui: +# path: ./ui # Path-based dependencies (for monorepos) ``` diff --git a/docs/pages/getting-started/installation.mdx b/docs/pages/getting-started/installation.mdx index 6a04d2ece3..e17dc0a392 100644 --- a/docs/pages/getting-started/installation.mdx +++ b/docs/pages/getting-started/installation.mdx @@ -1,8 +1,8 @@ --- title: Install DevSpace -sidebar_label: 1. Download CLI +sidebar_label: 1. Download DevSpace --- -import InstallFragment from '../fragments/install-cli.mdx'; +import InstallFragment from '../_partials/install-cli.mdx'; diff --git a/docs/pages/getting-started/introduction.mdx b/docs/pages/getting-started/introduction.mdx new file mode 100644 index 0000000000..51a5448364 --- /dev/null +++ b/docs/pages/getting-started/introduction.mdx @@ -0,0 +1,56 @@ +--- +title: What is DevSpace? +sidebar_label: Introduction +--- + +DevSpace is a client-only, open-source developer tool for Kubernetes: +- **Build, test and debug applications directly inside Kubernetes** +- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers +- **Unify deployment workflows** within your team and across dev, staging and production +- **Automate repetitive tasks** for image building and deployment + +## How does it work? +DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. + + + + +## Why DevSpace? +Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. + + +### Declarative Workflows +DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` +- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. +- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) +- **Share your workflows** with your team mates + + +### Made For Teams +DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. +- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git +- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project +- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) + + +### Hot Reloading +Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: +- Simply edit your files with your IDE and see how your application reloads within the running container. +- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes +- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. + + +### Automation +Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: +- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command +- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. + + +### Compatibility +DevSpace is battle tested with many Kubernetes distributions including: +- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind +- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) +- **Self-managed Kubernetes clusters** (e.g. created with Rancher) + +
+ diff --git a/docs/pages/getting-started/next-steps.mdx b/docs/pages/getting-started/next-steps.mdx index b47c788da0..99b5870ce9 100644 --- a/docs/pages/getting-started/next-steps.mdx +++ b/docs/pages/getting-started/next-steps.mdx @@ -1,29 +1,4 @@ --- title: Next Steps -sidebar_label: 6. Next Steps +sidebar_label: 5. Next Steps --- - -## Loft Plugin For Teams -If you plan to use DevSpace with your team, make sure to check out [www.loft.sh](https://loft.sh) and the Loft plugin for DevSpace, which you can install using this command: -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -Loft allows you to efficiently share Kubernetes clusters with a large number of engineers rather than letting everyone set up their own cluster and having to struggle to manage and administrate it on their own. - -Installing the Loft plugin will add commands like these to DevSpace: -```bash -devspace login # to login to Loft via DevSpace -devspace create space my-namespace # for creating namespace on-demand via Loft -devspace create vcluster my-vcluster # for creating virtual Kubernetes clusters via Loft -``` - -## Guides -- [Onboarding Guide](../guides/basics.mdx) to share with the rest of your team -- [Network & Domains Guide](../guides/networking-domains.mdx) -- [CI/CD Integration Guide](../guides/ci-cd-integration.mdx) - -## Best Practices -- [Image Building](../guides/image-building.mdx) -- [Dev vs Staging vs Production](../guides/dev-staging-production.mdx) -- [Remote Debugging](../guides/remote-debugging.mdx) diff --git a/docs/pages/guides/localhost-ui.mdx b/docs/pages/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/pages/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/pages/introduction.mdx b/docs/pages/introduction.mdx deleted file mode 100644 index b474f724bd..0000000000 --- a/docs/pages/introduction.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: What is DevSpace? -sidebar_label: Introduction ---- - -DevSpace is a client-only, open-source developer tool for Kubernetes: -- **Build, test and debug applications directly inside Kubernetes** -- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers -- **Unify deployment workflows** within your team and across dev, staging and production -- **Automate repetitive tasks** for image building and deployment - -## How does it work? -DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - - - - -## Why DevSpace? -Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. - - -### Declarative Workflows -DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` -- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. -- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) -- **Share your workflows** with your team mates - - -### Made For Teams -DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. -- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git -- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project -- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) - - -### Hot Reloading -Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: -- Simply edit your files with your IDE and see how your application reloads within the running container. -- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes -- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. - - -### Automation -Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: -- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command -- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. - - -### Compatibility -DevSpace is battle tested with many Kubernetes distributions including: -- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind -- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) -- **Self-managed Kubernetes clusters** (e.g. created with Rancher) - -
- diff --git a/docs/pages/plugins/README.mdx b/docs/pages/plugins/README.mdx new file mode 100644 index 0000000000..4839258970 --- /dev/null +++ b/docs/pages/plugins/README.mdx @@ -0,0 +1,197 @@ +--- +title: DevSpace Plugins +sidebar_label: Plugins +--- + +The functionality of DevSpace can be extended and changed via plugins. Plugins are managed through DevSpace and are contained in a single binary or shell script. Plugins are able to extend DevSpace in the following ways: +- Add new commands to DevSpace (e.g. `devspace login` or `devspace list users`) +- Add new [predefined variables](../configuration/variables.mdx) +- Execute hooks at specific events (like a command execution) + +## Installing a plugin + +Plugins can be installed from an URL, Git Repository or local file. To install a plugin run: +``` +# Add a plugin from a git repository +devspace add plugin https://github.com/my-organization/my-repo + +# Add a plugin from an URL +devspace add plugin https://myorg.com/path/to/plugin.yaml + +# Add a plugin from a local path +devspace add plugin ./plugin.yaml +``` + +After installing a plugin you can check all your existing plugins via: +``` +devspace list plugins +``` + +## Updating a plugin + +To update a DevSpace plugin run the following command: + +``` +# Enter the name and not the path +devspace update plugin PLUGIN_NAME + +# This only works for GIT plugins +devspace update plugin PLUGIN_NAME --version GIT_TAG +``` + +## Removing a plugin + +To remove a plugin via the DevSpace command line: +``` +# Enter the name and not the path +devspace remove plugin PLUGIN_NAME +``` + +If the plugin cannot be removed because a certain hook fails (or any other reason), you can also delete the plugin manually. DevSpace saves all plugin data in `$HOME/.devspace/plugins`. You will have to check each folders `plugin.yaml` to see which plugin is stored in the folder. To remove a plugin, simply delete the complete plugin folder. + +## Developing a custom DevSpace plugin + +Creating an own DevSpace plugin is quite easy. You only need a `plugin.yaml` that specifies where DevSpace can find the plugin binary and how DevSpace should execute it. You can also take a look at the [devspace-plugin-example](https://github.com/loft-sh/devspace-plugin-loft) project for a complete example. +For each installed plugin, DevSpace will create a folder in `$HOME/.devspace/plugins` with a `plugin.yaml` and a downloaded or copied `binary` that will be executed. + +### plugin.yaml + +The `plugin.yaml` specifies how the plugin is installed and integrates into DevSpace and consists of the following parts. + +#### `name` + +Name of the plugin as shown in devspace list plugins and used for devspace update plugin and devspace remove plugin. (e.g. `my-devspace-plugin`) + +#### `version` + +The semantic current version of the plugin (e.g. `0.0.1`) + +#### `binaries` + +This section states where DevSpace can retrieve the plugin binary for the current operating system and architecture. If devspace cannot find a binary for the current [runtime.GOOS](https://golang.org/pkg/runtime/#pkg-constants) and [runtime.GOARCH](https://golang.org/pkg/runtime/#pkg-constants) it will not install the plugin. +The `binaries` section expects an array with objects that can have the following properties: +* `os` is the runtime.GOOS name of the operating system (e.g. darwin, windows, linux etc.) +* `arch` is the runtime.GOARCH name of the system (e.g. amd64, 386 etc.) +* `path` is the URL to the binary to download or the local path to the binary to copy + +#### `commands` + +This section specifies which commands should be added to DevSpace. It expects an array with objects that can have the following properties: +* `name` of the command that should be added to devspace (e.g. `login` will add `devspace login`) +* `baseArgs` these args are prepended to the plugin binary, so when a user will call 'devspace login other --flag 123', devspace will call the plugin binary with 'plugin-binary baseArgs... other --flag 123' +* `usage` the usage of the command to print in `devspace --help` +* `description` the description of the command to print in `devspace --help` +* `subCommand` (Optional) the subcommand to append the command to (e.g. `add` will add the command to `devspace add`) + +DevSpace will forward all passed arguments and flags to the plugin command. + +#### `vars` + +This section specifies which [predefined variables](../configuration/variables.mdx) are added to DevSpace. These variable values will be retrieved from the plugin binary instead of asking the user. It expects an array with objects that can have the following properties: +* `name` of the predefined variable to add (e.g. `EXAMPLE_VARIABLE` which can then be used in a `devspace.yaml` as `${EXAMPLE_VARIABLE}`) +* `baseArgs` these args are appended to the plugin binary (e.g. `["print", "var", "test"]` will cause devspace to call the plugin binary with: `plugin-binary print var test`) + +DevSpace expects the plugin binary to either fail (exit code unequal zero) or print the variable value to the stdout stream. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables: +- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) +- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the value of `--namespace` if set (e.g. `namespace`) +- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the value of `--kube-context` if set (e.g. `my-kube-context`) + +#### `hooks` + +This section specifies certain plugin commands that should be executed at certain DevSpace events. It expects an array with objects that can have the following properties: +* `event` name of the event when to execute the command. The following events exist: + * `after:installPlugin` executed after the plugin was installed + * `before:updatePlugin` executed before the plugin will be updated + * `after:updatePlugin` executed after the plugin was updated + * `before:removePlugin` executed before the plugin will be removed + * `before:build`, `before:build:*`, `after:build`, `after:build:*`, `error:build:*` executed when DevSpace will build an image. The environment variables `DEVSPACE_PLUGIN_IMAGE_CONFIG_NAME`, `DEVSPACE_PLUGIN_IMAGE_NAME`, `DEVSPACE_PLUGIN_IMAGE_TAGS` and `DEVSPACE_PLUGIN_IMAGE_CONFIG` will be available in the hook + * `before:deploy`, `after:deploy`, `before:deploy:*`, `after:deploy:*`, `error:deploy:*`, `skip:deploy:*`, `before:render`, `after:render`, `before:render:*`, `after:render:*`, `error:render:*`, `before:purge`, `after:purge`, `before:purge:*`, `after:purge:*`, `error:purge:*` executed when DevSpace will deploy a defined deployment. The environment variables `DEVSPACE_PLUGIN_DEPLOY_CONFIG` will be available in the hook + * `before:resolveDependency:*`, `after:resolveDependency:*`, `error:resolveDependency:*`, `before:buildDependency:*`, `after:buildDependency:*`, `error:buildDependency:*`, `before:deployDependency:*`, `after:deployDependency:*`, `error:deployDependency:*`, `before:renderDependency:*`, `after:renderDependency:*`, `error:renderDependency:*`, `before:purgeDependency:*`, `after:purgeDependency:*`, `error:purgeDependency:*` executed before, after or onError during dependency handling. The environment variables `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG`, `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG_PATH`and `DEVSPACE_PLUGIN_DEPENDENCY_NAME` will be available in the hook + * `before:configLoad`, `after:configLoad`, `error:configLoad` executed when DevSpace tries to load a `devspace.yaml`. The environment variables `DEVSPACE_PLUGIN_LOAD_PATH`, `DEVSPACE_PLUGIN_LOADED_RAW`, `DEVSPACE_PLUGIN_LOADED_VARS` and `DEVSPACE_PLUGIN_LOADED_CONFIG` (only in `config.afterLoad`) will be available in the hook + * `start:sync:*`, `stop:sync:*`, `error:sync:*`, `restart:sync:*` executed when DevSpace will start syncing a new sync config, closing a running one or restarting/stopping because of an error. The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook + * `before:initialSync:*`, `after:initialSync:*`, `error:initialSync:*` executed right before DevSpace will do an initial sync and afterwards (if successful). The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook + * `start:portForwarding:*`, `restart:portForwarding:*`, `error:portForwarding:*`, `stop:portForwarding:*` executed when DevSpace will start, restart, stop port forwarding. The environment variables `DEVSPACE_PLUGIN_PORT_FORWARDING_CONFIG` will be available in the hook + * `start:reversePortForwarding:*`, `restart:reversePortForwarding:*`, `error:reversePortForwarding:*`, `stop:reversePortForwarding:*` executed when DevSpace will start, restart, stop reverse port forwarding. The environment variables `DEVSPACE_PLUGIN_REVERSE_PORT_FORWARDING_CONFIG` will be available in the hook + * `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` + * `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`, `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:interrupt`, `devCommand:error` executed at different checkpoints when `devspace dev` is executed + * `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed + * `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed + * `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed + * `command:before:execute`, `command:after:execute`, `command:error` executed at the beginning, ending or if an error occurs during any DevSpace command execution + * `analyze`, `attach`, `build`, `deploy`, `dev`, `enter`, `init`, `logs`, `open`, `print`, `purge`, `render`, `restart`, `run`, `sync`, `ui`, `upgrade` are executed after the corresponding devspace command has loaded the config and created a kubernetes client (if there is a config to load or a kubernetes client to create) +* `baseArgs` these args are appended to the plugin binary (e.g. `["run", "my", "command"]` will cause devspace to call the plugin binary with: `plugin-binary run my command`) +* `background` if true will execute the hook in the background and continue DevSpace command execution + +If a non-background hook fails (exit code unequals zero) DevSpace will stop command execution and the complete DevSpace command fails. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables (if they apply for the event): +- `DEVSPACE_PLUGIN_EXECUTION_ID` a unique identifier that stays the complete duration of a command but will change each time DevSpace is re-executed +- `DEVSPACE_PLUGIN_EVENT` the event that has triggered the hook +- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) +- `DEVSPACE_PLUGIN_CONFIG` the config that was loaded for the command as yaml encoded (all profiles and variables are resolved at this point) +- `DEVSPACE_PLUGIN_COMMAND` the name of the DevSpace command that was executed (e.g. `dev`) +- `DEVSPACE_PLUGIN_COMMAND_LINE` the complete name of the DevSpace command that was executed (e.g. `devspace dev [FLAGS]`) +- `DEVSPACE_PLUGIN_COMMAND_FLAGS` the flags that were passed to the DevSpace command encoded as JSON (e.g. `["--namespace", "test", "--skip-build", "true"]`) +- `DEVSPACE_PLUGIN_COMMAND_ARGS` the arguments that were passed to the DevSpace command encoded as JSON (without any flags) (e.g. `["arg1"]`) +- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the kubernetes namespace where DevSpace will operate in (e.g. `namespace`) +- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the kubernetes context where DevSpace will operate in (e.g. `my-kube-context`) +- `DEVSPACE_PLUGIN_ERROR` the error that occurred at a certain event (usually only supplied in the `error` or `restart` events) + +### Example + +An example `plugin.yaml` could look like this: +```yaml +name: devspace-plugin-example +version: 0.0.1 +commands: + # This will add the command devspace login + - name: "login" + # these args are prepended to the plugin binary, so when a user will call 'devspace login test test2 --flag 123' + # devspace will call the plugin binary with 'plugin-binary other command test test2 --flag 123' + baseArgs: ["other", "command"] + usage: "short description of command" + description: "long description of command" + # You can also add commands under already existing devspace subcommands + # This will add the devspace command: devspace list env + - name: "env" + baseArgs: ["list", "env"] + subCommand: "list" +# Hooks are called before certain already existing commands are executed +# in devspace, for example devspace dev +hooks: + # will be executed when devspace print is run by the user + - event: print + # this will call the plugin binary before devspace print is called with: 'plugin-binary list env' + baseArgs: ["list", "env"] + # root is executed before any other event and command execution except for other plugin commands + - event: root + baseArgs: ["login"] +# You can also add predefined variables for the config via plugins +vars: + # the name of the predefined variable + # that can be used within any devspace.yaml + - name: EXAMPLE_USER + # this will call the plugin binary when resolving this variable and expects the variable + # output on stdout. + baseArgs: ["print", "env", "USER"] + - name: EXAMPLE_HOME + baseArgs: [ "print", "env", "HOME" ] +# In this section the plugin binaries (or scripts) and their locations are defined +# if devspace cannot find a binary for the current runtime.GOOS and runtime.GOARCH +# it will not install the plugin +binaries: + - os: darwin + arch: amd64 + # can be either an URL or local path + path: ./main + - os: linux + arch: amd64 + path: main + - os: linux + arch: "386" + path: main + - os: windows + arch: amd64 + path: path/to/main.exe + - os: windows + arch: "386" + path: https://my-domain.url/path/to/windows.exe +``` diff --git a/docs/schemas/config-jsonschema.json b/docs/schemas/config-jsonschema.json new file mode 100644 index 0000000000..3be8c11ea3 --- /dev/null +++ b/docs/schemas/config-jsonschema.json @@ -0,0 +1,2037 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/loft-sh/devspace/pkg/devspace/config/versions/latest/config", + "$defs": { + "Attach": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable attaching to a container" + }, + "disableReplace": { + "type": "boolean", + "description": "DisableReplace prevents DevSpace from actually replacing the pod with modifications so that\nthe pod starts up correctly." + }, + "disableTTY": { + "type": "boolean", + "description": "DisableTTY is used to tell DevSpace to not use a TTY connection for attaching" + } + }, + "type": "object" + }, + "BandwidthLimits": { + "properties": { + "download": { + "type": "integer", + "description": "Download is the download limit in kilo bytes per second" + }, + "upload": { + "type": "integer", + "description": "Upload is the upload limit in kilo bytes per second" + } + }, + "type": "object", + "description": "BandwidthLimits defines the struct for specifying the sync bandwidth limits" + }, + "BuildKitConfig": { + "properties": { + "inCluster": { + "$ref": "#/$defs/BuildKitInClusterConfig", + "description": "InCluster if specified, DevSpace will use BuildKit to build the image within the cluster" + }, + "preferMinikube": { + "type": "boolean", + "description": "PreferMinikube if false, will not try to use the minikube docker daemon to build the image" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are additional arguments to call docker buildx build with" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command to override the base command to create a builder and build images. Defaults to [\"docker\", \"buildx\"]" + } + }, + "type": "object", + "description": "BuildKitConfig tells the DevSpace CLI to" + }, + "BuildKitInClusterConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the builder to use. If omitted, DevSpace will try to create\nor reuse a builder in the form devspace-$NAMESPACE" + }, + "namespace": { + "type": "string", + "description": "Namespace where to create the builder deployment in. Defaults to the current\nactive namespace." + }, + "rootless": { + "type": "boolean", + "description": "Rootless if enabled will create a rootless builder deployment." + }, + "image": { + "type": "string", + "description": "Image is the docker image to use for the BuildKit deployment" + }, + "nodeSelector": { + "type": "string", + "description": "NodeSelector is the node selector to use for the BuildKit deployment" + }, + "noCreate": { + "type": "boolean", + "description": "NoCreate. By default, DevSpace will try to create a new builder if it cannot be found.\nIf this is true, DevSpace will fail if the specified builder cannot be found." + }, + "noRecreate": { + "type": "boolean", + "description": "NoRecreate. By default, DevSpace will try to recreate the builder if the builder configuration\nin the devspace.yaml differs from the actual builder configuration. If this is\ntrue, DevSpace will not try to do that." + }, + "noLoad": { + "type": "boolean", + "description": "NoLoad if enabled, DevSpace will not try to load the built image into the local docker\ndaemon if skip push is defined" + }, + "createArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CreateArgs are additional args to create the builder with." + } + }, + "type": "object", + "description": "BuildKitInClusterConfig holds the buildkit builder config" + }, + "ChartConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the helm chart to deploy. Can also be a local path" + }, + "version": { + "type": "string", + "description": "Version is the version of the helm chart to deploy" + }, + "repo": { + "type": "string", + "description": "RepoURL is the url of the repo to deploy the chart from" + }, + "username": { + "type": "string", + "description": "Username is the username to authenticate to the chart repo" + }, + "password": { + "type": "string", + "description": "Password is the password to authenticate to the chart repo" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + } + }, + "type": "object", + "description": "ChartConfig defines the helm chart options" + }, + "CommandConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of a command that is used via `devspace run NAME`" + }, + "command": { + "type": "string", + "description": "Command is the command that should be executed. For example: 'echo 123'" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional and if defined, command is not executed within a shell\nand rather directly." + }, + "appendArgs": { + "type": "boolean", + "description": "AppendArgs will append arguments passed to the DevSpace command automatically to\nthe specified command." + }, + "description": { + "type": "string", + "description": "Description describes what the command is doing and can be seen in `devspace list commands`" + }, + "internal": { + "type": "boolean", + "description": "Internal commands are not show in list and are usable through run_command" + }, + "after": { + "type": "string", + "description": "After is executed after the command was run. It is executed also when\nthe command was interrupted which will set the env variable COMMAND_INTERRUPT\nto true as well as when the command errored which will set the error string to\nCOMMAND_ERROR." + } + }, + "type": "object", + "required": [ + "command" + ], + "description": "CommandConfig defines the command specification" + }, + "CustomConfig": { + "properties": { + "command": { + "type": "string", + "description": "Command to execute to build the image. You can use ${runtime.images.my-image.image} and ${runtime.image.my-image.tag}\nto reference the image and tag that should get built." + }, + "onChange": { + "items": { + "type": "string" + }, + "type": "array", + "description": "OnChange will determine when the command should be rerun" + } + }, + "type": "object", + "description": "CustomConfig tells the DevSpace CLI to build with a custom build script" + }, + "DependencyConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is used internally" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + }, + "pipeline": { + "type": "string", + "description": "Pipeline is the pipeline to deploy by default. Defaults to 'deploy'", + "default": "deploy", + "group": "execution", + "group_name": "Execution" + }, + "vars": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Vars are variables that should be passed to the dependency", + "group": "execution" + }, + "overwriteVars": { + "type": "boolean", + "description": "OverwriteVars specifies if DevSpace should pass the parent variables to the dependency", + "group": "execution" + }, + "ignoreDependencies": { + "type": "boolean", + "description": "IgnoreDependencies defines if dependencies of the dependency should be excluded", + "group": "execution" + }, + "namespace": { + "type": "string", + "description": "Namespace specifies the namespace this dependency should be deployed to", + "group": "execution" + } + }, + "type": "object", + "required": [ + "name" + ], + "description": "DependencyConfig defines the devspace dependency" + }, + "DeploymentConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name of the deployment" + }, + "helm": { + "$ref": "#/$defs/HelmConfig", + "description": "Helm tells DevSpace to deploy this deployment via helm" + }, + "kubectl": { + "$ref": "#/$defs/KubectlConfig", + "description": "Kubectl tells DevSpace to deploy this deployment via kubectl or kustomize" + }, + "updateImageTags": { + "type": "boolean", + "description": "UpdateImageTags lets you define if DevSpace should update the tags of the images defined in the\nimages section with their most recent built tag." + }, + "namespace": { + "type": "string", + "description": "Namespace where to deploy this deployment" + } + }, + "type": "object", + "description": "DeploymentConfig defines the configuration how the devspace should be deployed" + }, + "DevContainer": { + "properties": { + "container": { + "type": "string", + "description": "Container is the container name these services should get started.", + "group": "selector", + "group_name": "Selector" + }, + "arch": { + "type": "string", + "description": "Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but\ndevspace tries to find out the architecture by itself by looking at the node this container runs on.", + "group": "selector" + }, + "devImage": { + "type": "string", + "description": "DevImage is the image to use for this container and will replace the existing image\nif necessary.", + "group": "overwrites", + "group_name": "Overwrites" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command can be used to override the entrypoint of the container", + "group": "overwrites" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args can be used to override the args of the container", + "group": "overwrites" + }, + "workingDir": { + "type": "string", + "description": "WorkingDir can be used to override the working dir of the container", + "group": "overwrites" + }, + "env": { + "items": { + "$ref": "#/$defs/EnvVar" + }, + "type": "array", + "description": "Env can be used to add environment variables to the container. DevSpace will\nnot replace existing environment variables if an environment variable is defined here.", + "group": "overwrites" + }, + "resources": { + "$ref": "#/$defs/PodResources", + "description": "Resources can be used to override the resource definitions of the container", + "group": "overwrites" + }, + "reversePorts": { + "items": { + "$ref": "#/$defs/PortMapping" + }, + "type": "array", + "description": "ReversePorts are port mappings to make local ports available inside the container", + "group": "ports", + "group_name": "Ports \u0026 Localhost Access" + }, + "sync": { + "items": { + "$ref": "#/$defs/SyncConfig" + }, + "type": "array", + "description": "Sync allows you to sync certain local paths with paths inside the container", + "group": "files", + "group_name": "Files \u0026 Sync" + }, + "persistPaths": { + "items": { + "$ref": "#/$defs/PersistentPath" + }, + "type": "array", + "description": "SSH allows you to create an SSH tunnel to this container", + "group": "files" + }, + "terminal": { + "$ref": "#/$defs/Terminal", + "description": "Terminal allows you to tell DevSpace to open a terminal with screen support to this container", + "group": "devWorkflow", + "group_name": "Dev Workflow" + }, + "logs": { + "$ref": "#/$defs/Logs", + "description": "Logs allows you to tell DevSpace to stream logs from this container to the console", + "group": "devWorkflow" + }, + "attach": { + "$ref": "#/$defs/Attach", + "description": "Attach allows you to tell DevSpace to attach to this container", + "group": "devWorkflow" + }, + "ssh": { + "$ref": "#/$defs/SSH", + "description": "PersistPaths allows you to persist certain paths within this container with a persistent volume claim", + "group": "devWorkflow" + }, + "proxyCommands": { + "items": { + "$ref": "#/$defs/ProxyCommand" + }, + "type": "array", + "description": "ProxyCommands allow you to proxy certain local commands to the container", + "group": "devWorkflow" + }, + "restartHelper": { + "$ref": "#/$defs/RestartHelper", + "description": "RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of\nthe container and restarting it and is injected via an annotation in the replaced pod.", + "group": "devWorkflow" + } + }, + "type": "object", + "description": "DevContainer holds options for dev services that should get started within a certain container of the selected pod" + }, + "DevPod": { + "properties": { + "name": { + "type": "string", + "description": "Name of the dev configuration" + }, + "imageSelector": { + "type": "string", + "description": "ImageSelector to select a pod", + "group": "selector" + }, + "labelSelector": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "LabelSelector to select a pod", + "group": "selector" + }, + "namespace": { + "type": "string", + "description": "Namespace where to select the pod", + "group": "selector" + }, + "container": { + "type": "string", + "description": "Container is the container name these services should get started.", + "group": "selector", + "group_name": "Selector" + }, + "arch": { + "type": "string", + "description": "Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but\ndevspace tries to find out the architecture by itself by looking at the node this container runs on.", + "group": "selector" + }, + "devImage": { + "type": "string", + "description": "DevImage is the image to use for this container and will replace the existing image\nif necessary.", + "group": "overwrites", + "group_name": "Overwrites" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command can be used to override the entrypoint of the container", + "group": "overwrites" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args can be used to override the args of the container", + "group": "overwrites" + }, + "workingDir": { + "type": "string", + "description": "WorkingDir can be used to override the working dir of the container", + "group": "overwrites" + }, + "env": { + "items": { + "$ref": "#/$defs/EnvVar" + }, + "type": "array", + "description": "Env can be used to add environment variables to the container. DevSpace will\nnot replace existing environment variables if an environment variable is defined here.", + "group": "overwrites" + }, + "resources": { + "$ref": "#/$defs/PodResources", + "description": "Resources can be used to override the resource definitions of the container", + "group": "overwrites" + }, + "reversePorts": { + "items": { + "$ref": "#/$defs/PortMapping" + }, + "type": "array", + "description": "ReversePorts are port mappings to make local ports available inside the container", + "group": "ports", + "group_name": "Ports \u0026 Localhost Access" + }, + "sync": { + "items": { + "$ref": "#/$defs/SyncConfig" + }, + "type": "array", + "description": "Sync allows you to sync certain local paths with paths inside the container", + "group": "files", + "group_name": "Files \u0026 Sync" + }, + "persistPaths": { + "items": { + "$ref": "#/$defs/PersistentPath" + }, + "type": "array", + "description": "SSH allows you to create an SSH tunnel to this container", + "group": "files" + }, + "terminal": { + "$ref": "#/$defs/Terminal", + "description": "Terminal allows you to tell DevSpace to open a terminal with screen support to this container", + "group": "devWorkflow", + "group_name": "Dev Workflow" + }, + "logs": { + "$ref": "#/$defs/Logs", + "description": "Logs allows you to tell DevSpace to stream logs from this container to the console", + "group": "devWorkflow" + }, + "attach": { + "$ref": "#/$defs/Attach", + "description": "Attach allows you to tell DevSpace to attach to this container", + "group": "devWorkflow" + }, + "ssh": { + "$ref": "#/$defs/SSH", + "description": "PersistPaths allows you to persist certain paths within this container with a persistent volume claim", + "group": "devWorkflow" + }, + "proxyCommands": { + "items": { + "$ref": "#/$defs/ProxyCommand" + }, + "type": "array", + "description": "ProxyCommands allow you to proxy certain local commands to the container", + "group": "devWorkflow" + }, + "restartHelper": { + "$ref": "#/$defs/RestartHelper", + "description": "RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of\nthe container and restarting it and is injected via an annotation in the replaced pod.", + "group": "devWorkflow" + }, + "ports": { + "items": { + "$ref": "#/$defs/PortMapping" + }, + "type": "array", + "description": "Ports defines port mappings from the remote pod that should be forwarded to your local\ncomputer", + "group": "ports" + }, + "open": { + "items": { + "$ref": "#/$defs/OpenConfig" + }, + "type": "array", + "description": "Open defines urls that should be opened as soon as they are reachable", + "group": "ports" + }, + "persistenceOptions": { + "$ref": "#/$defs/PersistenceOptions", + "description": "PersistenceOptions are additional options for persisting paths within this pod", + "group": "files" + }, + "patches": { + "items": { + "$ref": "#/$defs/PatchConfig" + }, + "type": "array", + "description": "Patches are additional changes to the pod spec that should be applied", + "group": "overwrites" + }, + "containers": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DevContainer" + } + }, + "type": "object", + "group": "selector" + } + }, + "type": "object", + "description": "DevPod holds configurations for selecting a pod and starting dev services for that pod" + }, + "DockerConfig": { + "properties": { + "disableFallback": { + "type": "boolean", + "description": "DisableFallback allows you to turn off kaniko building if docker isn't installed" + }, + "preferMinikube": { + "type": "boolean", + "description": "PreferMinikube allows you to turn off using the minikube docker daemon if the minikube\ncontext is used." + }, + "useCli": { + "type": "boolean", + "description": "UseCLI specifies if DevSpace should use the docker cli for building" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are additional arguments to pass to the docker cli" + } + }, + "type": "object", + "description": "DockerConfig tells the DevSpace CLI to build with Docker on Minikube or on localhost" + }, + "EnvVar": { + "properties": { + "name": { + "type": "string", + "description": "Name of the environment variable" + }, + "value": { + "type": "string", + "description": "Value of the environment variable" + } + }, + "type": "object", + "required": [ + "name", + "value" + ] + }, + "HelmConfig": { + "properties": { + "chart": { + "$ref": "#/$defs/ChartConfig", + "description": "Chart holds the chart configuration and where DevSpace can find the chart" + }, + "values": { + "type": "object", + "description": "Values are additional values that should get passed to deploying this chart" + }, + "valuesFiles": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ValuesFiles are additional files that hold values for deploying this chart" + }, + "displayOutput": { + "type": "boolean", + "description": "DisplayOutput allows you to display the helm output to the console" + }, + "upgradeArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "UpgradeArgs are additional arguments to pass to `helm upgrade`" + }, + "templateArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "TemplateArgs are additional arguments to pass to `helm template`" + } + }, + "type": "object", + "description": "HelmConfig defines the specific helm options used during deployment" + }, + "Image": { + "properties": { + "name": { + "type": "string", + "description": "Name of the image, will be filled automatically" + }, + "image": { + "type": "string", + "description": "Image is the complete image name including registry and repository\nfor example myregistry.com/mynamespace/myimage" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Tags is an array that specifies all tags that should be build during\nthe build process. If this is empty, devspace will generate a random tag" + }, + "dockerfile": { + "type": "string", + "description": "Dockerfile specifies a path (relative or absolute) to the dockerfile. Defaults\nto ./Dockerfile", + "default": "./Dockerfile" + }, + "context": { + "type": "string", + "description": "Context is the context path to build with. Defaults to the current working directory", + "default": "./" + }, + "skipPush": { + "type": "boolean", + "description": "SkipPush will not push the image to a registry if enabled. Only works if docker or buildkit is chosen\nas build method" + }, + "createPullSecret": { + "type": "boolean", + "description": "CreatePullSecret specifies if a pull secret should be created for this image in the\ntarget namespace. Defaults to true" + }, + "entrypoint": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Entrypoint specifies an entrypoint that will be appended to the dockerfile during\nimage build in memory. Example: [\"sleep\", \"99999\"]", + "group": "overwrites", + "group_name": "In-Memory Overwrites" + }, + "cmd": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Cmd specifies the arguments for the entrypoint that will be appended\nduring build in memory to the dockerfile", + "group": "overwrites" + }, + "appendDockerfileInstructions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "AppendDockerfileInstructions are instructions that will be appended to the Dockerfile that is build\nat the current build target and are appended before the entrypoint and cmd instructions", + "group": "overwrites" + }, + "buildArgs": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "BuildArgs are the build args that are to the build", + "group": "buildConfig", + "group_name": "Build Configuration" + }, + "target": { + "type": "string", + "description": "Target is the target that should get used during the build. Only works if the dockerfile supports this", + "group": "buildConfig" + }, + "network": { + "type": "string", + "description": "Network is the network that should get used to build the image", + "group": "buildConfig" + }, + "rebuildStrategy": { + "type": "string", + "enum": [ + "default", + "always", + "ignoreContextChanges" + ], + "description": "RebuildStrategy is used to determine when DevSpace should rebuild an image. By default, devspace will\nrebuild an image if one of the following conditions is true:\n- The dockerfile has changed\n- The configuration within the devspace.yaml for the image has changed\n- A file within the docker context (excluding .dockerignore rules) has changed\nThis option is ignored for custom builds.", + "group": "buildConfig" + }, + "buildKit": { + "$ref": "#/$defs/BuildKitConfig", + "description": "BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit", + "group": "engines", + "group_name": "Build Engines" + }, + "docker": { + "$ref": "#/$defs/DockerConfig", + "description": "Docker if docker is specified, DevSpace will build the image using the local docker daemon", + "group": "engines" + }, + "kaniko": { + "$ref": "#/$defs/KanikoConfig", + "description": "Kaniko if kaniko is specified, DevSpace will build the image in-cluster with kaniko", + "group": "engines" + }, + "custom": { + "$ref": "#/$defs/CustomConfig", + "description": "Custom if custom is specified, DevSpace will build the image with the help of\na custom script.", + "group": "engines" + } + }, + "type": "object", + "required": [ + "image", + "dockerfile" + ], + "description": "Image defines the image specification" + }, + "Import": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled specifies if the given import should be enabled" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + } + }, + "type": "object", + "description": "Import specifies the source of the devspace config to merge" + }, + "KanikoAdditionalMount": { + "properties": { + "secret": { + "$ref": "#/$defs/KanikoAdditionalMountSecret", + "description": "The secret that should be mounted" + }, + "configMap": { + "$ref": "#/$defs/KanikoAdditionalMountConfigMap", + "description": "The configMap that should be mounted" + }, + "readOnly": { + "type": "boolean", + "description": "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false.\n+optional" + }, + "mountPath": { + "type": "string", + "description": "Path within the container at which the volume should be mounted. Must\nnot contain ':'." + }, + "subPath": { + "type": "string", + "description": "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root).\n+optional" + } + }, + "type": "object", + "description": "KanikoAdditionalMount tells devspace how the additional mount of the kaniko pod should look like" + }, + "KanikoAdditionalMountConfigMap": { + "properties": { + "name": { + "type": "string", + "description": "Name of the configmap\n+optional" + }, + "items": { + "items": { + "$ref": "#/$defs/KanikoAdditionalMountKeyToPath" + }, + "type": "array", + "description": "If unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "description": "Optional: mode bits to use on created files by default. Must be a\nvalue between 0 and 0777. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object" + }, + "KanikoAdditionalMountKeyToPath": { + "properties": { + "key": { + "type": "string", + "description": "The key to project." + }, + "path": { + "type": "string", + "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." + }, + "mode": { + "type": "integer", + "description": "Optional: mode bits to use on this file, must be a value between 0\nand 0777. If not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object", + "required": [ + "key", + "path" + ] + }, + "KanikoAdditionalMountSecret": { + "properties": { + "name": { + "type": "string", + "description": "Name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n+optional" + }, + "items": { + "items": { + "$ref": "#/$defs/KanikoAdditionalMountKeyToPath" + }, + "type": "array", + "description": "If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "description": "Optional: mode bits to use on created files by default. Must be a\nvalue between 0 and 0777. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "KanikoConfig": { + "properties": { + "cache": { + "type": "boolean", + "description": "Cache tells DevSpace if a cache repository should be used. defaults to false" + }, + "snapshotMode": { + "type": "string", + "description": "SnapshotMode tells DevSpace which snapshot mode kaniko should use. defaults to time" + }, + "image": { + "type": "string", + "description": "Image is the image name of the kaniko pod to use" + }, + "initImage": { + "type": "string", + "description": "InitImage to override the init image of the kaniko pod" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args for additional arguments that should be passed to kaniko" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command to replace the starting command for the kaniko container" + }, + "namespace": { + "type": "string", + "description": "Namespace is the namespace where the kaniko pod should be run" + }, + "insecure": { + "type": "boolean", + "description": "Insecure allows pushing to insecure registries" + }, + "pullSecret": { + "type": "string", + "description": "PullSecret is the pull secret to mount by default" + }, + "skipPullSecretMount": { + "type": "boolean", + "description": "SkipPullSecretMount will skip mounting the pull secret" + }, + "nodeSelector": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "NodeSelector is the node selector to use for the kaniko pod" + }, + "tolerations": { + "items": { + "$ref": "#/$defs/Toleration" + }, + "type": "array", + "description": "Tolerations is a tolerations list to use for the kaniko pod" + }, + "serviceAccount": { + "type": "string", + "description": "ServiceAccount the service account to use for the kaniko pod" + }, + "annotations": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Annotations are extra annotations that will be added to the build pod" + }, + "labels": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Labels are extra labels that will be added to the build pod" + }, + "initEnv": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "InitEnv are extra environment variables that will be added to the build init container" + }, + "env": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Env are extra environment variables that will be added to the build kaniko container\nWill populate the env.value field." + }, + "envFrom": { + "patternProperties": { + ".*": { + "type": "object" + } + }, + "type": "object", + "description": "EnvFrom are extra environment variables from configmap or secret that will be added to the build kaniko container\nWill populate the env.valueFrom field." + }, + "additionalMounts": { + "items": { + "$ref": "#/$defs/KanikoAdditionalMount" + }, + "type": "array", + "description": "AdditionalMounts are additional mounts that will be added to the build pod" + }, + "resources": { + "$ref": "#/$defs/PodResources", + "description": "Resources are the resources that should be set on the kaniko pod" + } + }, + "type": "object", + "description": "KanikoConfig tells the DevSpace CLI to build with Docker on Minikube or on localhost" + }, + "KubectlConfig": { + "properties": { + "manifests": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Manifests is a list of files or folders that will be deployed by DevSpace using kubectl\nor kustomize" + }, + "applyArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ApplyArgs are extra arguments for `kubectl apply`" + }, + "createArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CreateArgs are extra arguments for `kubectl create` which will be run before `kubectl apply`" + }, + "kubectlBinaryPath": { + "type": "string", + "description": "KubectlBinaryPath is the optional path where to finde the kubectl binary" + }, + "kustomize": { + "type": "boolean", + "description": "Kustomize can be used to enable kustomize instead of kubectl" + }, + "kustomizeArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "KustomizeArgs are extra arguments for `kustomize build` which will be run before `kubectl apply`" + }, + "kustomizeBinaryPath": { + "type": "string", + "description": "KustomizeBinaryPath is the optional path where to find the kustomize binary" + } + }, + "type": "object", + "description": "KubectlConfig defines the specific kubectl options used during deployment" + }, + "Logs": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable printing container logs" + }, + "lastLines": { + "type": "integer", + "description": "LastLines is the amount of lines to print of the running container initially" + } + }, + "type": "object" + }, + "OpenConfig": { + "properties": { + "url": { + "type": "string", + "description": "URL is the url to open in the browser after it is available" + } + }, + "type": "object", + "description": "OpenConfig defines what to open after services have been started" + }, + "PatchConfig": { + "properties": { + "op": { + "type": "string", + "description": "Operation is the path operation to do. Can be either replace, add or remove" + }, + "path": { + "type": "string", + "description": "Path is the config path to apply the patch to" + }, + "value": { + "description": "Value is the value to use for this patch." + } + }, + "type": "object", + "required": [ + "op", + "path" + ], + "description": "PatchConfig describes a config patch and how it should be applied" + }, + "PersistenceOptions": { + "properties": { + "size": { + "type": "string", + "description": "Size is the size of the created persistent volume in Kubernetes size notation like 5Gi" + }, + "storageClassName": { + "type": "string", + "description": "StorageClassName is the storage type DevSpace should use for this persistent volume" + }, + "accessModes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "AccessModes are the access modes DevSpace should use for the persistent volume" + }, + "readOnly": { + "type": "boolean", + "description": "ReadOnly specifies if the volume should be read only" + }, + "name": { + "type": "string", + "description": "Name is the name of the PVC that should be created. If a PVC with that name\nalready exists, DevSpace will use that PVC instead of creating one." + } + }, + "type": "object", + "description": "PersistenceOptions are general persistence options DevSpace should use for all persistent paths within a single dev configuration" + }, + "PersistentPath": { + "properties": { + "path": { + "type": "string", + "description": "Path is the container path that should get persisted. By default, DevSpace will create an init container\nthat will copy over the contents of this folder from the existing image." + }, + "volumePath": { + "type": "string", + "description": "VolumePath is the sub path on the volume that is mounted as persistent volume for this path" + }, + "readOnly": { + "type": "boolean", + "description": "ReadOnly will make the persistent path read only to the user" + }, + "skipPopulate": { + "type": "boolean", + "description": "SkipPopulate will not create an init container to copy over the existing contents if true" + }, + "initContainer": { + "$ref": "#/$defs/PersistentPathInitContainer", + "description": "InitContainer holds additional options for the persistent path init container" + } + }, + "type": "object", + "description": "PersistentPath holds options to configure persistence for DevSpace" + }, + "PersistentPathInitContainer": { + "properties": { + "resources": { + "$ref": "#/$defs/PodResources", + "description": "Resources are the resources used by the persistent path init container" + } + }, + "type": "object", + "description": "PersistentPathInitContainer defines additional options for the persistent path init container" + }, + "Pipeline": { + "properties": { + "name": { + "type": "string", + "enum": [ + "dev", + "deploy", + "build", + "purge", + ".*" + ], + "description": "Name of the pipeline, will be filled automatically" + }, + "run": { + "type": "string", + "description": "Run is the actual shell command that should be executed during this pipeline" + }, + "flags": { + "items": { + "$ref": "#/$defs/PipelineFlag" + }, + "type": "array", + "description": "Flags are extra flags that can be used for running the pipeline via\ndevspace run-pipeline." + }, + "continueOnError": { + "type": "boolean", + "description": "ContinueOnError will not fail the whole job and pipeline if\na call within the step fails." + } + }, + "type": "object", + "description": "Pipeline defines what DevSpace should do." + }, + "PipelineFlag": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the flag" + }, + "short": { + "type": "string", + "description": "Short is optional and is the shorthand name for this flag. E.g. 'g' converts to '-g'" + }, + "type": { + "type": "string", + "enum": [ + "bool", + "int", + "string", + "stringArray" + ], + "description": "Type is the type of the flag. Defaults to `bool`" + }, + "default": { + "description": "Default is the default value for this flag" + }, + "description": { + "type": "string", + "description": "Description is the description as shown in `devspace run-pipeline my-pipe -h`" + } + }, + "type": "object", + "description": "PipelineFlag defines an extra pipeline flag" + }, + "PodResources": { + "properties": { + "requests": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Requests are the requests part of the resources" + }, + "limits": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Limits are the limits part of the resources" + } + }, + "type": "object", + "description": "PodResources describes the resources section of the started kaniko pod" + }, + "PortMapping": { + "properties": { + "port": { + "type": "string", + "description": "Port is a port mapping that maps the localPort:remotePort. So if\nyou port forward the remote port will be available at the local port.\nIf you do reverse port forwarding, the local port will be available\nat the remote port in the container. If only port is specified, local and\nremote port are the same." + }, + "bindAddress": { + "type": "string", + "description": "BindAddress is the address DevSpace should listen on. Optional and defaults\nto localhost." + } + }, + "type": "object", + "required": [ + "port" + ], + "description": "PortMapping defines the ports for a PortMapping" + }, + "ProxyCommand": { + "properties": { + "gitCredentials": { + "type": "boolean", + "description": "GitCredentials configures a git credentials helper inside the container that proxies local git credentials" + }, + "command": { + "type": "string", + "description": "Command is the name of the command that should be available in the remote container. DevSpace\nwill create a small script for that inside the container that redirect command execution to\nthe local computer." + }, + "localCommand": { + "type": "string", + "description": "LocalCommand can be used to run a different command than specified via the command option. By\ndefault, this will be assumed to be the same as command." + }, + "skipContainerEnv": { + "type": "boolean", + "description": "SkipContainerEnv will not forward the container environment variables to the local command" + }, + "env": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Env are extra environment variables to set for the command" + } + }, + "type": "object" + }, + "PullSecretConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the pull secret name to deploy" + }, + "registry": { + "type": "string", + "description": "The registry to create the image pull secret for.\nEmpty string == docker hub\ne.g. gcr.io" + }, + "username": { + "type": "string", + "description": "The username of the registry. If this is empty, devspace will try\nto receive the auth data from the local docker" + }, + "password": { + "type": "string", + "description": "The password to use for the registry. If this is empty, devspace will\ntry to receive the auth data from the local docker" + }, + "email": { + "type": "string", + "description": "The optional email to use" + }, + "secret": { + "type": "string", + "description": "The secret to create" + }, + "serviceAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The service account to add the secret to" + } + }, + "type": "object", + "description": "PullSecretConfig defines a pull secret that should be created by DevSpace" + }, + "RequireCommand": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the command that should be installed" + }, + "versionArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "VersionArgs are the arguments to retrieve the version of the command" + }, + "versionRegEx": { + "type": "string", + "description": "VersionRegEx is the regex that is used to parse the version" + }, + "version": { + "type": "string", + "description": "Version constraint of the command that should be installed" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "RequireConfig": { + "properties": { + "devspace": { + "type": "string", + "description": "DevSpace specifies the DevSpace version constraint that is needed to use this config" + }, + "commands": { + "items": { + "$ref": "#/$defs/RequireCommand" + }, + "type": "array", + "description": "Commands specifies an array of commands that need to be installed locally to use this config" + }, + "plugins": { + "items": { + "$ref": "#/$defs/RequirePlugin" + }, + "type": "array", + "description": "Plugins specifies an array of plugins that need to be installed locally" + } + }, + "type": "object" + }, + "RequirePlugin": { + "properties": { + "name": { + "type": "string", + "description": "Name of the plugin that should be installed" + }, + "version": { + "type": "string", + "description": "Version constraint of the plugin that should be installed" + } + }, + "type": "object", + "required": [ + "name", + "version" + ] + }, + "RestartHelper": { + "properties": { + "path": { + "type": "string", + "description": "Path defines the path to the restart helper that might be used if certain config\noptions are enabled" + }, + "inject": { + "type": "boolean", + "description": "Inject signals DevSpace to inject the restart helper" + } + }, + "type": "object" + }, + "SSH": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable the ssh server within the container. By default,\nDevSpace will generate the required keys and create an entry in your ~/.ssh/config\nfor this container that can be used via `ssh dev-config-name.dev-project-name.devspace`" + }, + "localHostname": { + "type": "string", + "description": "LocalHostname is the local ssh host to write to the ~/.ssh/config" + }, + "localPort": { + "type": "integer", + "description": "LocalPort is the local port to forward from, if empty will be random" + }, + "remoteAddress": { + "type": "string", + "description": "RemoteAddress is the address to listen to inside the container" + } + }, + "type": "object" + }, + "SyncCommand": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should get executed" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments that should get appended to the command" + } + }, + "type": "object", + "description": "SyncCommand holds a command definition" + }, + "SyncConfig": { + "properties": { + "printLogs": { + "type": "boolean", + "description": "PrintLogs defines if sync logs should be displayed on the terminal" + }, + "startContainer": { + "type": "boolean", + "description": "StartContainer will start the container after initial sync is done. This will\ninject a devspacehelper into the pod and you need to define dev.*.command for\nthis to work." + }, + "path": { + "type": "string", + "description": "Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.'\nto specify either the local or remote working directory. This is valid for example: .:." + }, + "excludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ExcludePaths is an array of file patterns in gitignore format to exclude." + }, + "excludeFile": { + "type": "string", + "description": "ExcludeFile loads the file patterns to exclude from a file." + }, + "downloadExcludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading" + }, + "downloadExcludeFile": { + "type": "string", + "description": "DownloadExcludeFile loads the file patterns to exclude from downloading from a file." + }, + "uploadExcludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading" + }, + "uploadExcludeFile": { + "type": "string", + "description": "UploadExcludeFile loads the file patterns to exclude from uploading from a file." + }, + "initialSync": { + "type": "string", + "description": "InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal" + }, + "initialSyncCompareBy": { + "type": "string", + "description": "InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible" + }, + "disableDownload": { + "type": "boolean", + "description": "DisableDownload will disable downloading completely" + }, + "disableUpload": { + "type": "boolean", + "description": "DisableUpload will disable uploading completely" + }, + "noWatch": { + "type": "boolean", + "description": "NoWatch will terminate the sync after the initial sync is done" + }, + "polling": { + "type": "boolean", + "description": "Polling will tell the remote container to use polling instead of inotify" + }, + "waitInitialSync": { + "type": "boolean", + "description": "WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done" + }, + "bandwidthLimits": { + "$ref": "#/$defs/BandwidthLimits", + "description": "BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this\nsync configuration" + }, + "onUpload": { + "$ref": "#/$defs/SyncOnUpload", + "description": "OnUpload can be used to execute certain commands on uploading either in the container or locally as\nwell as restart the container after a file changed has happened." + } + }, + "type": "object", + "description": "SyncConfig defines the paths for a SyncFolder" + }, + "SyncExec": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name to show for this exec in the logs" + }, + "command": { + "type": "string", + "description": "Command is the command to execute. If no args are specified this is executed\nwithin a shell." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments to pass to the command" + }, + "failOnError": { + "type": "boolean", + "description": "FailOnError specifies if the sync should fail if the command fails" + }, + "local": { + "type": "boolean", + "description": "Local specifies if the command should be executed locally instead of within the\ncontainer" + }, + "onChange": { + "items": { + "type": "string" + }, + "type": "array", + "description": "OnChange is an array of file patterns that trigger this command execution" + } + }, + "type": "object" + }, + "SyncExecCommand": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should get executed" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments that should get appended to the command" + }, + "onFileChange": { + "$ref": "#/$defs/SyncCommand", + "description": "OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish\nand then will continue to upload files \u0026 create folders" + }, + "onDirCreate": { + "$ref": "#/$defs/SyncCommand", + "description": "OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish\nand then will continue to upload files \u0026 create folders" + }, + "onBatch": { + "$ref": "#/$defs/SyncCommand", + "description": "OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish\nand then will continue execution. This is useful for commands\nthat shouldn't be executed after every single change that may take a little bit longer like recompiling etc." + } + }, + "type": "object", + "description": "SyncExecCommand holds the configuration of commands that should be executed when files / folders are change" + }, + "SyncOnUpload": { + "properties": { + "restartContainer": { + "type": "boolean", + "description": "If true restart container will try to restart the container after a change has been made. Make sure that\nimages.*.injectRestartHelper is enabled for the container that should be restarted or the devspace-restart-helper\nscript is present in the container root folder." + }, + "exec": { + "items": { + "$ref": "#/$defs/SyncExec" + }, + "type": "array", + "description": "Exec will execute the given commands in order after a sync operation" + }, + "execRemote": { + "$ref": "#/$defs/SyncExecCommand", + "description": "Defines what commands should be executed on the container side if a change is uploaded and applied in the target\ncontainer" + } + }, + "type": "object", + "description": "SyncOnUpload defines the struct for the command that should be executed when files / folders are uploaded" + }, + "Terminal": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should be executed on terminal start.\nThis command is executed within a shell." + }, + "workDir": { + "type": "string", + "description": "WorkDir is the working directory that is used to execute the command in." + }, + "enabled": { + "type": "boolean", + "description": "If enabled is true, DevSpace will use the terminal. Can be also\nused to disable the terminal if set to false. DevSpace makes sure\nthat within a pipeline only one dev configuration can open a terminal\nat a time and subsequent dev terminals will fail." + }, + "disableReplace": { + "type": "boolean", + "description": "DisableReplace tells DevSpace to not replace the pod or adjust its settings\nto make sure the pod is sleeping when opening a terminal" + }, + "disableScreen": { + "type": "boolean", + "description": "DisableScreen will disable screen which is used by DevSpace by default to preserve\nsessions if connections interrupt or the session is lost." + } + }, + "type": "object", + "description": "Terminal describes the terminal options" + }, + "Toleration": { + "properties": { + "Key": { + "type": "string" + }, + "Operator": { + "type": "string" + }, + "Value": { + "type": "string" + }, + "Effect": { + "type": "string" + }, + "TolerationSeconds": { + "type": "integer" + } + }, + "type": "object", + "required": [ + "Key", + "Operator", + "Value", + "Effect", + "TolerationSeconds" + ] + }, + "Variable": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the variable" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "description": "Value is a shortcut for using source: none and default: my-value" + }, + "question": { + "type": "string", + "description": "Question can be used to define a custom question if the variable was not yet used" + }, + "default": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "description": "Default is the default value the variable should have if not set by the user" + }, + "options": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Options are options that can be selected when the variable question is asked" + }, + "password": { + "type": "boolean", + "description": "Password signals that this variable should not be visible if entered" + }, + "validationPattern": { + "type": "string", + "description": "ValidationPattern can be used to verify the user input" + }, + "validationMessage": { + "type": "string", + "description": "ValidationMessage can be used to tell the user the format of the variable value" + }, + "command": { + "type": "string", + "description": "Command is the command how to retrieve the variable. If args is omitted, command is parsed as a shell\ncommand." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional args that will be used for the command" + }, + "commands": { + "items": { + "$ref": "#/$defs/VariableCommand" + }, + "type": "array", + "description": "Commands are additional commands that can be used to run a different command on a different operating\nsystem." + }, + "noCache": { + "type": "boolean", + "description": "NoCache can be used to prompt the user on every run for this variable" + }, + "alwaysResolve": { + "type": "boolean", + "description": "AlwaysResolve makes sure this variable will always be resolved and not only if it is used somewhere" + }, + "source": { + "type": "string", + "enum": [ + "all", + "env", + "input", + "command", + "none" + ], + "description": "Source defines where the variable should be taken from" + } + }, + "type": "object", + "required": [ + "name" + ], + "description": "Variable describes the var definition" + }, + "VariableCommand": { + "properties": { + "os": { + "type": "string", + "description": "OperatingSystem is optional and defines the operating system this\ncommand should be executed on" + }, + "command": { + "type": "string", + "description": "Command is the command to use to retrieve the value for this variable. If no\nargs are specified the command is run within a pseudo shell." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional arguments for the command" + } + }, + "type": "object" + } + }, + "properties": { + "version": { + "type": "string", + "description": "Version holds the config version. DevSpace will always convert older configs to the current latest\nconfig version, which makes it possible to use the newest DevSpace version also with older config\nversions." + }, + "name": { + "type": "string", + "description": "Name specifies the name of the DevSpace project and uniquely identifies a project.\nDevSpace will not allow multiple active projects with the same name in the same Kubernetes namespace." + }, + "imports": { + "items": { + "$ref": "#/$defs/Import" + }, + "type": "array", + "description": "Imports merges specified config files into this one. This is very useful to split up your DevSpace configuration\ninto multiple files and reuse those through git, a remote url or common local path." + }, + "functions": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Functions are POSIX functions that can be used within pipelines. Those functions can also be imported by\nimports." + }, + "pipelines": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/Pipeline" + } + }, + "type": "object", + "description": "Pipelines are the work blocks that DevSpace should execute when devspace dev, devspace build, devspace deploy or devspace purge\nis called. Pipelines are defined through a special POSIX script that allows you to use special commands\nsuch as create_deployments, start_dev, build_images etc. to signal DevSpace you want to execute\na specific functionality. The pipelines dev, build, deploy and purge are special and will override\nthe default functionality of the respective command if defined. All other pipelines can be either run\nvia the devspace run-pipeline command or used within another pipeline through run_pipelines." + }, + "images": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/Image" + } + }, + "type": "object", + "description": "Images holds configuration of how DevSpace should build images. By default, DevSpace will build all defined images.\nIf you are using a custom pipeline, you can dynamically define which image is built at which time during the\nexecution." + }, + "deployments": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DeploymentConfig" + } + }, + "type": "object", + "description": "Deployments holds configuration of how DevSpace should deploy resources to Kubernetes. By default, DevSpace will deploy all defined deployments.\nIf you are using a custom pipeline, you can dynamically define which deployment is deployed at which time during the\nexecution." + }, + "dev": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DevPod" + } + }, + "type": "object", + "description": "Dev holds development configuration. Each dev configuration targets a single pod and enables certain dev services on that pod\nor even rewrites it if certain changes are requested, such as adding an environment variable or changing the entrypoint.\nDev allows you to:\n- sync local folders to the Kubernetes pod\n- port forward remote ports to your local computer\n- forward local ports into the Kubernetes pod\n- configure an ssh tunnel to the Kubernetes pod\n- proxy local commands to the container\n- restart the container on file changes" + }, + "vars": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/Variable" + } + }, + "type": "object", + "description": "Vars are config variables that can be used inside other config sections to replace certain values dynamically" + }, + "pullSecrets": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/PullSecretConfig" + } + }, + "type": "object", + "description": "PullSecrets are image pull secrets that will be created by devspace in the target namespace\nduring devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single\none or the one specified." + }, + "commands": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/CommandConfig" + } + }, + "type": "object", + "description": "Commands are custom commands that can be executed via 'devspace run COMMAND'. These commands are run within a pseudo bash\nthat also allows executing special commands such as run_watch or is_equal." + }, + "dependencies": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DependencyConfig" + } + }, + "type": "object", + "description": "Dependencies are sub devspace projects that lie in a local folder or remote git repository that can be executed\nfrom within the pipeline. In contrast to imports, these projects pose as separate fully functional DevSpace projects\nthat typically lie including source code in a different folder and can be used to compose a full microservice\napplication that will be deployed by DevSpace. Each dependency name can only be used once and if you want to use\nthe same project multiple times, make sure to use a different name for each of those instances." + }, + "require": { + "$ref": "#/$defs/RequireConfig", + "description": "Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not\nfulfilled, DevSpace will fail." + } + }, + "type": "object", + "required": [ + "version", + "name" + ], + "description": "Config defines the configuration" +} \ No newline at end of file diff --git a/docs/schemas/config-openapi.json b/docs/schemas/config-openapi.json new file mode 100644 index 0000000000..a0d2e370b9 --- /dev/null +++ b/docs/schemas/config-openapi.json @@ -0,0 +1,2047 @@ +{ + "swagger": "2.0", + "info": { + "version": "v2beta1", + "title": "devspace.yaml" + }, + "paths": {}, + "definitions": { + "Config": { + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/loft-sh/devspace/pkg/devspace/config/versions/latest/config", + "$defs": { + "Attach": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable attaching to a container" + }, + "disableReplace": { + "type": "boolean", + "description": "DisableReplace prevents DevSpace from actually replacing the pod with modifications so that\nthe pod starts up correctly." + }, + "disableTTY": { + "type": "boolean", + "description": "DisableTTY is used to tell DevSpace to not use a TTY connection for attaching" + } + }, + "type": "object" + }, + "BandwidthLimits": { + "properties": { + "download": { + "type": "integer", + "description": "Download is the download limit in kilo bytes per second" + }, + "upload": { + "type": "integer", + "description": "Upload is the upload limit in kilo bytes per second" + } + }, + "type": "object", + "description": "BandwidthLimits defines the struct for specifying the sync bandwidth limits" + }, + "BuildKitConfig": { + "properties": { + "inCluster": { + "$ref": "#/definitions/Config/$defs/BuildKitInClusterConfig", + "description": "InCluster if specified, DevSpace will use BuildKit to build the image within the cluster" + }, + "preferMinikube": { + "type": "boolean", + "description": "PreferMinikube if false, will not try to use the minikube docker daemon to build the image" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are additional arguments to call docker buildx build with" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command to override the base command to create a builder and build images. Defaults to [\"docker\", \"buildx\"]" + } + }, + "type": "object", + "description": "BuildKitConfig tells the DevSpace CLI to" + }, + "BuildKitInClusterConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the builder to use. If omitted, DevSpace will try to create\nor reuse a builder in the form devspace-$NAMESPACE" + }, + "namespace": { + "type": "string", + "description": "Namespace where to create the builder deployment in. Defaults to the current\nactive namespace." + }, + "rootless": { + "type": "boolean", + "description": "Rootless if enabled will create a rootless builder deployment." + }, + "image": { + "type": "string", + "description": "Image is the docker image to use for the BuildKit deployment" + }, + "nodeSelector": { + "type": "string", + "description": "NodeSelector is the node selector to use for the BuildKit deployment" + }, + "noCreate": { + "type": "boolean", + "description": "NoCreate. By default, DevSpace will try to create a new builder if it cannot be found.\nIf this is true, DevSpace will fail if the specified builder cannot be found." + }, + "noRecreate": { + "type": "boolean", + "description": "NoRecreate. By default, DevSpace will try to recreate the builder if the builder configuration\nin the devspace.yaml differs from the actual builder configuration. If this is\ntrue, DevSpace will not try to do that." + }, + "noLoad": { + "type": "boolean", + "description": "NoLoad if enabled, DevSpace will not try to load the built image into the local docker\ndaemon if skip push is defined" + }, + "createArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CreateArgs are additional args to create the builder with." + } + }, + "type": "object", + "description": "BuildKitInClusterConfig holds the buildkit builder config" + }, + "ChartConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the helm chart to deploy. Can also be a local path" + }, + "version": { + "type": "string", + "description": "Version is the version of the helm chart to deploy" + }, + "repo": { + "type": "string", + "description": "RepoURL is the url of the repo to deploy the chart from" + }, + "username": { + "type": "string", + "description": "Username is the username to authenticate to the chart repo" + }, + "password": { + "type": "string", + "description": "Password is the password to authenticate to the chart repo" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + } + }, + "type": "object", + "description": "ChartConfig defines the helm chart options" + }, + "CommandConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of a command that is used via `devspace run NAME`" + }, + "command": { + "type": "string", + "description": "Command is the command that should be executed. For example: 'echo 123'" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional and if defined, command is not executed within a shell\nand rather directly." + }, + "appendArgs": { + "type": "boolean", + "description": "AppendArgs will append arguments passed to the DevSpace command automatically to\nthe specified command." + }, + "description": { + "type": "string", + "description": "Description describes what the command is doing and can be seen in `devspace list commands`" + }, + "internal": { + "type": "boolean", + "description": "Internal commands are not show in list and are usable through run_command" + }, + "after": { + "type": "string", + "description": "After is executed after the command was run. It is executed also when\nthe command was interrupted which will set the env variable COMMAND_INTERRUPT\nto true as well as when the command errored which will set the error string to\nCOMMAND_ERROR." + } + }, + "type": "object", + "required": [ + "command" + ], + "description": "CommandConfig defines the command specification" + }, + "CustomConfig": { + "properties": { + "command": { + "type": "string", + "description": "Command to execute to build the image. You can use ${runtime.images.my-image.image} and ${runtime.image.my-image.tag}\nto reference the image and tag that should get built." + }, + "onChange": { + "items": { + "type": "string" + }, + "type": "array", + "description": "OnChange will determine when the command should be rerun" + } + }, + "type": "object", + "description": "CustomConfig tells the DevSpace CLI to build with a custom build script" + }, + "DependencyConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is used internally" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + }, + "pipeline": { + "type": "string", + "description": "Pipeline is the pipeline to deploy by default. Defaults to 'deploy'", + "default": "deploy", + "group": "execution", + "group_name": "Execution" + }, + "vars": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Vars are variables that should be passed to the dependency", + "group": "execution" + }, + "overwriteVars": { + "type": "boolean", + "description": "OverwriteVars specifies if DevSpace should pass the parent variables to the dependency", + "group": "execution" + }, + "ignoreDependencies": { + "type": "boolean", + "description": "IgnoreDependencies defines if dependencies of the dependency should be excluded", + "group": "execution" + }, + "namespace": { + "type": "string", + "description": "Namespace specifies the namespace this dependency should be deployed to", + "group": "execution" + } + }, + "type": "object", + "required": [ + "name" + ], + "description": "DependencyConfig defines the devspace dependency" + }, + "DeploymentConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name of the deployment" + }, + "helm": { + "$ref": "#/definitions/Config/$defs/HelmConfig", + "description": "Helm tells DevSpace to deploy this deployment via helm" + }, + "kubectl": { + "$ref": "#/definitions/Config/$defs/KubectlConfig", + "description": "Kubectl tells DevSpace to deploy this deployment via kubectl or kustomize" + }, + "updateImageTags": { + "type": "boolean", + "description": "UpdateImageTags lets you define if DevSpace should update the tags of the images defined in the\nimages section with their most recent built tag." + }, + "namespace": { + "type": "string", + "description": "Namespace where to deploy this deployment" + } + }, + "type": "object", + "description": "DeploymentConfig defines the configuration how the devspace should be deployed" + }, + "DevContainer": { + "properties": { + "container": { + "type": "string", + "description": "Container is the container name these services should get started.", + "group": "selector", + "group_name": "Selector" + }, + "arch": { + "type": "string", + "description": "Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but\ndevspace tries to find out the architecture by itself by looking at the node this container runs on.", + "group": "selector" + }, + "devImage": { + "type": "string", + "description": "DevImage is the image to use for this container and will replace the existing image\nif necessary.", + "group": "overwrites", + "group_name": "Overwrites" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command can be used to override the entrypoint of the container", + "group": "overwrites" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args can be used to override the args of the container", + "group": "overwrites" + }, + "workingDir": { + "type": "string", + "description": "WorkingDir can be used to override the working dir of the container", + "group": "overwrites" + }, + "env": { + "items": { + "$ref": "#/definitions/Config/$defs/EnvVar" + }, + "type": "array", + "description": "Env can be used to add environment variables to the container. DevSpace will\nnot replace existing environment variables if an environment variable is defined here.", + "group": "overwrites" + }, + "resources": { + "$ref": "#/definitions/Config/$defs/PodResources", + "description": "Resources can be used to override the resource definitions of the container", + "group": "overwrites" + }, + "reversePorts": { + "items": { + "$ref": "#/definitions/Config/$defs/PortMapping" + }, + "type": "array", + "description": "ReversePorts are port mappings to make local ports available inside the container", + "group": "ports", + "group_name": "Ports \u0026 Localhost Access" + }, + "sync": { + "items": { + "$ref": "#/definitions/Config/$defs/SyncConfig" + }, + "type": "array", + "description": "Sync allows you to sync certain local paths with paths inside the container", + "group": "files", + "group_name": "Files \u0026 Sync" + }, + "persistPaths": { + "items": { + "$ref": "#/definitions/Config/$defs/PersistentPath" + }, + "type": "array", + "description": "SSH allows you to create an SSH tunnel to this container", + "group": "files" + }, + "terminal": { + "$ref": "#/definitions/Config/$defs/Terminal", + "description": "Terminal allows you to tell DevSpace to open a terminal with screen support to this container", + "group": "devWorkflow", + "group_name": "Dev Workflow" + }, + "logs": { + "$ref": "#/definitions/Config/$defs/Logs", + "description": "Logs allows you to tell DevSpace to stream logs from this container to the console", + "group": "devWorkflow" + }, + "attach": { + "$ref": "#/definitions/Config/$defs/Attach", + "description": "Attach allows you to tell DevSpace to attach to this container", + "group": "devWorkflow" + }, + "ssh": { + "$ref": "#/definitions/Config/$defs/SSH", + "description": "PersistPaths allows you to persist certain paths within this container with a persistent volume claim", + "group": "devWorkflow" + }, + "proxyCommands": { + "items": { + "$ref": "#/definitions/Config/$defs/ProxyCommand" + }, + "type": "array", + "description": "ProxyCommands allow you to proxy certain local commands to the container", + "group": "devWorkflow" + }, + "restartHelper": { + "$ref": "#/definitions/Config/$defs/RestartHelper", + "description": "RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of\nthe container and restarting it and is injected via an annotation in the replaced pod.", + "group": "devWorkflow" + } + }, + "type": "object", + "description": "DevContainer holds options for dev services that should get started within a certain container of the selected pod" + }, + "DevPod": { + "properties": { + "name": { + "type": "string", + "description": "Name of the dev configuration" + }, + "imageSelector": { + "type": "string", + "description": "ImageSelector to select a pod", + "group": "selector" + }, + "labelSelector": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "LabelSelector to select a pod", + "group": "selector" + }, + "namespace": { + "type": "string", + "description": "Namespace where to select the pod", + "group": "selector" + }, + "container": { + "type": "string", + "description": "Container is the container name these services should get started.", + "group": "selector", + "group_name": "Selector" + }, + "arch": { + "type": "string", + "description": "Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but\ndevspace tries to find out the architecture by itself by looking at the node this container runs on.", + "group": "selector" + }, + "devImage": { + "type": "string", + "description": "DevImage is the image to use for this container and will replace the existing image\nif necessary.", + "group": "overwrites", + "group_name": "Overwrites" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command can be used to override the entrypoint of the container", + "group": "overwrites" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args can be used to override the args of the container", + "group": "overwrites" + }, + "workingDir": { + "type": "string", + "description": "WorkingDir can be used to override the working dir of the container", + "group": "overwrites" + }, + "env": { + "items": { + "$ref": "#/definitions/Config/$defs/EnvVar" + }, + "type": "array", + "description": "Env can be used to add environment variables to the container. DevSpace will\nnot replace existing environment variables if an environment variable is defined here.", + "group": "overwrites" + }, + "resources": { + "$ref": "#/definitions/Config/$defs/PodResources", + "description": "Resources can be used to override the resource definitions of the container", + "group": "overwrites" + }, + "reversePorts": { + "items": { + "$ref": "#/definitions/Config/$defs/PortMapping" + }, + "type": "array", + "description": "ReversePorts are port mappings to make local ports available inside the container", + "group": "ports", + "group_name": "Ports \u0026 Localhost Access" + }, + "sync": { + "items": { + "$ref": "#/definitions/Config/$defs/SyncConfig" + }, + "type": "array", + "description": "Sync allows you to sync certain local paths with paths inside the container", + "group": "files", + "group_name": "Files \u0026 Sync" + }, + "persistPaths": { + "items": { + "$ref": "#/definitions/Config/$defs/PersistentPath" + }, + "type": "array", + "description": "SSH allows you to create an SSH tunnel to this container", + "group": "files" + }, + "terminal": { + "$ref": "#/definitions/Config/$defs/Terminal", + "description": "Terminal allows you to tell DevSpace to open a terminal with screen support to this container", + "group": "devWorkflow", + "group_name": "Dev Workflow" + }, + "logs": { + "$ref": "#/definitions/Config/$defs/Logs", + "description": "Logs allows you to tell DevSpace to stream logs from this container to the console", + "group": "devWorkflow" + }, + "attach": { + "$ref": "#/definitions/Config/$defs/Attach", + "description": "Attach allows you to tell DevSpace to attach to this container", + "group": "devWorkflow" + }, + "ssh": { + "$ref": "#/definitions/Config/$defs/SSH", + "description": "PersistPaths allows you to persist certain paths within this container with a persistent volume claim", + "group": "devWorkflow" + }, + "proxyCommands": { + "items": { + "$ref": "#/definitions/Config/$defs/ProxyCommand" + }, + "type": "array", + "description": "ProxyCommands allow you to proxy certain local commands to the container", + "group": "devWorkflow" + }, + "restartHelper": { + "$ref": "#/definitions/Config/$defs/RestartHelper", + "description": "RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of\nthe container and restarting it and is injected via an annotation in the replaced pod.", + "group": "devWorkflow" + }, + "ports": { + "items": { + "$ref": "#/definitions/Config/$defs/PortMapping" + }, + "type": "array", + "description": "Ports defines port mappings from the remote pod that should be forwarded to your local\ncomputer", + "group": "ports" + }, + "open": { + "items": { + "$ref": "#/definitions/Config/$defs/OpenConfig" + }, + "type": "array", + "description": "Open defines urls that should be opened as soon as they are reachable", + "group": "ports" + }, + "persistenceOptions": { + "$ref": "#/definitions/Config/$defs/PersistenceOptions", + "description": "PersistenceOptions are additional options for persisting paths within this pod", + "group": "files" + }, + "patches": { + "items": { + "$ref": "#/definitions/Config/$defs/PatchConfig" + }, + "type": "array", + "description": "Patches are additional changes to the pod spec that should be applied", + "group": "overwrites" + }, + "containers": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/DevContainer" + } + }, + "type": "object", + "group": "selector" + } + }, + "type": "object", + "description": "DevPod holds configurations for selecting a pod and starting dev services for that pod" + }, + "DockerConfig": { + "properties": { + "disableFallback": { + "type": "boolean", + "description": "DisableFallback allows you to turn off kaniko building if docker isn't installed" + }, + "preferMinikube": { + "type": "boolean", + "description": "PreferMinikube allows you to turn off using the minikube docker daemon if the minikube\ncontext is used." + }, + "useCli": { + "type": "boolean", + "description": "UseCLI specifies if DevSpace should use the docker cli for building" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are additional arguments to pass to the docker cli" + } + }, + "type": "object", + "description": "DockerConfig tells the DevSpace CLI to build with Docker on Minikube or on localhost" + }, + "EnvVar": { + "properties": { + "name": { + "type": "string", + "description": "Name of the environment variable" + }, + "value": { + "type": "string", + "description": "Value of the environment variable" + } + }, + "type": "object", + "required": [ + "name", + "value" + ] + }, + "HelmConfig": { + "properties": { + "chart": { + "$ref": "#/definitions/Config/$defs/ChartConfig", + "description": "Chart holds the chart configuration and where DevSpace can find the chart" + }, + "values": { + "type": "object", + "description": "Values are additional values that should get passed to deploying this chart" + }, + "valuesFiles": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ValuesFiles are additional files that hold values for deploying this chart" + }, + "displayOutput": { + "type": "boolean", + "description": "DisplayOutput allows you to display the helm output to the console" + }, + "upgradeArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "UpgradeArgs are additional arguments to pass to `helm upgrade`" + }, + "templateArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "TemplateArgs are additional arguments to pass to `helm template`" + } + }, + "type": "object", + "description": "HelmConfig defines the specific helm options used during deployment" + }, + "Image": { + "properties": { + "name": { + "type": "string", + "description": "Name of the image, will be filled automatically" + }, + "image": { + "type": "string", + "description": "Image is the complete image name including registry and repository\nfor example myregistry.com/mynamespace/myimage" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Tags is an array that specifies all tags that should be build during\nthe build process. If this is empty, devspace will generate a random tag" + }, + "dockerfile": { + "type": "string", + "description": "Dockerfile specifies a path (relative or absolute) to the dockerfile. Defaults\nto ./Dockerfile", + "default": "./Dockerfile" + }, + "context": { + "type": "string", + "description": "Context is the context path to build with. Defaults to the current working directory", + "default": "./" + }, + "skipPush": { + "type": "boolean", + "description": "SkipPush will not push the image to a registry if enabled. Only works if docker or buildkit is chosen\nas build method" + }, + "createPullSecret": { + "type": "boolean", + "description": "CreatePullSecret specifies if a pull secret should be created for this image in the\ntarget namespace. Defaults to true" + }, + "entrypoint": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Entrypoint specifies an entrypoint that will be appended to the dockerfile during\nimage build in memory. Example: [\"sleep\", \"99999\"]", + "group": "overwrites", + "group_name": "In-Memory Overwrites" + }, + "cmd": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Cmd specifies the arguments for the entrypoint that will be appended\nduring build in memory to the dockerfile", + "group": "overwrites" + }, + "appendDockerfileInstructions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "AppendDockerfileInstructions are instructions that will be appended to the Dockerfile that is build\nat the current build target and are appended before the entrypoint and cmd instructions", + "group": "overwrites" + }, + "buildArgs": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "BuildArgs are the build args that are to the build", + "group": "buildConfig", + "group_name": "Build Configuration" + }, + "target": { + "type": "string", + "description": "Target is the target that should get used during the build. Only works if the dockerfile supports this", + "group": "buildConfig" + }, + "network": { + "type": "string", + "description": "Network is the network that should get used to build the image", + "group": "buildConfig" + }, + "rebuildStrategy": { + "type": "string", + "enum": [ + "default", + "always", + "ignoreContextChanges" + ], + "description": "RebuildStrategy is used to determine when DevSpace should rebuild an image. By default, devspace will\nrebuild an image if one of the following conditions is true:\n- The dockerfile has changed\n- The configuration within the devspace.yaml for the image has changed\n- A file within the docker context (excluding .dockerignore rules) has changed\nThis option is ignored for custom builds.", + "group": "buildConfig" + }, + "buildKit": { + "$ref": "#/definitions/Config/$defs/BuildKitConfig", + "description": "BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit", + "group": "engines", + "group_name": "Build Engines" + }, + "docker": { + "$ref": "#/definitions/Config/$defs/DockerConfig", + "description": "Docker if docker is specified, DevSpace will build the image using the local docker daemon", + "group": "engines" + }, + "kaniko": { + "$ref": "#/definitions/Config/$defs/KanikoConfig", + "description": "Kaniko if kaniko is specified, DevSpace will build the image in-cluster with kaniko", + "group": "engines" + }, + "custom": { + "$ref": "#/definitions/Config/$defs/CustomConfig", + "description": "Custom if custom is specified, DevSpace will build the image with the help of\na custom script.", + "group": "engines" + } + }, + "type": "object", + "required": [ + "image", + "dockerfile" + ], + "description": "Image defines the image specification" + }, + "Import": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled specifies if the given import should be enabled" + }, + "path": { + "type": "string", + "description": "Path is the local path where DevSpace can find the artifact.\nThis option is mutually exclusive with the path option.", + "group": "path", + "group_name": "Source: Local Filesystem" + }, + "git": { + "type": "string", + "description": "Git is the remote repository to download the artifact from. You can either use\nhttps projects or ssh projects here, but need to make sure git can pull the project.\nThis option is mutually exclusive with the path option.", + "group": "git", + "group_name": "Source: Git Repository" + }, + "subPath": { + "type": "string", + "description": "SubPath is a path within the git repository where the artifact lies in", + "group": "git" + }, + "branch": { + "type": "string", + "description": "Branch is the git branch to pull", + "group": "git" + }, + "tag": { + "type": "string", + "description": "Tag is the tag to pull", + "group": "git" + }, + "revision": { + "type": "string", + "description": "Revision is the git revision to pull", + "group": "git" + }, + "cloneArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CloneArgs are additional arguments that should be supplied to the git CLI", + "group": "git" + }, + "disableShallow": { + "type": "boolean", + "description": "DisableShallow can be used to turn off shallow clones as these are the default used\nby devspace", + "group": "git" + }, + "disablePull": { + "type": "boolean", + "description": "DisablePull will disable pulling every time DevSpace is reevaluating this source", + "group": "git" + } + }, + "type": "object", + "description": "Import specifies the source of the devspace config to merge" + }, + "KanikoAdditionalMount": { + "properties": { + "secret": { + "$ref": "#/definitions/Config/$defs/KanikoAdditionalMountSecret", + "description": "The secret that should be mounted" + }, + "configMap": { + "$ref": "#/definitions/Config/$defs/KanikoAdditionalMountConfigMap", + "description": "The configMap that should be mounted" + }, + "readOnly": { + "type": "boolean", + "description": "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false.\n+optional" + }, + "mountPath": { + "type": "string", + "description": "Path within the container at which the volume should be mounted. Must\nnot contain ':'." + }, + "subPath": { + "type": "string", + "description": "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root).\n+optional" + } + }, + "type": "object", + "description": "KanikoAdditionalMount tells devspace how the additional mount of the kaniko pod should look like" + }, + "KanikoAdditionalMountConfigMap": { + "properties": { + "name": { + "type": "string", + "description": "Name of the configmap\n+optional" + }, + "items": { + "items": { + "$ref": "#/definitions/Config/$defs/KanikoAdditionalMountKeyToPath" + }, + "type": "array", + "description": "If unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "description": "Optional: mode bits to use on created files by default. Must be a\nvalue between 0 and 0777. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object" + }, + "KanikoAdditionalMountKeyToPath": { + "properties": { + "key": { + "type": "string", + "description": "The key to project." + }, + "path": { + "type": "string", + "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." + }, + "mode": { + "type": "integer", + "description": "Optional: mode bits to use on this file, must be a value between 0\nand 0777. If not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object", + "required": [ + "key", + "path" + ] + }, + "KanikoAdditionalMountSecret": { + "properties": { + "name": { + "type": "string", + "description": "Name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n+optional" + }, + "items": { + "items": { + "$ref": "#/definitions/Config/$defs/KanikoAdditionalMountKeyToPath" + }, + "type": "array", + "description": "If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "description": "Optional: mode bits to use on created files by default. Must be a\nvalue between 0 and 0777. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "KanikoConfig": { + "properties": { + "cache": { + "type": "boolean", + "description": "Cache tells DevSpace if a cache repository should be used. defaults to false" + }, + "snapshotMode": { + "type": "string", + "description": "SnapshotMode tells DevSpace which snapshot mode kaniko should use. defaults to time" + }, + "image": { + "type": "string", + "description": "Image is the image name of the kaniko pod to use" + }, + "initImage": { + "type": "string", + "description": "InitImage to override the init image of the kaniko pod" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args for additional arguments that should be passed to kaniko" + }, + "command": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Command to replace the starting command for the kaniko container" + }, + "namespace": { + "type": "string", + "description": "Namespace is the namespace where the kaniko pod should be run" + }, + "insecure": { + "type": "boolean", + "description": "Insecure allows pushing to insecure registries" + }, + "pullSecret": { + "type": "string", + "description": "PullSecret is the pull secret to mount by default" + }, + "skipPullSecretMount": { + "type": "boolean", + "description": "SkipPullSecretMount will skip mounting the pull secret" + }, + "nodeSelector": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "NodeSelector is the node selector to use for the kaniko pod" + }, + "tolerations": { + "items": { + "$ref": "#/definitions/Config/$defs/Toleration" + }, + "type": "array", + "description": "Tolerations is a tolerations list to use for the kaniko pod" + }, + "serviceAccount": { + "type": "string", + "description": "ServiceAccount the service account to use for the kaniko pod" + }, + "annotations": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Annotations are extra annotations that will be added to the build pod" + }, + "labels": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Labels are extra labels that will be added to the build pod" + }, + "initEnv": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "InitEnv are extra environment variables that will be added to the build init container" + }, + "env": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Env are extra environment variables that will be added to the build kaniko container\nWill populate the env.value field." + }, + "envFrom": { + "patternProperties": { + ".*": { + "type": "object" + } + }, + "type": "object", + "description": "EnvFrom are extra environment variables from configmap or secret that will be added to the build kaniko container\nWill populate the env.valueFrom field." + }, + "additionalMounts": { + "items": { + "$ref": "#/definitions/Config/$defs/KanikoAdditionalMount" + }, + "type": "array", + "description": "AdditionalMounts are additional mounts that will be added to the build pod" + }, + "resources": { + "$ref": "#/definitions/Config/$defs/PodResources", + "description": "Resources are the resources that should be set on the kaniko pod" + } + }, + "type": "object", + "description": "KanikoConfig tells the DevSpace CLI to build with Docker on Minikube or on localhost" + }, + "KubectlConfig": { + "properties": { + "manifests": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Manifests is a list of files or folders that will be deployed by DevSpace using kubectl\nor kustomize" + }, + "applyArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ApplyArgs are extra arguments for `kubectl apply`" + }, + "createArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "CreateArgs are extra arguments for `kubectl create` which will be run before `kubectl apply`" + }, + "kubectlBinaryPath": { + "type": "string", + "description": "KubectlBinaryPath is the optional path where to finde the kubectl binary" + }, + "kustomize": { + "type": "boolean", + "description": "Kustomize can be used to enable kustomize instead of kubectl" + }, + "kustomizeArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "KustomizeArgs are extra arguments for `kustomize build` which will be run before `kubectl apply`" + }, + "kustomizeBinaryPath": { + "type": "string", + "description": "KustomizeBinaryPath is the optional path where to find the kustomize binary" + } + }, + "type": "object", + "description": "KubectlConfig defines the specific kubectl options used during deployment" + }, + "Logs": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable printing container logs" + }, + "lastLines": { + "type": "integer", + "description": "LastLines is the amount of lines to print of the running container initially" + } + }, + "type": "object" + }, + "OpenConfig": { + "properties": { + "url": { + "type": "string", + "description": "URL is the url to open in the browser after it is available" + } + }, + "type": "object", + "description": "OpenConfig defines what to open after services have been started" + }, + "PatchConfig": { + "properties": { + "op": { + "type": "string", + "description": "Operation is the path operation to do. Can be either replace, add or remove" + }, + "path": { + "type": "string", + "description": "Path is the config path to apply the patch to" + }, + "value": { + "description": "Value is the value to use for this patch." + } + }, + "type": "object", + "required": [ + "op", + "path" + ], + "description": "PatchConfig describes a config patch and how it should be applied" + }, + "PersistenceOptions": { + "properties": { + "size": { + "type": "string", + "description": "Size is the size of the created persistent volume in Kubernetes size notation like 5Gi" + }, + "storageClassName": { + "type": "string", + "description": "StorageClassName is the storage type DevSpace should use for this persistent volume" + }, + "accessModes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "AccessModes are the access modes DevSpace should use for the persistent volume" + }, + "readOnly": { + "type": "boolean", + "description": "ReadOnly specifies if the volume should be read only" + }, + "name": { + "type": "string", + "description": "Name is the name of the PVC that should be created. If a PVC with that name\nalready exists, DevSpace will use that PVC instead of creating one." + } + }, + "type": "object", + "description": "PersistenceOptions are general persistence options DevSpace should use for all persistent paths within a single dev configuration" + }, + "PersistentPath": { + "properties": { + "path": { + "type": "string", + "description": "Path is the container path that should get persisted. By default, DevSpace will create an init container\nthat will copy over the contents of this folder from the existing image." + }, + "volumePath": { + "type": "string", + "description": "VolumePath is the sub path on the volume that is mounted as persistent volume for this path" + }, + "readOnly": { + "type": "boolean", + "description": "ReadOnly will make the persistent path read only to the user" + }, + "skipPopulate": { + "type": "boolean", + "description": "SkipPopulate will not create an init container to copy over the existing contents if true" + }, + "initContainer": { + "$ref": "#/definitions/Config/$defs/PersistentPathInitContainer", + "description": "InitContainer holds additional options for the persistent path init container" + } + }, + "type": "object", + "description": "PersistentPath holds options to configure persistence for DevSpace" + }, + "PersistentPathInitContainer": { + "properties": { + "resources": { + "$ref": "#/definitions/Config/$defs/PodResources", + "description": "Resources are the resources used by the persistent path init container" + } + }, + "type": "object", + "description": "PersistentPathInitContainer defines additional options for the persistent path init container" + }, + "Pipeline": { + "properties": { + "name": { + "type": "string", + "enum": [ + "dev", + "deploy", + "build", + "purge", + ".*" + ], + "description": "Name of the pipeline, will be filled automatically" + }, + "run": { + "type": "string", + "description": "Run is the actual shell command that should be executed during this pipeline" + }, + "flags": { + "items": { + "$ref": "#/definitions/Config/$defs/PipelineFlag" + }, + "type": "array", + "description": "Flags are extra flags that can be used for running the pipeline via\ndevspace run-pipeline." + }, + "continueOnError": { + "type": "boolean", + "description": "ContinueOnError will not fail the whole job and pipeline if\na call within the step fails." + } + }, + "type": "object", + "description": "Pipeline defines what DevSpace should do." + }, + "PipelineFlag": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the flag" + }, + "short": { + "type": "string", + "description": "Short is optional and is the shorthand name for this flag. E.g. 'g' converts to '-g'" + }, + "type": { + "type": "string", + "enum": [ + "bool", + "int", + "string", + "stringArray" + ], + "description": "Type is the type of the flag. Defaults to `bool`" + }, + "default": { + "description": "Default is the default value for this flag" + }, + "description": { + "type": "string", + "description": "Description is the description as shown in `devspace run-pipeline my-pipe -h`" + } + }, + "type": "object", + "description": "PipelineFlag defines an extra pipeline flag" + }, + "PodResources": { + "properties": { + "requests": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Requests are the requests part of the resources" + }, + "limits": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Limits are the limits part of the resources" + } + }, + "type": "object", + "description": "PodResources describes the resources section of the started kaniko pod" + }, + "PortMapping": { + "properties": { + "port": { + "type": "string", + "description": "Port is a port mapping that maps the localPort:remotePort. So if\nyou port forward the remote port will be available at the local port.\nIf you do reverse port forwarding, the local port will be available\nat the remote port in the container. If only port is specified, local and\nremote port are the same." + }, + "bindAddress": { + "type": "string", + "description": "BindAddress is the address DevSpace should listen on. Optional and defaults\nto localhost." + } + }, + "type": "object", + "required": [ + "port" + ], + "description": "PortMapping defines the ports for a PortMapping" + }, + "ProxyCommand": { + "properties": { + "gitCredentials": { + "type": "boolean", + "description": "GitCredentials configures a git credentials helper inside the container that proxies local git credentials" + }, + "command": { + "type": "string", + "description": "Command is the name of the command that should be available in the remote container. DevSpace\nwill create a small script for that inside the container that redirect command execution to\nthe local computer." + }, + "localCommand": { + "type": "string", + "description": "LocalCommand can be used to run a different command than specified via the command option. By\ndefault, this will be assumed to be the same as command." + }, + "skipContainerEnv": { + "type": "boolean", + "description": "SkipContainerEnv will not forward the container environment variables to the local command" + }, + "env": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Env are extra environment variables to set for the command" + } + }, + "type": "object" + }, + "PullSecretConfig": { + "properties": { + "name": { + "type": "string", + "description": "Name is the pull secret name to deploy" + }, + "registry": { + "type": "string", + "description": "The registry to create the image pull secret for.\nEmpty string == docker hub\ne.g. gcr.io" + }, + "username": { + "type": "string", + "description": "The username of the registry. If this is empty, devspace will try\nto receive the auth data from the local docker" + }, + "password": { + "type": "string", + "description": "The password to use for the registry. If this is empty, devspace will\ntry to receive the auth data from the local docker" + }, + "email": { + "type": "string", + "description": "The optional email to use" + }, + "secret": { + "type": "string", + "description": "The secret to create" + }, + "serviceAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The service account to add the secret to" + } + }, + "type": "object", + "description": "PullSecretConfig defines a pull secret that should be created by DevSpace" + }, + "RequireCommand": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the command that should be installed" + }, + "versionArgs": { + "items": { + "type": "string" + }, + "type": "array", + "description": "VersionArgs are the arguments to retrieve the version of the command" + }, + "versionRegEx": { + "type": "string", + "description": "VersionRegEx is the regex that is used to parse the version" + }, + "version": { + "type": "string", + "description": "Version constraint of the command that should be installed" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "RequireConfig": { + "properties": { + "devspace": { + "type": "string", + "description": "DevSpace specifies the DevSpace version constraint that is needed to use this config" + }, + "commands": { + "items": { + "$ref": "#/definitions/Config/$defs/RequireCommand" + }, + "type": "array", + "description": "Commands specifies an array of commands that need to be installed locally to use this config" + }, + "plugins": { + "items": { + "$ref": "#/definitions/Config/$defs/RequirePlugin" + }, + "type": "array", + "description": "Plugins specifies an array of plugins that need to be installed locally" + } + }, + "type": "object" + }, + "RequirePlugin": { + "properties": { + "name": { + "type": "string", + "description": "Name of the plugin that should be installed" + }, + "version": { + "type": "string", + "description": "Version constraint of the plugin that should be installed" + } + }, + "type": "object", + "required": [ + "name", + "version" + ] + }, + "RestartHelper": { + "properties": { + "path": { + "type": "string", + "description": "Path defines the path to the restart helper that might be used if certain config\noptions are enabled" + }, + "inject": { + "type": "boolean", + "description": "Inject signals DevSpace to inject the restart helper" + } + }, + "type": "object" + }, + "SSH": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enabled can be used to enable the ssh server within the container. By default,\nDevSpace will generate the required keys and create an entry in your ~/.ssh/config\nfor this container that can be used via `ssh dev-config-name.dev-project-name.devspace`" + }, + "localHostname": { + "type": "string", + "description": "LocalHostname is the local ssh host to write to the ~/.ssh/config" + }, + "localPort": { + "type": "integer", + "description": "LocalPort is the local port to forward from, if empty will be random" + }, + "remoteAddress": { + "type": "string", + "description": "RemoteAddress is the address to listen to inside the container" + } + }, + "type": "object" + }, + "SyncCommand": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should get executed" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments that should get appended to the command" + } + }, + "type": "object", + "description": "SyncCommand holds a command definition" + }, + "SyncConfig": { + "properties": { + "printLogs": { + "type": "boolean", + "description": "PrintLogs defines if sync logs should be displayed on the terminal" + }, + "startContainer": { + "type": "boolean", + "description": "StartContainer will start the container after initial sync is done. This will\ninject a devspacehelper into the pod and you need to define dev.*.command for\nthis to work." + }, + "path": { + "type": "string", + "description": "Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.'\nto specify either the local or remote working directory. This is valid for example: .:." + }, + "excludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "ExcludePaths is an array of file patterns in gitignore format to exclude." + }, + "excludeFile": { + "type": "string", + "description": "ExcludeFile loads the file patterns to exclude from a file." + }, + "downloadExcludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading" + }, + "downloadExcludeFile": { + "type": "string", + "description": "DownloadExcludeFile loads the file patterns to exclude from downloading from a file." + }, + "uploadExcludePaths": { + "items": { + "type": "string" + }, + "type": "array", + "description": "UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading" + }, + "uploadExcludeFile": { + "type": "string", + "description": "UploadExcludeFile loads the file patterns to exclude from uploading from a file." + }, + "initialSync": { + "type": "string", + "description": "InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal" + }, + "initialSyncCompareBy": { + "type": "string", + "description": "InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible" + }, + "disableDownload": { + "type": "boolean", + "description": "DisableDownload will disable downloading completely" + }, + "disableUpload": { + "type": "boolean", + "description": "DisableUpload will disable uploading completely" + }, + "noWatch": { + "type": "boolean", + "description": "NoWatch will terminate the sync after the initial sync is done" + }, + "polling": { + "type": "boolean", + "description": "Polling will tell the remote container to use polling instead of inotify" + }, + "waitInitialSync": { + "type": "boolean", + "description": "WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done" + }, + "bandwidthLimits": { + "$ref": "#/definitions/Config/$defs/BandwidthLimits", + "description": "BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this\nsync configuration" + }, + "onUpload": { + "$ref": "#/definitions/Config/$defs/SyncOnUpload", + "description": "OnUpload can be used to execute certain commands on uploading either in the container or locally as\nwell as restart the container after a file changed has happened." + } + }, + "type": "object", + "description": "SyncConfig defines the paths for a SyncFolder" + }, + "SyncExec": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name to show for this exec in the logs" + }, + "command": { + "type": "string", + "description": "Command is the command to execute. If no args are specified this is executed\nwithin a shell." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments to pass to the command" + }, + "failOnError": { + "type": "boolean", + "description": "FailOnError specifies if the sync should fail if the command fails" + }, + "local": { + "type": "boolean", + "description": "Local specifies if the command should be executed locally instead of within the\ncontainer" + }, + "onChange": { + "items": { + "type": "string" + }, + "type": "array", + "description": "OnChange is an array of file patterns that trigger this command execution" + } + }, + "type": "object" + }, + "SyncExecCommand": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should get executed" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are arguments that should get appended to the command" + }, + "onFileChange": { + "$ref": "#/definitions/Config/$defs/SyncCommand", + "description": "OnFileChange is invoked after every file change. DevSpace will wait for the command to successfully finish\nand then will continue to upload files \u0026 create folders" + }, + "onDirCreate": { + "$ref": "#/definitions/Config/$defs/SyncCommand", + "description": "OnDirCreate is invoked after every directory that is created. DevSpace will wait for the command to successfully finish\nand then will continue to upload files \u0026 create folders" + }, + "onBatch": { + "$ref": "#/definitions/Config/$defs/SyncCommand", + "description": "OnBatch executes the given command after a batch of changes has been processed. DevSpace will wait for the command to finish\nand then will continue execution. This is useful for commands\nthat shouldn't be executed after every single change that may take a little bit longer like recompiling etc." + } + }, + "type": "object", + "description": "SyncExecCommand holds the configuration of commands that should be executed when files / folders are change" + }, + "SyncOnUpload": { + "properties": { + "restartContainer": { + "type": "boolean", + "description": "If true restart container will try to restart the container after a change has been made. Make sure that\nimages.*.injectRestartHelper is enabled for the container that should be restarted or the devspace-restart-helper\nscript is present in the container root folder." + }, + "exec": { + "items": { + "$ref": "#/definitions/Config/$defs/SyncExec" + }, + "type": "array", + "description": "Exec will execute the given commands in order after a sync operation" + }, + "execRemote": { + "$ref": "#/definitions/Config/$defs/SyncExecCommand", + "description": "Defines what commands should be executed on the container side if a change is uploaded and applied in the target\ncontainer" + } + }, + "type": "object", + "description": "SyncOnUpload defines the struct for the command that should be executed when files / folders are uploaded" + }, + "Terminal": { + "properties": { + "command": { + "type": "string", + "description": "Command is the command that should be executed on terminal start.\nThis command is executed within a shell." + }, + "workDir": { + "type": "string", + "description": "WorkDir is the working directory that is used to execute the command in." + }, + "enabled": { + "type": "boolean", + "description": "If enabled is true, DevSpace will use the terminal. Can be also\nused to disable the terminal if set to false. DevSpace makes sure\nthat within a pipeline only one dev configuration can open a terminal\nat a time and subsequent dev terminals will fail." + }, + "disableReplace": { + "type": "boolean", + "description": "DisableReplace tells DevSpace to not replace the pod or adjust its settings\nto make sure the pod is sleeping when opening a terminal" + }, + "disableScreen": { + "type": "boolean", + "description": "DisableScreen will disable screen which is used by DevSpace by default to preserve\nsessions if connections interrupt or the session is lost." + } + }, + "type": "object", + "description": "Terminal describes the terminal options" + }, + "Toleration": { + "properties": { + "Key": { + "type": "string" + }, + "Operator": { + "type": "string" + }, + "Value": { + "type": "string" + }, + "Effect": { + "type": "string" + }, + "TolerationSeconds": { + "type": "integer" + } + }, + "type": "object", + "required": [ + "Key", + "Operator", + "Value", + "Effect", + "TolerationSeconds" + ] + }, + "Variable": { + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the variable" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "description": "Value is a shortcut for using source: none and default: my-value" + }, + "question": { + "type": "string", + "description": "Question can be used to define a custom question if the variable was not yet used" + }, + "default": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "description": "Default is the default value the variable should have if not set by the user" + }, + "options": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Options are options that can be selected when the variable question is asked" + }, + "password": { + "type": "boolean", + "description": "Password signals that this variable should not be visible if entered" + }, + "validationPattern": { + "type": "string", + "description": "ValidationPattern can be used to verify the user input" + }, + "validationMessage": { + "type": "string", + "description": "ValidationMessage can be used to tell the user the format of the variable value" + }, + "command": { + "type": "string", + "description": "Command is the command how to retrieve the variable. If args is omitted, command is parsed as a shell\ncommand." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional args that will be used for the command" + }, + "commands": { + "items": { + "$ref": "#/definitions/Config/$defs/VariableCommand" + }, + "type": "array", + "description": "Commands are additional commands that can be used to run a different command on a different operating\nsystem." + }, + "noCache": { + "type": "boolean", + "description": "NoCache can be used to prompt the user on every run for this variable" + }, + "alwaysResolve": { + "type": "boolean", + "description": "AlwaysResolve makes sure this variable will always be resolved and not only if it is used somewhere" + }, + "source": { + "type": "string", + "enum": [ + "all", + "env", + "input", + "command", + "none" + ], + "description": "Source defines where the variable should be taken from" + } + }, + "type": "object", + "required": [ + "name" + ], + "description": "Variable describes the var definition" + }, + "VariableCommand": { + "properties": { + "os": { + "type": "string", + "description": "OperatingSystem is optional and defines the operating system this\ncommand should be executed on" + }, + "command": { + "type": "string", + "description": "Command is the command to use to retrieve the value for this variable. If no\nargs are specified the command is run within a pseudo shell." + }, + "args": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Args are optional arguments for the command" + } + }, + "type": "object" + } + }, + "properties": { + "version": { + "type": "string", + "description": "Version holds the config version. DevSpace will always convert older configs to the current latest\nconfig version, which makes it possible to use the newest DevSpace version also with older config\nversions." + }, + "name": { + "type": "string", + "description": "Name specifies the name of the DevSpace project and uniquely identifies a project.\nDevSpace will not allow multiple active projects with the same name in the same Kubernetes namespace." + }, + "imports": { + "items": { + "$ref": "#/definitions/Config/$defs/Import" + }, + "type": "array", + "description": "Imports merges specified config files into this one. This is very useful to split up your DevSpace configuration\ninto multiple files and reuse those through git, a remote url or common local path." + }, + "functions": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object", + "description": "Functions are POSIX functions that can be used within pipelines. Those functions can also be imported by\nimports." + }, + "pipelines": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/Pipeline" + } + }, + "type": "object", + "description": "Pipelines are the work blocks that DevSpace should execute when devspace dev, devspace build, devspace deploy or devspace purge\nis called. Pipelines are defined through a special POSIX script that allows you to use special commands\nsuch as create_deployments, start_dev, build_images etc. to signal DevSpace you want to execute\na specific functionality. The pipelines dev, build, deploy and purge are special and will override\nthe default functionality of the respective command if defined. All other pipelines can be either run\nvia the devspace run-pipeline command or used within another pipeline through run_pipelines." + }, + "images": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/Image" + } + }, + "type": "object", + "description": "Images holds configuration of how DevSpace should build images. By default, DevSpace will build all defined images.\nIf you are using a custom pipeline, you can dynamically define which image is built at which time during the\nexecution." + }, + "deployments": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/DeploymentConfig" + } + }, + "type": "object", + "description": "Deployments holds configuration of how DevSpace should deploy resources to Kubernetes. By default, DevSpace will deploy all defined deployments.\nIf you are using a custom pipeline, you can dynamically define which deployment is deployed at which time during the\nexecution." + }, + "dev": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/DevPod" + } + }, + "type": "object", + "description": "Dev holds development configuration. Each dev configuration targets a single pod and enables certain dev services on that pod\nor even rewrites it if certain changes are requested, such as adding an environment variable or changing the entrypoint.\nDev allows you to:\n- sync local folders to the Kubernetes pod\n- port forward remote ports to your local computer\n- forward local ports into the Kubernetes pod\n- configure an ssh tunnel to the Kubernetes pod\n- proxy local commands to the container\n- restart the container on file changes" + }, + "vars": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/Variable" + } + }, + "type": "object", + "description": "Vars are config variables that can be used inside other config sections to replace certain values dynamically" + }, + "pullSecrets": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/PullSecretConfig" + } + }, + "type": "object", + "description": "PullSecrets are image pull secrets that will be created by devspace in the target namespace\nduring devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single\none or the one specified." + }, + "commands": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/CommandConfig" + } + }, + "type": "object", + "description": "Commands are custom commands that can be executed via 'devspace run COMMAND'. These commands are run within a pseudo bash\nthat also allows executing special commands such as run_watch or is_equal." + }, + "dependencies": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/Config/$defs/DependencyConfig" + } + }, + "type": "object", + "description": "Dependencies are sub devspace projects that lie in a local folder or remote git repository that can be executed\nfrom within the pipeline. In contrast to imports, these projects pose as separate fully functional DevSpace projects\nthat typically lie including source code in a different folder and can be used to compose a full microservice\napplication that will be deployed by DevSpace. Each dependency name can only be used once and if you want to use\nthe same project multiple times, make sure to use a different name for each of those instances." + }, + "require": { + "$ref": "#/definitions/Config/$defs/RequireConfig", + "description": "Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not\nfulfilled, DevSpace will fail." + } + }, + "type": "object", + "required": [ + "version", + "name" + ], + "description": "Config defines the configuration" + } + } +} diff --git a/docs/sidebars.js b/docs/sidebars.js index 6ee89d2579..a8a80dcbf8 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -1,66 +1,58 @@ -/** - * Copyright (c) 2017-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - module.exports = { adminSidebar: [ - { - type: 'doc', - id: 'introduction', - }, { type: 'category', label: 'Getting Started', - collapsed: false, + link: { type: 'doc', id: 'getting-started/introduction' }, items: [ - { - type: 'doc', - id: 'quickstart', - }, - { - type: 'category', - label: 'Full Guide', - items: [ - 'getting-started/installation', - 'getting-started/initialize-project', - 'getting-started/development', - 'getting-started/deployment', - 'getting-started/cleanup', - 'getting-started/next-steps', - ], - }, + 'getting-started/installation', + 'getting-started/initialize-project', + 'getting-started/development', + 'getting-started/cleanup', + // 'getting-started/next-steps', ], }, { type: 'category', - label: 'Configuration', - collapsed: false, + label: 'devspace.yaml', + className: 'code-style', + link: { type: 'doc', id: 'configuration/reference' }, items: [ - 'configuration/reference', + 'configuration/imports/README', + 'configuration/functions/README', + 'configuration/pipelines/README', { type: 'category', label: 'images', + link: { type: 'doc', id: 'configuration/images/README' }, items: [ - 'configuration/images/basics', - 'configuration/images/image-tagging', - 'configuration/images/dockerfile-context', - 'configuration/images/entrypoint-cmd', - 'configuration/images/append-dockerfile-instructions', - 'configuration/images/inject-restart-helper', - 'configuration/images/rebuild-strategy', - 'configuration/images/pull-secrets', + 'configuration/images/build', + 'configuration/images/tag', + 'configuration/images/push', + 'configuration/images/pull', + /* + { + type: 'category', + label: 'Registry Auth', + link: { type: 'doc', id: 'configuration/images/registries/README' }, + items: [ + 'configuration/images/registries/docker-hub', + 'configuration/images/registries/github', + 'configuration/images/registries/aws', + 'configuration/images/registries/google', + 'configuration/images/registries/azure', + 'configuration/images/registries/other', + ], + },*/ { type: 'category', - label: 'build', + label: 'Build Engines', + link: { type: 'doc', id: 'configuration/images/build-engines/README' }, items: [ - 'configuration/images/docker', - 'configuration/images/buildkit', - 'configuration/images/kaniko', - 'configuration/images/custom', - 'configuration/images/disabled', + 'configuration/images/build-engines/docker', + 'configuration/images/build-engines/buildkit', + 'configuration/images/build-engines/kaniko', + 'configuration/images/build-engines/custom', ], }, ], @@ -68,227 +60,119 @@ module.exports = { { type: 'category', label: 'deployments', + link: { type: 'doc', id: 'configuration/deployments/README' }, items: [ - 'configuration/deployments/basics', - 'configuration/deployments/helm-charts', - 'configuration/deployments/kubernetes-manifests', - 'configuration/deployments/kustomizations', { - type: 'link', - label: '↗️ Component Chart', - href: 'https://devspace.sh/component-chart/docs', + type: 'category', + label: 'helm', + collapsible: false, + link: { type: 'doc', id: 'configuration/deployments/helm/README' }, + items: [ + 'configuration/deployments/helm/values', + { + type: 'category', + label: 'Chart', + collapsible: false, + link: { type: 'doc', id: 'configuration/deployments/helm/chart/README' }, + items: [ + 'configuration/deployments/helm/chart/component-chart', + 'configuration/deployments/helm/chart/local', + 'configuration/deployments/helm/chart/remote', + ], + }, + ], + }, + { + type: 'category', + label: 'kubectl', + collapsible: false, + link: { type: 'doc', id: 'configuration/deployments/kubectl/README' }, + items: [ + 'configuration/deployments/kubectl/manifests', + 'configuration/deployments/kubectl/kustomizations', + ], }, ], }, { type: 'category', label: 'dev', + link: { type: 'doc', id: 'configuration/dev/README' }, items: [ - 'configuration/development/basics', - 'configuration/development/port-forwarding', - 'configuration/development/reverse-port-forwarding', - 'configuration/development/open-links', - 'configuration/development/file-synchronization', - 'configuration/development/terminal', - 'configuration/development/log-streaming', - 'configuration/development/replace-pods', - 'configuration/development/auto-reloading', + { + type: 'category', + label: '1. Select Dev Container', + collapsible: false, + link: { type: 'doc', id: 'configuration/dev/selectors/README' }, + className: "extra-indent", + items: [ + 'configuration/dev/selectors/image', + 'configuration/dev/selectors/labels', + ], + }, + { + type: 'category', + label: '2. Add Dev Connections', + collapsible: false, + link: { type: 'doc', id: 'configuration/dev/connections/README' }, + className: "extra-indent", + items: [ + 'configuration/dev/connections/file-sync', + 'configuration/dev/connections/port-forwarding', + 'configuration/dev/connections/terminal', + 'configuration/dev/connections/ssh', + 'configuration/dev/connections/restart-helper', + 'configuration/dev/connections/proxy-commands', + 'configuration/dev/connections/open', + ], + }, + { + type: 'category', + label: '3. Modify Dev Container', + collapsible: false, + link: { type: 'doc', id: 'configuration/dev/modifications/README' }, + className: "extra-indent", + items: [ + 'configuration/dev/modifications/dev-image', + 'configuration/dev/modifications/env-vars', + 'configuration/dev/modifications/entrypoint', + 'configuration/dev/modifications/workdir', + 'configuration/dev/modifications/persistence', + 'configuration/dev/modifications/resources', + 'configuration/dev/modifications/patches', + ], + }, ], }, + 'configuration/commands/README', { type: 'category', label: 'dependencies', + link: { type: 'doc', id: 'configuration/dependencies/README' }, items: [ - 'configuration/dependencies/basics', 'configuration/dependencies/git-repository', 'configuration/dependencies/local-folder', ], }, - { - type: 'category', - label: 'vars', - items: [ - 'configuration/variables/basics', - 'configuration/variables/source-env', - 'configuration/variables/source-input', - 'configuration/variables/source-command', - 'configuration/variables/source-none', - 'configuration/variables/predefined-variables', - 'configuration/variables/runtime-variables', - ], - }, - { - type: 'category', - label: 'profiles', - items: [ - 'configuration/profiles/basics', - 'configuration/profiles/replace', - 'configuration/profiles/merge', - 'configuration/profiles/patches', - 'configuration/profiles/parents', - 'configuration/profiles/activation', - ], - }, - 'configuration/pullSecrets/basics', - 'configuration/commands/basics', - 'configuration/hooks/basics', - 'configuration/require/basics', + 'configuration/pullSecrets/README', + 'configuration/require/README', + 'configuration/variables', 'configuration/expressions', - 'configuration/env-file', - ], - }, - { - type: 'category', - label: 'Guides & Best Practices', - items: [ - 'guides/basics', - 'guides/localhost-ui', - 'guides/networking-domains', - 'guides/file-synchronization', - 'guides/ci-cd-integration', - 'guides/dev-staging-production', - 'guides/image-building', - 'guides/plugins', - 'guides/remote-debugging', - 'guides/community-projects', ], }, { type: 'category', - label: 'Tutorials', + label: 'devspace --help', + className: 'code-style', + link: { type: 'doc', id: 'cli' }, items: [ { - type: 'link', - label: 'Ruby on Rails', - href: 'https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes', - }, - { - type: 'link', - label: 'Python Django', - href: 'https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes', - }, - { - type: 'link', - label: 'PHP Laravel', - href: 'https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes', - }, - { - type: 'category', - label: 'Node / JavaScript', - items: [ - { - type: 'link', - label: 'Express.js', - href: 'https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes', - }, - { - type: 'link', - label: 'React.js', - href: 'https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes', - }, - { - type: 'link', - label: 'Vue.js', - href: 'https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes', - }, - ] + type: 'autogenerated', + dirName: 'cli', + className: 'code-style', }, ], }, - { - type: 'category', - label: 'CLI Commands', - items: [ - { - type: "category", - label: "devspace add", - items: [ - "commands/devspace_add_plugin", - ] - }, - "commands/devspace_analyze", - "commands/devspace_attach", - "commands/devspace_build", - "commands/devspace_cleanup_images", - "commands/devspace_deploy", - "commands/devspace_dev", - "commands/devspace_enter", - "commands/devspace_init", - { - type: "category", - label: "devspace list", - items: [ - "commands/devspace_list_commands", - "commands/devspace_list_contexts", - "commands/devspace_list_deployments", - "commands/devspace_list_namespaces", - "commands/devspace_list_plugins", - "commands/devspace_list_ports", - "commands/devspace_list_profiles", - "commands/devspace_list_sync", - "commands/devspace_list_vars" - ] - }, - "commands/devspace_logs", - "commands/devspace_open", - "commands/devspace_print", - "commands/devspace_purge", - { - type: "category", - label: "devspace remove", - items: [ - "commands/devspace_remove_context", - "commands/devspace_remove_plugin" - ] - }, - "commands/devspace_render", - { - type: "category", - label: "devspace reset", - items: [ - "commands/devspace_reset_dependencies", - "commands/devspace_reset_vars" - ] - }, - "commands/devspace_run", - { - type: "category", - label: "devspace set", - items: [ - "commands/devspace_set_var" - ] - }, - "commands/devspace_sync", - "commands/devspace_ui", - { - type: "category", - label: "devspace update", - items: [ - "commands/devspace_update_plugin", - "commands/devspace_update_dependencies" - ] - }, - "commands/devspace_upgrade", - { - type: "category", - label: "devspace use", - items: [ - "commands/devspace_use_context", - "commands/devspace_use_namespace", - "commands/devspace_use_profile" - ] - } - ], - }, - { - type: 'link', - label: '↗️ Component Chart', - href: 'https://devspace.sh/component-chart/docs', - }, - { - type: 'link', - label: '↗️ Open-Source by Loft Labs', - href: 'https://loft.sh/', - }, + "plugins/README", ], }; diff --git a/docs/src/css/content/code.scss b/docs/src/css/content/code.scss new file mode 100644 index 0000000000..be65223091 --- /dev/null +++ b/docs/src/css/content/code.scss @@ -0,0 +1,94 @@ +.theme-code-block { + margin-top: var(--ifm-pre-padding); +} + +.docusaurus-highlight-code-line { + background-color: rgb(72, 77, 91); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); + } + + html body .markdown button[aria-label="Copy code to clipboard"], + html body pre.prism-code > button { + z-index: 1; + border: none; + background: var(--ifm-color-primary-lighter); + color: #fff; + text-transform: uppercase; + font-size: 0.8em; + font-weight: 700; + border-radius: 3px; + padding: 0.6em 0.8em; + margin-top: -0.2em; + letter-spacing: 0.1em; + transition: background-color 0.3s; + } + + html body .markdown button[aria-label="Copy code to clipboard"]:hover, + html body pre.prism-code > button:hover { + background: var(--ifm-color-primary-darker); + } + + .theme-code-block { + border-radius: 4px; + } + + body .prism-code, + code { + counter-reset: linenumber; + } + + body .prism-code .token-line, + code > .token-line { + counter-increment: linenumber; + } + + body .prism-code .token-line::before, + code > .token-line::before { + width: 1em; + content: counter(linenumber); + color: #fff; + display: block; + float: left; + padding-right: 0.8em; + text-align: right; + opacity: 0.6; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + body .prism-code .token-line:first-child:last-child::before, + code > .token-line:first-child:last-child::before { + display: none; + } + + body .prism-code .token-line, + code .token-line { + padding-right: 2em; + } + + .prism-code { + .token { + &.key { + color: rgb(45, 178, 255); + + ~ .punctuation { + color: rgb(150, 150, 150) !important; + } + } + + &.punctuation, + &.plain { + color: #fff !important; + } + } + } + + .markdown *:not(pre) > code, + .contents code { + white-space: nowrap; + } diff --git a/docs/src/css/content/config-fields.scss b/docs/src/css/content/config-fields.scss new file mode 100644 index 0000000000..f7d587164f --- /dev/null +++ b/docs/src/css/content/config-fields.scss @@ -0,0 +1,295 @@ +body .markdown .config-field { + --docusaurus-details-decoration-color: #ccc; + + padding: 1em 1.4em; + border: 1px solid transparent; + border-bottom-color: #eee; + border-top-color: #eee; + + + .config-field { + border-top-color: transparent; + } + + margin: var(--ifm-leading) 0 0; + + + .config-field { + margin: 0; + } + + .config-field { + margin: 0; + border-top-color: transparent; + + &:last-of-type { + border-bottom-color: transparent; + } + } + + background: transparent; + box-shadow: none; + font-size: 1rem; /* must reset font-size to prevent nested fields getting smaller */ + + &[open], + &[data-expandable="false"] { + &[data-expandable="true"] { + border-color: #eee; + } + + &[data-expandable="false"] { + > summary { + cursor: text; + padding-bottom: 0.2em; + + &::before { + display: none; + } + + ~ * { + display: none !important; + } + } + } + + > summary{ + &::before { + transform: rotate(-90deg); + } + + p:first-of-type { + max-height: none; + white-space: inherit; + opacity: 1; + overflow: visible; + } + } + } + + p, + summary + * { + display: inline-block; + font-size: 0.85rem; + color: rgb(117, 117, 117); + line-height: 1.2em; + font-weight: 400; + } + + summary { + padding-left: 0; + min-height: 2.4em; + + &::before { + left: auto; + right: 0; + margin-top: 0.4em; + transform: rotate(90deg); + } + + > * { + display: none; + } + + p:first-of-type { + display: block; + max-width: 96%; + max-height: 1.6em; + padding-top: 0.4em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + opacity: 0.7; + transition: all 0.5s; + } + + h2, + h3, + h4, + h5, + h6 { + display: block; + + code { + font-weight: 600; + background: none; + border: none; + letter-spacing: 0.03em; + padding: 0; + } + + &:target { + &, + & ~ * { + &::before { + display: none; + } + } + } + } + + .config-field-required, + .config-field-type, + .config-field-enum, + .config-field-default { + display: inline-block; + margin-left: 0.5em; + font-size: 0.7em; + line-height: 1em; + } + + .config-field-type, + .config-field-enum, + .config-field-default { + font-family: var(--ifm-font-family-monospace); + } + + .config-field-default { + color: rgb(19, 19, 189); + + &:empty { + display: none; + } + + &::before { + content: "default: "; + display: inline-block; + margin-right: 0.15em; + } + + &.-return::before { + content: "returns: "; + margin-right: 0.3em; + } + } + + .config-field-type, + .config-field-enum { + color: rgb(147, 147, 147); + } + + .config-field-enum { + position: relative; + display: inline-block; + height: 0.8em; + overflow: visible; + + &:empty { + display: none; + } + + &::before { + content: "values: "; + display: inline; + float: left; + margin-right: 0.7em; + } + + > span { + display: table-caption; + width: 100%; + border: 1px solid #eee; + background: #fff; + z-index: 1; + padding: 0.3em 1.4em 0.3em 0.5em; + line-height: 1.2em; + max-height: 1.8em; + overflow: hidden; + transition: max-height 0.4s; + border-radius: 3px; + text-align: left; + transform: translateY(-0.48em); + + &:hover { + max-height: 1000px; + + &::after { + transform: rotate(-90deg); + } + } + + &::after { + position: absolute; + right: 0.1em; + left: auto; + top: 0.45em; + content: ''; + border-width: calc(var(--docusaurus-details-summary-arrow-size) / 1.4); + border-style: solid; + border-color: transparent transparent transparent var(--docusaurus-details-decoration-color); + transform: rotate(90deg); + transition: var(--docusaurus-details-transition); + transform-origin: calc(var(--docusaurus-details-summary-arrow-size) / 2.8) 50%; + } + } + } + + .config-field-required { + color: rgb(187, 7, 7); + text-transform: uppercase; + + &[data-required="false"] { + display: none; + } + } + /* + .hash-link { + position: absolute; + left: -1.4em; + top: 0.1em; + + &:focus { + opacity: 0; + } + }*/ + + + * { + &, + & > * { + border-top: none; + margin-top: 0; + padding-top: 0.2em; + } + + /* 2nd-level config fields */ + details { + margin-bottom: 0; + + &[data-expandable="true"] { + &:first-of-type { + margin-top: 1em; + } + + &[open] { + border-color: #eee; + } + } + } + } + } + + p:last-child, + details:not([data-expandable="true"]):last-child { + margin-bottom: 0; + padding-bottom: 0; + } +} + +.group { + margin-top: 1em; + border: 1px solid #2156f2; + + .group-name { + padding: 0.3em 0 0.3em 1.3em; + font-weight: 600; + background: #2156f2; + color: #fff; + font-size: 0.9em; + } + + > details:first-of-type { + margin-top: 0 !important; + } + + > details:last-of-type { + padding-bottom: 1.2em !important; + margin-bottom: 0 !important; + } +} diff --git a/docs/src/css/content/images.scss b/docs/src/css/content/images.scss new file mode 100644 index 0000000000..b199152500 --- /dev/null +++ b/docs/src/css/content/images.scss @@ -0,0 +1,43 @@ +.medium-zoom-overlay { + z-index: 5000; + background: rgb(36 36 36 / 54%) !important; +} + +.medium-zoom-image.medium-zoom-image--opened { + z-index: 5001; +} + +.markdown figure { + margin: 1em 0 2em; +} + +.markdown figure:last-child { + margin-bottom: 1.2em; +} + +.markdown figure.stretch, +.markdown figure.stretch img { + width: 100%; +} + +.markdown figure.frame img, +.markdown figure.frame video { + width: 100%; + box-shadow: 0 0 7px 5px #00000009; + border: 1.5px solid #c6cbd1; + border-radius: 4px; +} + +.markdown figcaption { + position: relative; + left: 0; + width: 100%; + top: 0; + margin-top: 5px; + outline: 0; + text-align: center; + z-index: 300; + font-size: 14px; + line-height: 1.4; + letter-spacing: 0; +} diff --git a/docs/src/css/content/layout.scss b/docs/src/css/content/layout.scss new file mode 100644 index 0000000000..ea24d9f9ab --- /dev/null +++ b/docs/src/css/content/layout.scss @@ -0,0 +1,3 @@ +body .theme-doc-version-badge { + visibility: hidden; +} diff --git a/docs/src/css/content/markdown.scss b/docs/src/css/content/markdown.scss new file mode 100644 index 0000000000..b179ea5cbc --- /dev/null +++ b/docs/src/css/content/markdown.scss @@ -0,0 +1,251 @@ +body .markdown { + position: relative; + --ifm-h2-vertical-rhythm-top: 1.8; + --ifm-list-margin: 0.25em; +} + +.markdown pre, +.markdown ul, +.markdown ol, +.markdown p { + &:not(:first-child) { + margin-top: var(--ifm-leading); + margin-bottom: 0; + + &:is(ul, ol) { + margin-top: calc(2*var(--ifm-list-margin)) !important; + } + } +} + +.markdown h1:first-child { + font-size: 2.5rem; +} + +.markdown summary { + font-weight: 500; +} + +.markdown ul > li { + margin-top: 0 !important; +} + +.markdown > h2 { + margin-top: 2em !important; +} + +.markdown > *:not(header) + h2 { + line-height: 1em; + border-top: 1px solid #f1f1f1; + padding-top: 1.8em; +} + +.markdown h3 { + margin-top: 2.8em; + line-height: 0.6em; +} + +.markdown .step_src-components-Step- { + margin-top: 0.8em !important; +} + +.markdown .step_src-components-Step- + h2, +.markdown .step_src-components-Step- + h3, +.markdown .step_src-components-Step- + h4, +.markdown .step_src-components-Step- + h5, +.markdown .step_src-components-Step- + p { + display: inline-block; + margin-top: 1em; + margin-bottom: 0.9em; +} + +.markdown .admonition { + margin-top: var(--ifm-leading); + + *:last-child { + margin-bottom: 0 !important; + } + + .admonition-heading { + code { + text-transform: none; + padding: 0.3em 0.5em; + } + } +} + +.markdown pre code { + padding-right: 0; +} + +.markdown pre code .token-line { + display: table; + min-width: 100%; + max-width: none; + width: auto; + padding-right: 3em !important; + margin-right: 0 !important; +} + +.markdown pre code .token-line.docusaurus-highlight-code-line { + min-width: calc(100% + 1.1em); +} + +.markdown .codeBlockTitle_node_modules-\@docusaurus-theme-classic-src-theme-CodeBlock- { + background: transparent!important; + display: none; +} + +.markdown [role="tab"], +.markdown .prism-code, +code { + outline: none; +} + +html body .markdown button[aria-label="Copy code to clipboard"], +html body pre.prism-code > button { + margin-top: 0.45em !important; + box-shadow: 0 0 0 8px #292d3e; +} + +.markdown * { + position: relative; +} + +.hash-link, +.hash-link:hover { + color: orange; + text-decoration: none; +} + +.markdown :target, +h2:target ~ *:not(h2, h2:target ~ *:is(h2):not(:target) ~ *), +h3:target ~ *:not(h2, h3, h3:target ~ *:is(h2, h3):not(:target) ~ *), +h4:target ~ *:not(h2, h3, h4, h4:target ~ *:is(h2, h3, h4):not(:target) ~ *) { + &:is(:not(details *))::before { + content: " "; + width: 4px; + position: absolute; + left: -16px; + top: -40px; + bottom: calc(-1.5*var(--ifm-paragraph-margin-bottom)); + background: orange; + z-index: -1; + + @media (min-width: 1660px) { + & { + left: -30px; + } + } + } + + &:is(h2):target::before { + top: 25px; + } + + &.admonition::before { + margin-left: -4px; + } + + &:is(.config-field, .group)::before { + margin-left: -1px; + } + + &:is(details) { + &::before { + margin-left: -4px; + } + } +} + + +span:target::before { + bottom: -5px; +} + +details .active-section::before { + display: none; +} + +blockquote.active-section::before { + left: -25px; +} + +.markdown h4 { + font-size: 1.15em; + margin-bottom: 0.4em; +} + +.markdown h2:not(:first-of-type) { + margin-top: 3em; +} + +.markdown summary > * { + display: inline; + font-size: inherit; + font-weight: inherit; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.markdown h2 + h3 { + margin-top: 1.5em !important; +} + +h3.active-section::before { + top: -2.4em; +} + +*:not(.active-section) + h2.active-section::before, +*:not(.active-section) + h3.active-section::before { + top: -0.5em; +} + +.markdown button { + background: #4191f7; + border: none; + color: #fff; + border-radius: 4px; + padding: 0.6em 1em; + margin: 0 0.2em; + font-size: 0.9em; + cursor: inherit; + letter-spacing: 0.5px; +} + +.markdown p > button { + pointer-events: none; +} + +.markdown button svg { + transform: scale(1.4); +} + +.markdown details { + --docusaurus-details-decoration-color: #00bdff; + --ifm-tabs-color-active-border: #00bdff !important; + --docusaurus-details-transition: transform var(--ifm-transition-fast) ease; + margin: var(--ifm-spacing-vertical) 0; + border-color: #00bdff; + border-style: solid; + border-width: var(--ifm-alert-border-width); + border-left-width: 4px; + border-left-color: transparent; + background: #fff; + border-radius: 0; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 5px 0px; +} + +.markdown .admonition { + margin-left: -1px; + border-radius: 4px; +} + +.-contains-target-link { + box-shadow: 0 0 14px 0 orange !important; + border-color: transparent !important; + transform: scale(1.01); + z-index: 1; + position: relative; + background: #fff !important; +} diff --git a/docs/src/css/content/mermaid.scss b/docs/src/css/content/mermaid.scss new file mode 100644 index 0000000000..8bd7dcccdc --- /dev/null +++ b/docs/src/css/content/mermaid.scss @@ -0,0 +1,65 @@ +.mermaid { + display: flex; + flex-direction: column; + align-items: center; + margin: 3em 0 3.5em; +} + +.mermaid img { + max-width: none; +} + +.mermaid .node rect { + transform: scale(0.96) translateX(2px); +} + +.mermaid .nodeLabel { + padding: 0.3em; +} + +.mermaid .edgeLabel { + padding: 0.3em 0.5em; + text-align: center; + border-radius: 5px; +} + +.mermaid .edgeLabel:empty { + display: none; +} + +.mermaid .node.loft rect { + fill: #00bdff !important; +} + +.mermaid .node.loft img { + max-width: none; + padding-top: 5px; + padding-left: 5px; + filter: grayscale(1) brightness(100); +} + +.mermaid .node.code rect { + fill: #263544 !important; +} + +.mermaid .node.yaml foreignObject { + padding-top: 0.2em; +} + +.mermaid code, .mermaid pre { + display: inline-block; + background: transparent; + border: none; + padding: 0; + margin: 0; + text-align: left; +} + +.mermaid code::before { + display: inline-block; + content: '$'; + font-weight: bold; + padding-right: 0.5em; + color: #00bdff; + transform: translateY(-0.06em) +} diff --git a/docs/src/css/content/steps.scss b/docs/src/css/content/steps.scss new file mode 100644 index 0000000000..de624789c8 --- /dev/null +++ b/docs/src/css/content/steps.scss @@ -0,0 +1,15 @@ +.step_src-components-Step-.active-section::before, +.step_src-components-Step- + h2.active-section::before, +.step_src-components-Step- + h3.active-section::before, +.step_src-components-Step- + h4.active-section::before { + display: none; +} + +.step_src-components-Step- + h2.active-section + .active-section::before { + top: -5rem; +} + +.step_src-components-Step- + h3.active-section + .active-section::before, +.step_src-components-Step- + h4.active-section + .active-section::before { + top: -3.5rem; +} diff --git a/docs/src/css/content/tabs.scss b/docs/src/css/content/tabs.scss new file mode 100644 index 0000000000..71792b4578 --- /dev/null +++ b/docs/src/css/content/tabs.scss @@ -0,0 +1,53 @@ +.tabs { + border-bottom: 1px solid var(--ifm-color-primary-lightest); +} + +.tabs > .tab-item { + border-radius: 0; + padding: 0.6em 1.2em; +} + +.tabs > .tab-item:focus, +.tabs > .tab-item:hover { + background-color: #f2f9fb; +} + +ul[role="tablist"] { + border-bottom: none; +} + +ul[role="tablist"] li, +ul[role="tablist"] li:hover { + background: transparent; + padding: 0.5em 1.2em; + white-space: nowrap; +} + +ul[role="tablist"] li:not([aria-selected="true"]):hover { + border-bottom-color: #a6acd0; +} + +[role="tabpanel"] { + background-color: #fff; + padding: 1.3em; + margin: -1em -5px 0; + border: 1px solid #d2e8fd !important; + border-radius: 5px; +} + +.tabs-container:last-child > *:last-child { + margin-bottom: 0 !important; +} + +[role="tabpanel"] > :first-child { + margin-top: 0; +} + +[role="tabpanel"] > :last-child { + margin-bottom: 0; +} + +.tabs__item { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} diff --git a/docs/src/css/content/version-banner.scss b/docs/src/css/content/version-banner.scss new file mode 100644 index 0000000000..37b8752205 --- /dev/null +++ b/docs/src/css/content/version-banner.scss @@ -0,0 +1,12 @@ +.theme-doc-version-banner { + margin-bottom: 2em !important; + + &::before { + display: block; + content: "You are viewing the documentation of an older DevSpace version. Use the version selector next to the logo to switch to the latest version."; + } + + > * { + display: none; + } +} diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css deleted file mode 100644 index 776b4f8303..0000000000 --- a/docs/src/css/custom.css +++ /dev/null @@ -1,600 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - - .table-of-contents__link { - position: relative; -} - -.table-of-contents__link--active::before { - content: " "; - background: var(--ifm-color-primary); - position: absolute; - left: -17px; - top: -5px; - bottom: -5px; - width: 6px; -} - -ul ul .table-of-contents__link--active::before { - left: -32px; -} - - -.menu__link { - display: block; - width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - - -.menu::-webkit-scrollbar, -.menu::-webkit-scrollbar-thumb, -.menu::-webkit-scrollbar-track { - transition: all 0.3s !important; - border-radius: 0 !important; -} - -.menu:not(:hover)::-webkit-scrollbar, -.menu:not(:hover)::-webkit-scrollbar-thumb, -.menu:not(:hover)::-webkit-scrollbar-track { - background-color: #fff !important; -} - -.menu__list { - margin-right: 0; -} - -.menu__link { - outline: none; - font-weight: 400; -} - -.menu__list-item > .menu__list .menu__list-item { - margin: 0 !important; - padding: 0 0 0.2em 0.8em; -} - -.menu__list-item > .menu__list .menu__link { - position: relative; - margin: 0 !important; - padding: 0.1em 0 0.1em 0.2em; - background: transparent; -} - -.menu__link--sublist + .menu__list > .menu__list-item:first-child { - margin-top: 0.3em !important; -} - -.menu__list-item > .menu__list .menu__link:hover { - color: var(--ifm-color-primary); -} - -.menu__list-item > .menu__list .menu__link--active { - font-weight: 600; -} - -.menu > .menu__list > .menu__list-item > .menu__link--sublist { - color: var(--ifm-menu-color)!important; - font-weight: 500; - text-transform: uppercase; -} - -.markdown figure figcaption { - z-index: 1; -} - -.markdown p + ul { - margin-top: -1.2em !important; - margin-bottom: 1.4em !important; -} - -.markdown ul > li { - margin-top: 0 !important; -} - -.markdown h2, -.markdown h3 { - margin-top: 2.4em; - line-height: 1em; -} - -.markdown .step_src-components-Step- { - margin-top: 0.8em !important; -} - -.markdown .step_src-components-Step- + h2, -.markdown .step_src-components-Step- + h3, -.markdown .step_src-components-Step- + h4, -.markdown .step_src-components-Step- + h5, -.markdown .step_src-components-Step- + p { - display: inline-block; - margin-top: 1em; - margin-bottom: 0.9em; -} - -:root { - --ifm-color-info: #077EEC; - --ifm-color-success: rgb(64, 185, 255); - --ifm-color-warning: #ED7200; - --ifm-color-error: #C21B1B; -} - -ul[role="tablist"] { - margin-top: -0.6em; - border-bottom: none; -} - -ul[role="tablist"] li, -ul[role="tablist"] li:hover { - background: transparent; - padding: 0.5em 1.2em; -} - -ul[role="tablist"] li:not([aria-selected="true"]):hover { - border-bottom-color: #a6acd0; -} - -[role="tabpanel"] { - background-color: #f7f8fc; - padding: 1.3em; - padding-bottom: 0em; - margin: 0 -1.3em 1.8em !important; - border: 1px solid #d2e8fd !important; - border-radius: 5px; -} - -[role="tabpanel"] [role="tabpanel"] { - background-color: #fff; - margin-left: -5px !important; - margin-right: -5px !important; - border-radius: 3px; -} - -.tabs + div { - margin-top: 0 !important; -} - -.tabs__item { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.markdown p + ul, -.markdown p + ol { - margin-top: calc(-0.5 * var(--ifm-paragraph-margin-bottom)); - margin-bottom: calc(0.8 * var(--ifm-paragraph-margin-bottom)); -} - -.markdown .admonition { - margin-left: -1px; - border-radius: 4px; -} - -.admonition-note code { - background: #cdcdcd; -} - -.markdown .codeBlockTitle_node_modules-\@docusaurus-theme-classic-src-theme-CodeBlock- { - background: transparent!important; - display: none; -} - -.markdown [role="tab"], -.markdown .prism-code, -code { - outline: none; -} - -.markdown [role="tab"] .comment, -.markdown .prism-code .comment, -code .comment { - user-select: none; -} - -html body .markdown button[aria-label="Copy code to clipboard"], -html body pre.prism-code > button { - margin-top: 0.25em !important; - box-shadow: 0 0 0 8px #292d3e; -} - -.active-section, -[id^="fn-"] { - position: relative; -} - -[id^="fn-"] { - display: block; - text-indent: -0.8em; - padding-left: 0.8em; -} - -.active-section::before, -span:target::before { - content: " "; - width: 3px; - position: absolute; - left: -17px; - top: -10px; - bottom: calc(-1*var(--ifm-paragraph-margin-bottom)); - background: #077EEC; -} - -@media (min-width: 1500px) { - .active-section::before, - span:target::before { - left: -40px; - } -} - - -span:target::before { - bottom: -5px; -} - -details .active-section::before { - display: none; -} - -blockquote.active-section::before { - left: -25px; -} - -.markdown h4 { - font-size: 1.15em; - margin-bottom: 0.4em; -} - -.markdown h2 + h3 { - margin-top: 1.5em !important; -} - -h3.active-section::before { - top: -2.4em; -} - -*:not(.active-section) + h2.active-section::before, -*:not(.active-section) + h3.active-section::before { - top: -0.5em; -} - -.step_src-components-Step-.active-section::before, -.step_src-components-Step- + h2.active-section::before, -.step_src-components-Step- + h3.active-section::before, -.step_src-components-Step- + h4.active-section::before { - display: none; -} - -.step_src-components-Step- + h2.active-section + .active-section::before { - top: -5rem; -} - -.step_src-components-Step- + h3.active-section + .active-section::before, -.step_src-components-Step- + h4.active-section + .active-section::before { - top: -3.5rem; -} - -.embed-container { - position: relative; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; - max-width: 100%; -} - -.embed-container iframe, -.embed-container object, -.embed-container embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -table thead > tr { - border-top: none; -} - -table th:first-child:empty { - opacity: 0; - border: none; -} - -.container > .row > .col > div { - display: flex; - flex-direction: column; -} - -/* Button: Edit this page */ -.container > .row > .col > div > .margin-vert--xl { - order: -1; - height: 3em; - margin: 0 !important; - text-align: right; -} - -/* Button: Edit this page */ -.container > .row > .col > div > .margin-vert--xl a { - padding: 0.3em 0.5em; - background: var(--ifm-color-primary-lighter); - color: #fff; - font-size: 0.8em; - font-weight: 600; - border-radius: 4px; - text-decoration: none; - transition: background-color 0.3s; -} - -/* Button: Edit this page */ -.container > .row > .col > div > .margin-vert--xl a:hover { - background: var(--ifm-color-primary); -} - -.docusaurus-highlight-code-line { - background-color: rgb(72, 77, 91); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -html body .markdown button[aria-label="Copy code to clipboard"], -html body pre.prism-code > button { - z-index: 1; - border: none; - background: var(--ifm-color-primary-lighter); - color: #fff; - text-transform: uppercase; - font-size: 0.8em; - font-weight: 700; - border-radius: 3px; - padding: 0.6em 0.8em; - margin-top: -0.2em; - letter-spacing: 0.1em; - transition: background-color 0.3s; -} - -html body .markdown button[aria-label="Copy code to clipboard"]:hover, -html body pre.prism-code > button:hover { - background: var(--ifm-color-primary-darker); -} - -body .prism-code, -pre.prism-code { - margin-top: -0.2em; - border-radius: 4px; -} - -body .prism-code, -code { - counter-reset: linenumber; -} - -body .prism-code .token-line, -code > .token-line { - counter-increment: linenumber; -} - -body .prism-code .token-line::before, -code > .token-line::before { - width: 1em; - content: counter(linenumber); - color: #fff; - display: block; - float: left; - padding-right: 0.8em; - text-align: right; - opacity: 0.6; - - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -body .prism-code .token-line:first-child:last-child::before, -code > .token-line:first-child:last-child::before { - display: none; -} - -body .prism-code .token-line, -code .token-line { - padding-right: 2em; -} - -.tabs { - border-bottom: 1px solid var(--ifm-color-primary-lightest); -} - -.tabs > .tab-item { - border-radius: 0; - padding: 0.6em 1.2em; -} - -.tabs > .tab-item:focus, -.tabs > .tab-item:hover { - background-color: #f2f9fb; -} - -div[role="tabpanel"] { - border-bottom: 1px solid var(--ifm-color-primary-lightest); -} - -body .markdown { - position: relative; - --ifm-h2-vertical-rhythm-top: 1.8; -} - -.markdown *:not(pre) > code, -.contents code { - white-space: nowrap; -} - -.admonition-warning a, -.admonition-info a, -.admonition-warning a:hover, -.admonition-info a:hover { - color: rgb(255, 251, 0); -} - -.markdown figure { - margin: 1em 0 2em; -} - -.markdown figure:last-child { - margin-bottom: 1.2em; -} - -.markdown figure.stretch, -.markdown figure.stretch img { - width: 100%; -} - -.markdown figure.frame img, -.markdown figure.frame video { - width: 100%; - box-shadow: 0 0 7px 5px #00000009; - border: 1.5px solid #c6cbd1; - border-radius: 4px; -} - -.markdown figcaption { - position: relative; - left: 0; - width: 100%; - top: 0; - margin-top: 5px; - outline: 0; - text-align: center; - z-index: 300; - font-size: 14px; - line-height: 1.4; - letter-spacing: 0; -} - -.navbar__brand::after { - display: block; - content: " "; - background: #dadde1; - width: 1px; - height: 60px; - margin-left: 20px; - transform: skew(-15deg, 0); -} - -.menu__link--active { - color: var(--ifm-color-primary) !important; -} - -.version-link { - position: relative; - margin-right: 20px; - padding: 0.2em 0.6em; - background-color: var(--ifm-color-primary); - color: #fff; - font-weight: 600; - border-radius: 3px; - transition: background-color 0.3s; -} - -.version-link:hover { - color: #fff; - text-decoration: none; - background-color: var(--ifm-color-primary-darkest); -} - -.version-link::before { - content: "v"; - padding-right: 0.1em; -} - -.version-link::after { - display: block; - content: " "; - width: 1px; - height: 60px; - position: absolute; - top: -16px; - right: -20px; - transform: skew(-15deg, 0deg); - background: rgb(218, 221, 225); -} - -.github-link, -.slack-link { - padding: 0; -} - -.github-link:before { - content: ""; - margin-left: 14px; - width: 24px; - height: 24px; - display: flex; - background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22' fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A"); - background-repeat: no-repeat; - background-position: center center; - background-size: contain; -} - -.slack-link:before { - content: ""; - width: 130px; - height: 32px; - display: flex; - background-image: url("data:image/svg+xml,%3Csvg width='165' height='41' viewBox='0 0 165 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.5 0.5H158.5C161.8 0.5 164.5 3.2 164.5 6.5V34.5C164.5 37.8 161.8 40.5 158.5 40.5H6.5C3.2 40.5 0.5 37.8 0.5 34.5V6.5C0.5 3.2 3.2 0.5 6.5 0.5Z' stroke='%23C7CACD'/%3E%3Cpath d='M15.1 23.4C15.1 24.7 14.1 25.7 12.8 25.7C11.5 25.7 10.5 24.7 10.5 23.4C10.5 22.1 11.5 21.1 12.8 21.1H15.1V23.4V23.4Z' fill='%23E01E5A'/%3E%3Cpath d='M16.3 23.4C16.3 22.1 17.3 21.1 18.6 21.1C19.9 21.1 20.9 22.1 20.9 23.4V29.2C20.9 30.5 19.9 31.5 18.6 31.5C17.3 31.5 16.3 30.5 16.3 29.2V23.4Z' fill='%23E01E5A'/%3E%3Cpath d='M18.6 14.2C17.3 14.2 16.3 13.2 16.3 11.9C16.3 10.6 17.3 9.6 18.6 9.6C19.9 9.6 20.9 10.6 20.9 11.9V14.2H18.6Z' fill='%2336C5F0'/%3E%3Cpath d='M18.6 15.3C19.9 15.3 20.9 16.3 20.9 17.6C20.9 18.9 19.9 19.9 18.6 19.9H12.8C11.5 19.9 10.5 18.9 10.5 17.6C10.5 16.3 11.5 15.3 12.8 15.3H18.6Z' fill='%2336C5F0'/%3E%3Cpath d='M27.9 17.7C27.9 16.4 28.9 15.4 30.2 15.4C31.5 15.4 32.5 16.4 32.5 17.7C32.5 19 31.5 20 30.2 20H27.9V17.7Z' fill='%232EB67D'/%3E%3Cpath d='M26.7 17.7C26.7 19 25.7 20 24.4 20C23.1 20 22.1 19 22.1 17.7V11.9C22.1 10.6 23.1 9.6 24.4 9.6C25.7 9.6 26.7 10.6 26.7 11.9V17.7Z' fill='%232EB67D'/%3E%3Cpath d='M24.4 26.9C25.7 26.9 26.7 27.9 26.7 29.2C26.7 30.5 25.7 31.5 24.4 31.5C23.1 31.5 22.1 30.5 22.1 29.2V26.9H24.4Z' fill='%23ECB22E'/%3E%3Cpath d='M24.4 25.8C23.1 25.8 22.1 24.8 22.1 23.5C22.1 22.2 23.1 21.2 24.4 21.2H30.2C31.5 21.2 32.5 22.2 32.5 23.5C32.5 24.8 31.5 25.8 30.2 25.8H24.4Z' fill='%23ECB22E'/%3E%3Cpath d='M47.056 23.152V14.576H45.536V22.928C45.536 23.5573 45.4027 24.0587 45.136 24.432C44.88 24.8053 44.4053 24.992 43.712 24.992C43.3387 24.992 43.0293 24.9387 42.784 24.832C42.5493 24.7147 42.3627 24.5547 42.224 24.352C42.096 24.1493 42.0053 23.9093 41.952 23.632C41.8987 23.3547 41.872 23.0507 41.872 22.72V22.24H40.352V22.944C40.352 24.032 40.64 24.8587 41.216 25.424C41.792 25.9787 42.6133 26.256 43.68 26.256C44.32 26.256 44.8533 26.1707 45.28 26C45.7173 25.8187 46.064 25.584 46.32 25.296C46.5867 24.9973 46.7733 24.6613 46.88 24.288C46.9973 23.9147 47.056 23.536 47.056 23.152Z' fill='black'/%3E%3Cpath d='M49.8329 21.872C49.8329 21.3707 49.8969 20.928 50.0249 20.544C50.1635 20.1493 50.3502 19.8187 50.5849 19.552C50.8195 19.2853 51.0915 19.0827 51.4009 18.944C51.7209 18.8053 52.0569 18.736 52.4089 18.736C52.7609 18.736 53.0915 18.8053 53.4009 18.944C53.7209 19.0827 53.9982 19.2853 54.2329 19.552C54.4675 19.8187 54.6489 20.1493 54.7769 20.544C54.9155 20.928 54.9849 21.3707 54.9849 21.872C54.9849 22.3733 54.9155 22.8213 54.7769 23.216C54.6489 23.6 54.4675 23.9253 54.2329 24.192C53.9982 24.448 53.7209 24.6453 53.4009 24.784C53.0915 24.9227 52.7609 24.992 52.4089 24.992C52.0569 24.992 51.7209 24.9227 51.4009 24.784C51.0915 24.6453 50.8195 24.448 50.5849 24.192C50.3502 23.9253 50.1635 23.6 50.0249 23.216C49.8969 22.8213 49.8329 22.3733 49.8329 21.872ZM48.3929 21.872C48.3929 22.48 48.4782 23.0453 48.6489 23.568C48.8195 24.0907 49.0755 24.5493 49.4169 24.944C49.7582 25.328 50.1795 25.632 50.6809 25.856C51.1822 26.0693 51.7582 26.176 52.4089 26.176C53.0702 26.176 53.6462 26.0693 54.1369 25.856C54.6382 25.632 55.0595 25.328 55.4009 24.944C55.7422 24.5493 55.9982 24.0907 56.1689 23.568C56.3395 23.0453 56.4249 22.48 56.4249 21.872C56.4249 21.264 56.3395 20.6987 56.1689 20.176C55.9982 19.6427 55.7422 19.184 55.4009 18.8C55.0595 18.4053 54.6382 18.096 54.1369 17.872C53.6462 17.648 53.0702 17.536 52.4089 17.536C51.7582 17.536 51.1822 17.648 50.6809 17.872C50.1795 18.096 49.7582 18.4053 49.4169 18.8C49.0755 19.184 48.8195 19.6427 48.6489 20.176C48.4782 20.6987 48.3929 21.264 48.3929 21.872Z' fill='black'/%3E%3Cpath d='M58.9884 16.24V14.576H57.6284V16.24H58.9884ZM57.6284 17.728V26H58.9884V17.728H57.6284Z' fill='black'/%3E%3Cpath d='M60.6152 17.728V26H61.9752V21.328C61.9752 20.9547 62.0232 20.6133 62.1192 20.304C62.2259 19.984 62.3806 19.7067 62.5832 19.472C62.7859 19.2373 63.0366 19.056 63.3352 18.928C63.6446 18.8 64.0072 18.736 64.4232 18.736C64.9459 18.736 65.3566 18.8853 65.6552 19.184C65.9539 19.4827 66.1032 19.888 66.1032 20.4V26H67.4632V20.56C67.4632 20.112 67.4152 19.7067 67.3192 19.344C67.2339 18.9707 67.0792 18.6507 66.8552 18.384C66.6312 18.1173 66.3379 17.9093 65.9752 17.76C65.6126 17.6107 65.1592 17.536 64.6152 17.536C63.3886 17.536 62.4926 18.0373 61.9272 19.04H61.8952V17.728H60.6152Z' fill='black'/%3E%3Cpath d='M79.847 26V17.728H78.487V22.4C78.487 22.7733 78.4337 23.12 78.327 23.44C78.231 23.7493 78.0817 24.0213 77.879 24.256C77.6763 24.4907 77.4203 24.672 77.111 24.8C76.8123 24.928 76.455 24.992 76.039 24.992C75.5163 24.992 75.1057 24.8427 74.807 24.544C74.5083 24.2453 74.359 23.84 74.359 23.328V17.728H72.999V23.168C72.999 23.616 73.0417 24.0267 73.127 24.4C73.223 24.7627 73.383 25.0773 73.607 25.344C73.831 25.6107 74.1243 25.8187 74.487 25.968C74.8497 26.1067 75.303 26.176 75.847 26.176C76.455 26.176 76.983 26.0587 77.431 25.824C77.879 25.5787 78.247 25.2 78.535 24.688H78.567V26H79.847Z' fill='black'/%3E%3Cpath d='M82.2416 23.392H80.8816C80.9029 23.904 81.0096 24.3413 81.2016 24.704C81.3936 25.056 81.6496 25.344 81.9696 25.568C82.2896 25.7813 82.6576 25.936 83.0736 26.032C83.4896 26.128 83.9269 26.176 84.3856 26.176C84.8016 26.176 85.2176 26.1333 85.6336 26.048C86.0603 25.9733 86.4389 25.8347 86.7696 25.632C87.1109 25.4293 87.3829 25.1627 87.5856 24.832C87.7989 24.5013 87.9056 24.0853 87.9056 23.584C87.9056 23.1893 87.8256 22.8587 87.6656 22.592C87.5163 22.3253 87.3136 22.1067 87.0576 21.936C86.8123 21.7547 86.5243 21.6107 86.1936 21.504C85.8736 21.3973 85.5429 21.3067 85.2016 21.232C84.8816 21.1573 84.5616 21.088 84.2416 21.024C83.9216 20.9493 83.6336 20.864 83.3776 20.768C83.1216 20.6613 82.9083 20.5333 82.7376 20.384C82.5776 20.224 82.4976 20.0267 82.4976 19.792C82.4976 19.5787 82.5509 19.408 82.6576 19.28C82.7643 19.1413 82.9029 19.0347 83.0736 18.96C83.2443 18.8747 83.4309 18.816 83.6336 18.784C83.8469 18.752 84.0549 18.736 84.2576 18.736C84.4816 18.736 84.7003 18.7627 84.9136 18.816C85.1376 18.8587 85.3403 18.9333 85.5216 19.04C85.7029 19.1467 85.8523 19.2907 85.9696 19.472C86.0869 19.6427 86.1563 19.8613 86.1776 20.128H87.5376C87.5056 19.6267 87.3989 19.2107 87.2176 18.88C87.0363 18.5387 86.7909 18.272 86.4816 18.08C86.1829 17.8773 85.8363 17.7387 85.4416 17.664C85.0469 17.5787 84.6149 17.536 84.1456 17.536C83.7829 17.536 83.4149 17.584 83.0416 17.68C82.6789 17.7653 82.3483 17.904 82.0496 18.096C81.7616 18.2773 81.5216 18.5173 81.3296 18.816C81.1483 19.1147 81.0576 19.472 81.0576 19.888C81.0576 20.4213 81.1909 20.8373 81.4576 21.136C81.7243 21.4347 82.0549 21.6693 82.4496 21.84C82.8549 22 83.2923 22.128 83.7616 22.224C84.2309 22.3093 84.6629 22.4107 85.0576 22.528C85.4629 22.6347 85.7989 22.7787 86.0656 22.96C86.3323 23.1413 86.4656 23.408 86.4656 23.76C86.4656 24.016 86.4016 24.2293 86.2736 24.4C86.1456 24.56 85.9803 24.6827 85.7776 24.768C85.5856 24.8533 85.3723 24.912 85.1376 24.944C84.9029 24.976 84.6789 24.992 84.4656 24.992C84.1883 24.992 83.9163 24.9653 83.6496 24.912C83.3936 24.8587 83.1589 24.7733 82.9456 24.656C82.7429 24.528 82.5776 24.3627 82.4496 24.16C82.3216 23.9467 82.2523 23.6907 82.2416 23.392Z' fill='black'/%3E%3Cpath d='M93.8947 21.872C93.8947 21.3707 93.9587 20.928 94.0867 20.544C94.2254 20.1493 94.4121 19.8187 94.6467 19.552C94.8814 19.2853 95.1534 19.0827 95.4627 18.944C95.7827 18.8053 96.1187 18.736 96.4707 18.736C96.8227 18.736 97.1534 18.8053 97.4627 18.944C97.7827 19.0827 98.0601 19.2853 98.2947 19.552C98.5294 19.8187 98.7107 20.1493 98.8387 20.544C98.9774 20.928 99.0467 21.3707 99.0467 21.872C99.0467 22.3733 98.9774 22.8213 98.8387 23.216C98.7107 23.6 98.5294 23.9253 98.2947 24.192C98.0601 24.448 97.7827 24.6453 97.4627 24.784C97.1534 24.9227 96.8227 24.992 96.4707 24.992C96.1187 24.992 95.7827 24.9227 95.4627 24.784C95.1534 24.6453 94.8814 24.448 94.6467 24.192C94.4121 23.9253 94.2254 23.6 94.0867 23.216C93.9587 22.8213 93.8947 22.3733 93.8947 21.872ZM92.4547 21.872C92.4547 22.48 92.5401 23.0453 92.7107 23.568C92.8814 24.0907 93.1374 24.5493 93.4787 24.944C93.8201 25.328 94.2414 25.632 94.7427 25.856C95.2441 26.0693 95.8201 26.176 96.4707 26.176C97.1321 26.176 97.7081 26.0693 98.1987 25.856C98.7001 25.632 99.1214 25.328 99.4627 24.944C99.8041 24.5493 100.06 24.0907 100.231 23.568C100.401 23.0453 100.487 22.48 100.487 21.872C100.487 21.264 100.401 20.6987 100.231 20.176C100.06 19.6427 99.8041 19.184 99.4627 18.8C99.1214 18.4053 98.7001 18.096 98.1987 17.872C97.7081 17.648 97.1321 17.536 96.4707 17.536C95.8201 17.536 95.2441 17.648 94.7427 17.872C94.2414 18.096 93.8201 18.4053 93.4787 18.8C93.1374 19.184 92.8814 19.6427 92.7107 20.176C92.5401 20.6987 92.4547 21.264 92.4547 21.872Z' fill='black'/%3E%3Cpath d='M101.61 17.728V26H102.97V21.328C102.97 20.9547 103.018 20.6133 103.114 20.304C103.221 19.984 103.376 19.7067 103.578 19.472C103.781 19.2373 104.032 19.056 104.33 18.928C104.64 18.8 105.002 18.736 105.418 18.736C105.941 18.736 106.352 18.8853 106.65 19.184C106.949 19.4827 107.098 19.888 107.098 20.4V26H108.458V20.56C108.458 20.112 108.41 19.7067 108.314 19.344C108.229 18.9707 108.074 18.6507 107.85 18.384C107.626 18.1173 107.333 17.9093 106.97 17.76C106.608 17.6107 106.154 17.536 105.61 17.536C104.384 17.536 103.488 18.0373 102.922 19.04H102.89V17.728H101.61Z' fill='black'/%3E%3Cpath d='M120.6 18.2C120.5 17.6 120 16.6 118.5 16.6C117.4 16.6 116.7 17.3 116.7 18C116.7 18.6 117.1 19.1 117.9 19.3L119.5 19.6C121.6 20 122.7 21.3 122.7 22.9C122.7 24.6 121.2 26.4 118.6 26.4C115.6 26.4 114.3 24.5 114.1 22.8L116.1 22.3C116.2 23.4 117 24.4 118.6 24.4C119.8 24.4 120.4 23.8 120.4 23C120.4 22.3 119.9 21.8 119 21.7L117.4 21.4C115.6 21 114.4 19.9 114.4 18.2C114.4 16.2 116.2 14.6 118.4 14.6C121.2 14.6 122.2 16.3 122.5 17.5L120.6 18.2Z' fill='black'/%3E%3Cpath d='M124 26.2V14.6H126.1V26.2H124Z' fill='black'/%3E%3Cpath d='M129.7 21.7L131.6 21.4C132 21.3 132.2 21.1 132.2 20.8C132.2 20.2 131.8 19.8 130.9 19.8C130 19.8 129.5 20.4 129.4 21.1L127.5 20.7C127.6 19.5 128.8 18.1 130.9 18.1C133.4 18.1 134.3 19.5 134.3 21.1V25C134.3 25.4 134.3 26 134.4 26.2H132.4C132.4 26 132.3 25.6 132.3 25.3C131.9 25.9 131.1 26.5 130 26.5C128.3 26.5 127.3 25.4 127.3 24.1C127.3 22.6 128.4 21.9 129.7 21.7ZM132.2 23V22.6L130.4 22.9C129.9 23 129.4 23.3 129.4 23.9C129.4 24.4 129.7 24.8 130.4 24.8C131.4 24.8 132.2 24.4 132.2 23Z' fill='black'/%3E%3Cpath d='M137.5 22.3C137.5 23.7 138.4 24.5 139.5 24.5C140.6 24.5 141.1 23.8 141.3 23.2L143.2 23.8C142.8 25.1 141.6 26.5 139.5 26.5C137.2 26.5 135.4 24.7 135.4 22.3C135.4 19.9 137.2 18.1 139.5 18.1C141.6 18.1 142.9 19.4 143.2 20.8L141.3 21.4C141.1 20.7 140.6 20.1 139.6 20.1C138.4 20.1 137.5 20.8 137.5 22.3Z' fill='black'/%3E%3Cpath d='M148.7 21.6L151.9 26.2H149.3L147.2 23.2L146.3 24.1V26.2H144.2V14.6H146.3V21.2L149 18.3H151.8L148.7 21.6Z' fill='black'/%3E%3C/svg%3E%0A"); - background-repeat: no-repeat; - background-position: center center; - background-size: contain; -} - - - -.menu>.menu__list>.menu__list-item:nth-child(-n+6) { - margin: 1em 0; -} - -.menu > .menu__list > .menu__list-item:first-child { - display: none; -} - -.menu > .menu__list > .menu__list-item:nth-child(2) > .menu__link, -.menu > .menu__list > .menu__list-item:nth-child(3) > .menu__link { - pointer-events: none; -} - -.menu > .menu__list > .menu__list-item:nth-child(2) > .menu__link::after, -.menu > .menu__list > .menu__list-item:nth-child(3) > .menu__link::after { - display: none; -} - -.menu > .menu__list > .menu__list-item:nth-last-child(2) { - margin-top: 1.5em; - padding-top: 1.5em; - border-top: 1px solid #e9e9e9; -} - -.menu > .menu__list > .menu__list-item:nth-child(3) > .menu__list > .menu__list-item > .menu__link, -.menu > .menu__list > .menu__list-item:nth-child(3) > .menu__list > .menu__list-item > .menu__list > .menu__list-item:nth-child(n+2) .menu__link { - padding: 0.35em 0.7em; - font-family: var(--ifm-font-family-monospace) !important; - background: rgb(233, 233, 233); - border-radius: 3px; -} - -.menu > .menu__list > .menu__list-item:nth-child(3) > .menu__list > .menu__list-item > .menu__list > .menu__list-item:nth-child(1) > .menu__link { - padding: 0.35em 0.7em; - background: rgb(218, 218, 218); -} - -.navbar__brand { - margin-right: 0 !important; -} - -.navbar__brand::after { - display: none !important; -} diff --git a/docs/src/css/general.scss b/docs/src/css/general.scss new file mode 100644 index 0000000000..c5559b98b0 --- /dev/null +++ b/docs/src/css/general.scss @@ -0,0 +1,68 @@ +body { + overflow-y: scroll; +} + +:root { + --ifm-color-info: #077EEC; + --ifm-color-success: rgb(64, 185, 255); + --ifm-color-warning: #ED7200; + --ifm-color-error: #C21B1B; + --ifm-footer-background-color: var(--ifm-color-secondary); +} + +.embed-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; +} + +.embed-container iframe, +.embed-container object, +.embed-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +table thead > tr { + border-top: none; +} + +table th:first-child:empty { + opacity: 0; + border: none; +} + +.container > .row > .col > div { + display: flex; + flex-direction: column; +} + +/* Button: Edit this page */ +.container > .row > .col > div > .margin-vert--xl { + order: -1; + height: 3em; + margin: 0 !important; + text-align: right; +} + +/* Button: Edit this page */ +.container > .row > .col > div > .margin-vert--xl a { + padding: 0.3em 0.5em; + background: var(--ifm-color-primary-lighter); + color: #fff; + font-size: 0.8em; + font-weight: 600; + border-radius: 4px; + text-decoration: none; + transition: background-color 0.3s; +} + +/* Button: Edit this page */ +.container > .row > .col > div > .margin-vert--xl a:hover { + background: var(--ifm-color-primary); +} diff --git a/docs/src/css/header.scss b/docs/src/css/header.scss new file mode 100644 index 0000000000..50006d4d6d --- /dev/null +++ b/docs/src/css/header.scss @@ -0,0 +1,45 @@ +.navbar { + padding-top: 0; +} + +.navbar__brand { + padding-left: 0.5rem; + + &::after { + display: block; + content: " "; + background: #dadde1; + width: 1px; + height: 60px; + margin-left: 20px; + transform: skew(-15deg, 0); + } +} + +.github-link, +.slack-link { + padding: 0; +} + +.github-link:before { + content: ""; + margin-left: 14px; + width: 24px; + height: 24px; + display: flex; + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22' fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-position: center center; + background-size: contain; +} + +.slack-link:before { + content: ""; + width: 130px; + height: 32px; + display: flex; + background-image: url("data:image/svg+xml,%3Csvg width='165' height='41' viewBox='0 0 165 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.5 0.5H158.5C161.8 0.5 164.5 3.2 164.5 6.5V34.5C164.5 37.8 161.8 40.5 158.5 40.5H6.5C3.2 40.5 0.5 37.8 0.5 34.5V6.5C0.5 3.2 3.2 0.5 6.5 0.5Z' stroke='%23C7CACD'/%3E%3Cpath d='M15.1 23.4C15.1 24.7 14.1 25.7 12.8 25.7C11.5 25.7 10.5 24.7 10.5 23.4C10.5 22.1 11.5 21.1 12.8 21.1H15.1V23.4V23.4Z' fill='%23E01E5A'/%3E%3Cpath d='M16.3 23.4C16.3 22.1 17.3 21.1 18.6 21.1C19.9 21.1 20.9 22.1 20.9 23.4V29.2C20.9 30.5 19.9 31.5 18.6 31.5C17.3 31.5 16.3 30.5 16.3 29.2V23.4Z' fill='%23E01E5A'/%3E%3Cpath d='M18.6 14.2C17.3 14.2 16.3 13.2 16.3 11.9C16.3 10.6 17.3 9.6 18.6 9.6C19.9 9.6 20.9 10.6 20.9 11.9V14.2H18.6Z' fill='%2336C5F0'/%3E%3Cpath d='M18.6 15.3C19.9 15.3 20.9 16.3 20.9 17.6C20.9 18.9 19.9 19.9 18.6 19.9H12.8C11.5 19.9 10.5 18.9 10.5 17.6C10.5 16.3 11.5 15.3 12.8 15.3H18.6Z' fill='%2336C5F0'/%3E%3Cpath d='M27.9 17.7C27.9 16.4 28.9 15.4 30.2 15.4C31.5 15.4 32.5 16.4 32.5 17.7C32.5 19 31.5 20 30.2 20H27.9V17.7Z' fill='%232EB67D'/%3E%3Cpath d='M26.7 17.7C26.7 19 25.7 20 24.4 20C23.1 20 22.1 19 22.1 17.7V11.9C22.1 10.6 23.1 9.6 24.4 9.6C25.7 9.6 26.7 10.6 26.7 11.9V17.7Z' fill='%232EB67D'/%3E%3Cpath d='M24.4 26.9C25.7 26.9 26.7 27.9 26.7 29.2C26.7 30.5 25.7 31.5 24.4 31.5C23.1 31.5 22.1 30.5 22.1 29.2V26.9H24.4Z' fill='%23ECB22E'/%3E%3Cpath d='M24.4 25.8C23.1 25.8 22.1 24.8 22.1 23.5C22.1 22.2 23.1 21.2 24.4 21.2H30.2C31.5 21.2 32.5 22.2 32.5 23.5C32.5 24.8 31.5 25.8 30.2 25.8H24.4Z' fill='%23ECB22E'/%3E%3Cpath d='M47.056 23.152V14.576H45.536V22.928C45.536 23.5573 45.4027 24.0587 45.136 24.432C44.88 24.8053 44.4053 24.992 43.712 24.992C43.3387 24.992 43.0293 24.9387 42.784 24.832C42.5493 24.7147 42.3627 24.5547 42.224 24.352C42.096 24.1493 42.0053 23.9093 41.952 23.632C41.8987 23.3547 41.872 23.0507 41.872 22.72V22.24H40.352V22.944C40.352 24.032 40.64 24.8587 41.216 25.424C41.792 25.9787 42.6133 26.256 43.68 26.256C44.32 26.256 44.8533 26.1707 45.28 26C45.7173 25.8187 46.064 25.584 46.32 25.296C46.5867 24.9973 46.7733 24.6613 46.88 24.288C46.9973 23.9147 47.056 23.536 47.056 23.152Z' fill='black'/%3E%3Cpath d='M49.8329 21.872C49.8329 21.3707 49.8969 20.928 50.0249 20.544C50.1635 20.1493 50.3502 19.8187 50.5849 19.552C50.8195 19.2853 51.0915 19.0827 51.4009 18.944C51.7209 18.8053 52.0569 18.736 52.4089 18.736C52.7609 18.736 53.0915 18.8053 53.4009 18.944C53.7209 19.0827 53.9982 19.2853 54.2329 19.552C54.4675 19.8187 54.6489 20.1493 54.7769 20.544C54.9155 20.928 54.9849 21.3707 54.9849 21.872C54.9849 22.3733 54.9155 22.8213 54.7769 23.216C54.6489 23.6 54.4675 23.9253 54.2329 24.192C53.9982 24.448 53.7209 24.6453 53.4009 24.784C53.0915 24.9227 52.7609 24.992 52.4089 24.992C52.0569 24.992 51.7209 24.9227 51.4009 24.784C51.0915 24.6453 50.8195 24.448 50.5849 24.192C50.3502 23.9253 50.1635 23.6 50.0249 23.216C49.8969 22.8213 49.8329 22.3733 49.8329 21.872ZM48.3929 21.872C48.3929 22.48 48.4782 23.0453 48.6489 23.568C48.8195 24.0907 49.0755 24.5493 49.4169 24.944C49.7582 25.328 50.1795 25.632 50.6809 25.856C51.1822 26.0693 51.7582 26.176 52.4089 26.176C53.0702 26.176 53.6462 26.0693 54.1369 25.856C54.6382 25.632 55.0595 25.328 55.4009 24.944C55.7422 24.5493 55.9982 24.0907 56.1689 23.568C56.3395 23.0453 56.4249 22.48 56.4249 21.872C56.4249 21.264 56.3395 20.6987 56.1689 20.176C55.9982 19.6427 55.7422 19.184 55.4009 18.8C55.0595 18.4053 54.6382 18.096 54.1369 17.872C53.6462 17.648 53.0702 17.536 52.4089 17.536C51.7582 17.536 51.1822 17.648 50.6809 17.872C50.1795 18.096 49.7582 18.4053 49.4169 18.8C49.0755 19.184 48.8195 19.6427 48.6489 20.176C48.4782 20.6987 48.3929 21.264 48.3929 21.872Z' fill='black'/%3E%3Cpath d='M58.9884 16.24V14.576H57.6284V16.24H58.9884ZM57.6284 17.728V26H58.9884V17.728H57.6284Z' fill='black'/%3E%3Cpath d='M60.6152 17.728V26H61.9752V21.328C61.9752 20.9547 62.0232 20.6133 62.1192 20.304C62.2259 19.984 62.3806 19.7067 62.5832 19.472C62.7859 19.2373 63.0366 19.056 63.3352 18.928C63.6446 18.8 64.0072 18.736 64.4232 18.736C64.9459 18.736 65.3566 18.8853 65.6552 19.184C65.9539 19.4827 66.1032 19.888 66.1032 20.4V26H67.4632V20.56C67.4632 20.112 67.4152 19.7067 67.3192 19.344C67.2339 18.9707 67.0792 18.6507 66.8552 18.384C66.6312 18.1173 66.3379 17.9093 65.9752 17.76C65.6126 17.6107 65.1592 17.536 64.6152 17.536C63.3886 17.536 62.4926 18.0373 61.9272 19.04H61.8952V17.728H60.6152Z' fill='black'/%3E%3Cpath d='M79.847 26V17.728H78.487V22.4C78.487 22.7733 78.4337 23.12 78.327 23.44C78.231 23.7493 78.0817 24.0213 77.879 24.256C77.6763 24.4907 77.4203 24.672 77.111 24.8C76.8123 24.928 76.455 24.992 76.039 24.992C75.5163 24.992 75.1057 24.8427 74.807 24.544C74.5083 24.2453 74.359 23.84 74.359 23.328V17.728H72.999V23.168C72.999 23.616 73.0417 24.0267 73.127 24.4C73.223 24.7627 73.383 25.0773 73.607 25.344C73.831 25.6107 74.1243 25.8187 74.487 25.968C74.8497 26.1067 75.303 26.176 75.847 26.176C76.455 26.176 76.983 26.0587 77.431 25.824C77.879 25.5787 78.247 25.2 78.535 24.688H78.567V26H79.847Z' fill='black'/%3E%3Cpath d='M82.2416 23.392H80.8816C80.9029 23.904 81.0096 24.3413 81.2016 24.704C81.3936 25.056 81.6496 25.344 81.9696 25.568C82.2896 25.7813 82.6576 25.936 83.0736 26.032C83.4896 26.128 83.9269 26.176 84.3856 26.176C84.8016 26.176 85.2176 26.1333 85.6336 26.048C86.0603 25.9733 86.4389 25.8347 86.7696 25.632C87.1109 25.4293 87.3829 25.1627 87.5856 24.832C87.7989 24.5013 87.9056 24.0853 87.9056 23.584C87.9056 23.1893 87.8256 22.8587 87.6656 22.592C87.5163 22.3253 87.3136 22.1067 87.0576 21.936C86.8123 21.7547 86.5243 21.6107 86.1936 21.504C85.8736 21.3973 85.5429 21.3067 85.2016 21.232C84.8816 21.1573 84.5616 21.088 84.2416 21.024C83.9216 20.9493 83.6336 20.864 83.3776 20.768C83.1216 20.6613 82.9083 20.5333 82.7376 20.384C82.5776 20.224 82.4976 20.0267 82.4976 19.792C82.4976 19.5787 82.5509 19.408 82.6576 19.28C82.7643 19.1413 82.9029 19.0347 83.0736 18.96C83.2443 18.8747 83.4309 18.816 83.6336 18.784C83.8469 18.752 84.0549 18.736 84.2576 18.736C84.4816 18.736 84.7003 18.7627 84.9136 18.816C85.1376 18.8587 85.3403 18.9333 85.5216 19.04C85.7029 19.1467 85.8523 19.2907 85.9696 19.472C86.0869 19.6427 86.1563 19.8613 86.1776 20.128H87.5376C87.5056 19.6267 87.3989 19.2107 87.2176 18.88C87.0363 18.5387 86.7909 18.272 86.4816 18.08C86.1829 17.8773 85.8363 17.7387 85.4416 17.664C85.0469 17.5787 84.6149 17.536 84.1456 17.536C83.7829 17.536 83.4149 17.584 83.0416 17.68C82.6789 17.7653 82.3483 17.904 82.0496 18.096C81.7616 18.2773 81.5216 18.5173 81.3296 18.816C81.1483 19.1147 81.0576 19.472 81.0576 19.888C81.0576 20.4213 81.1909 20.8373 81.4576 21.136C81.7243 21.4347 82.0549 21.6693 82.4496 21.84C82.8549 22 83.2923 22.128 83.7616 22.224C84.2309 22.3093 84.6629 22.4107 85.0576 22.528C85.4629 22.6347 85.7989 22.7787 86.0656 22.96C86.3323 23.1413 86.4656 23.408 86.4656 23.76C86.4656 24.016 86.4016 24.2293 86.2736 24.4C86.1456 24.56 85.9803 24.6827 85.7776 24.768C85.5856 24.8533 85.3723 24.912 85.1376 24.944C84.9029 24.976 84.6789 24.992 84.4656 24.992C84.1883 24.992 83.9163 24.9653 83.6496 24.912C83.3936 24.8587 83.1589 24.7733 82.9456 24.656C82.7429 24.528 82.5776 24.3627 82.4496 24.16C82.3216 23.9467 82.2523 23.6907 82.2416 23.392Z' fill='black'/%3E%3Cpath d='M93.8947 21.872C93.8947 21.3707 93.9587 20.928 94.0867 20.544C94.2254 20.1493 94.4121 19.8187 94.6467 19.552C94.8814 19.2853 95.1534 19.0827 95.4627 18.944C95.7827 18.8053 96.1187 18.736 96.4707 18.736C96.8227 18.736 97.1534 18.8053 97.4627 18.944C97.7827 19.0827 98.0601 19.2853 98.2947 19.552C98.5294 19.8187 98.7107 20.1493 98.8387 20.544C98.9774 20.928 99.0467 21.3707 99.0467 21.872C99.0467 22.3733 98.9774 22.8213 98.8387 23.216C98.7107 23.6 98.5294 23.9253 98.2947 24.192C98.0601 24.448 97.7827 24.6453 97.4627 24.784C97.1534 24.9227 96.8227 24.992 96.4707 24.992C96.1187 24.992 95.7827 24.9227 95.4627 24.784C95.1534 24.6453 94.8814 24.448 94.6467 24.192C94.4121 23.9253 94.2254 23.6 94.0867 23.216C93.9587 22.8213 93.8947 22.3733 93.8947 21.872ZM92.4547 21.872C92.4547 22.48 92.5401 23.0453 92.7107 23.568C92.8814 24.0907 93.1374 24.5493 93.4787 24.944C93.8201 25.328 94.2414 25.632 94.7427 25.856C95.2441 26.0693 95.8201 26.176 96.4707 26.176C97.1321 26.176 97.7081 26.0693 98.1987 25.856C98.7001 25.632 99.1214 25.328 99.4627 24.944C99.8041 24.5493 100.06 24.0907 100.231 23.568C100.401 23.0453 100.487 22.48 100.487 21.872C100.487 21.264 100.401 20.6987 100.231 20.176C100.06 19.6427 99.8041 19.184 99.4627 18.8C99.1214 18.4053 98.7001 18.096 98.1987 17.872C97.7081 17.648 97.1321 17.536 96.4707 17.536C95.8201 17.536 95.2441 17.648 94.7427 17.872C94.2414 18.096 93.8201 18.4053 93.4787 18.8C93.1374 19.184 92.8814 19.6427 92.7107 20.176C92.5401 20.6987 92.4547 21.264 92.4547 21.872Z' fill='black'/%3E%3Cpath d='M101.61 17.728V26H102.97V21.328C102.97 20.9547 103.018 20.6133 103.114 20.304C103.221 19.984 103.376 19.7067 103.578 19.472C103.781 19.2373 104.032 19.056 104.33 18.928C104.64 18.8 105.002 18.736 105.418 18.736C105.941 18.736 106.352 18.8853 106.65 19.184C106.949 19.4827 107.098 19.888 107.098 20.4V26H108.458V20.56C108.458 20.112 108.41 19.7067 108.314 19.344C108.229 18.9707 108.074 18.6507 107.85 18.384C107.626 18.1173 107.333 17.9093 106.97 17.76C106.608 17.6107 106.154 17.536 105.61 17.536C104.384 17.536 103.488 18.0373 102.922 19.04H102.89V17.728H101.61Z' fill='black'/%3E%3Cpath d='M120.6 18.2C120.5 17.6 120 16.6 118.5 16.6C117.4 16.6 116.7 17.3 116.7 18C116.7 18.6 117.1 19.1 117.9 19.3L119.5 19.6C121.6 20 122.7 21.3 122.7 22.9C122.7 24.6 121.2 26.4 118.6 26.4C115.6 26.4 114.3 24.5 114.1 22.8L116.1 22.3C116.2 23.4 117 24.4 118.6 24.4C119.8 24.4 120.4 23.8 120.4 23C120.4 22.3 119.9 21.8 119 21.7L117.4 21.4C115.6 21 114.4 19.9 114.4 18.2C114.4 16.2 116.2 14.6 118.4 14.6C121.2 14.6 122.2 16.3 122.5 17.5L120.6 18.2Z' fill='black'/%3E%3Cpath d='M124 26.2V14.6H126.1V26.2H124Z' fill='black'/%3E%3Cpath d='M129.7 21.7L131.6 21.4C132 21.3 132.2 21.1 132.2 20.8C132.2 20.2 131.8 19.8 130.9 19.8C130 19.8 129.5 20.4 129.4 21.1L127.5 20.7C127.6 19.5 128.8 18.1 130.9 18.1C133.4 18.1 134.3 19.5 134.3 21.1V25C134.3 25.4 134.3 26 134.4 26.2H132.4C132.4 26 132.3 25.6 132.3 25.3C131.9 25.9 131.1 26.5 130 26.5C128.3 26.5 127.3 25.4 127.3 24.1C127.3 22.6 128.4 21.9 129.7 21.7ZM132.2 23V22.6L130.4 22.9C129.9 23 129.4 23.3 129.4 23.9C129.4 24.4 129.7 24.8 130.4 24.8C131.4 24.8 132.2 24.4 132.2 23Z' fill='black'/%3E%3Cpath d='M137.5 22.3C137.5 23.7 138.4 24.5 139.5 24.5C140.6 24.5 141.1 23.8 141.3 23.2L143.2 23.8C142.8 25.1 141.6 26.5 139.5 26.5C137.2 26.5 135.4 24.7 135.4 22.3C135.4 19.9 137.2 18.1 139.5 18.1C141.6 18.1 142.9 19.4 143.2 20.8L141.3 21.4C141.1 20.7 140.6 20.1 139.6 20.1C138.4 20.1 137.5 20.8 137.5 22.3Z' fill='black'/%3E%3Cpath d='M148.7 21.6L151.9 26.2H149.3L147.2 23.2L146.3 24.1V26.2H144.2V14.6H146.3V21.2L149 18.3H151.8L148.7 21.6Z' fill='black'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-position: center center; + background-size: contain; +} diff --git a/docs/src/css/sidebar.scss b/docs/src/css/sidebar.scss new file mode 100644 index 0000000000..346b7c10b6 --- /dev/null +++ b/docs/src/css/sidebar.scss @@ -0,0 +1,222 @@ +body .menu { + margin: 0; + padding: 0; + scrollbar-gutter: stable; + border-right: 1px solid #fff; + position: relative; + + /* Add border on the right-hand side */ + &::after { + content: " "; + width: 1px; + height: 100%; + min-height: calc(100vh - 60px - 90px); + position: absolute; + top: 0; + right: 0; + background: rgb(218, 221, 225); + } + + /* Add scrollbar (appears only if many sections expanded) */ + &::-webkit-scrollbar, + &::-webkit-scrollbar-thumb, + &::-webkit-scrollbar-track { + transition: all 0.3s !important; + border-radius: 0 !important; + } + + /* Hide scrollbar (if menu is not hovered) */ + &:not(:hover)::-webkit-scrollbar, + &:not(:hover)::-webkit-scrollbar-thumb, + &:not(:hover)::-webkit-scrollbar-track { + background-color: #fff !important; + } + + .code-style { + font-family: Menlo, 'Courier New', monospace; + word-spacing: -0.15em; + } + + .menu__list-item-collapsible { + &, + &:hover { + background: transparent; + } + } + + .menu__list { + &, + .menu__list-item, + .menu__list-item-collapsible { + position: relative; + margin: 0; + padding: 0; + border-radius: 0; + } + + + /* 1st level links */ + .menu__link { + display: block; + width: 100%; + padding: 0.8rem 1.8rem; + font-weight: 600; + outline: none; + border-radius: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + + /* Link hover effects */ + &[href]:not([href="#"]):not([href=""]) { + /* Blue dot indicator */ + &::before { + content: ""; + right: 100%; + margin-right: -1.2rem; + top: 50%; + margin-top: -4px; + height: 8px; + position: absolute; + width: 8px; + border-radius: 4px; + background-color: var(--ifm-color-info); + transform: scale(0); + transition: .4s cubic-bezier(.4,0,.2,1); + } + + /* Background and dot for hover/active links */ + &:hover, + &[aria-current="page"] { + background-color: rgb(195 207 211 / 16%) !important; + + /* Show dot */ + &::before { + transform: scale(1); + } + } + + /* Turn dot into line for active link */ + &[aria-current="page"]::before { + width: 2em; + } + } + } + + .menu__list { + /* 2nd level links */ + .menu__link { + padding: 0.5rem 0 0.5rem 2.8rem; + font-weight: 400; + transition: 0.3s; + } + + .menu__list { + /* 3rd level links */ + .menu__link { + padding-left: 4.3rem; + font-size: 0.9em; + + &:not(:hover) { + opacity: 0.9; + } + } + + /* 3rd level links that are categories */ + .menu__list-item-collapsible .menu__link { + //text-decoration: underline; + + /* Prevent attribute propagation to next level */ + .menu__link { + text-decoration: none; + } + } + + .menu__list { + /* 4th level links */ + .menu__link { + padding-left: 6rem; + font-size: 0.9em; + + &:not(.menu__link--active):not(:hover) { + opacity: 0.6; + } + } + + .menu__list { + /* 5th level links */ + .menu__link { + padding-left: 7.5rem; + font-size: 0.85em; + + &:not(.menu__link--active):not(:hover) { + opacity: 0.6; + } + } + } + } + } + } + } +} + +/* 1st level categories: add a grey background when expanded (= not collapsed) OR active */ +.theme-doc-sidebar-item-category-level-1.menu__list-item:not(.menu__list-item--collapsed), +.theme-doc-sidebar-item-category-level-1.menu__list-item.menu__list-item--active, +.theme-doc-sidebar-item-category-level-2.menu__list-item:not(.menu__list-item--collapsed), +.theme-doc-sidebar-item-category-level-2.menu__list-item.menu__list-item--active { + &, + + .menu__list { + background-color: rgb(195 207 211 / 14%); + } +} + +/* Collapse/Expand icon */ +.menu__caret { + background-color: transparent !important; + position: absolute; + top: 0; + left: auto; + right: 0; + bottom: 0; + padding-right: 20px; + align-items: center; + z-index: 1; + + &::before { + margin-right: 0; + margin-left: auto; + } + + /* Make sure that clicking on icon opens category overview page (only if category is collapsed) */ + .menu__list-item.menu__list-item--collapsed & { + z-index: -1; + } +} + +/* Extra padding bottom for expanded categories */ +.theme-doc-sidebar-item-category:not(.menu__list-item--collapsed) > .menu__list { + padding-bottom: 1.2rem; + + .theme-doc-sidebar-item-category:not(.menu__list-item--collapsed) > .menu__list { + padding-bottom: 0.4rem; + } +} + +.menu .menu__link--sublist { + color: var(--ifm-menu-color) !important; +} + +/* Add line between two expanded sections (transparent) */ +.theme-doc-sidebar-menu > .theme-doc-sidebar-item-category { + border-top: 0.5px solid transparent; +} + +/* Add line between two expanded sections (grey once expanded) */ +.theme-doc-sidebar-item-category:not(.menu__list-item--collapsed) + .theme-doc-sidebar-item-category:not(.menu__list-item--collapsed) { + border-top-color: rgba(0, 0, 0, 0.1); +} + +.theme-doc-sidebar-item-category.extra-indent .menu__list .menu__link { + text-indent: 1.1em; +} diff --git a/docs/src/css/toc.scss b/docs/src/css/toc.scss new file mode 100644 index 0000000000..9e3e7035e8 --- /dev/null +++ b/docs/src/css/toc.scss @@ -0,0 +1,43 @@ +.table-of-contents__link { + position: relative; + + &[href="#config-reference"] { + color: var(--ifm-color-warning); + + display: block; + margin-top: 2em; + + &::before { + content: " "; + display: block; + position: absolute; + margin-top: -1em; + margin-left: -1.2em; + width: 3em; + height: 1px; + background: var(--ifm-toc-border-color); + } + + &::after { + background: var(--ifm-color-warning); + } + } +} + +.table-of-contents__link--active::after { + content: " "; + background: var(--ifm-color-primary); + position: absolute; + left: -17px; + top: -5px; + bottom: -5px; + width: 6px; + + ul ul & { + left: -32px; + } + + ul ul ul & { + left: -48px; + } +} diff --git a/docs/src/js/details-clicks.js b/docs/src/js/details-clicks.js new file mode 100644 index 0000000000..8c89d6758c --- /dev/null +++ b/docs/src/js/details-clicks.js @@ -0,0 +1,120 @@ +import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment"; + +const preserveExpansionStates = function (skipEventListener) { + const state = new URLSearchParams(window.location.search.substring(1)); + + if (document.querySelectorAll('.markdown').length == 0) { + return setTimeout(preserveExpansionStates, 100); + } + + document.querySelectorAll('details, .tabs-container').forEach(function (el, index) { + const expansionKey = "x" + (el.id || index); + const stateChangeElAll = el.querySelectorAll(':scope > summary, :scope > [role="tablist"] > *'); + const anchorLinks = el.querySelectorAll(':scope a[href="'+location.hash+'"]') + if (anchorLinks.length > 0) { + if (el.querySelectorAll(':scope > summary a[href="'+location.hash+'"]').length > 0) { + el.classList.add("-contains-target-link") + } + state.set(expansionKey, 1); + } else { + el.classList.remove("-contains-target-link") + state.delete(expansionKey); + } + + const persistState = function (i) { + if (Number.isInteger(i)) { + const anchorLinks = el.querySelectorAll(':scope > summary a[href^="#"]') + const state = new URLSearchParams(window.location.search.substring(1)); + if ((el.open && el.getAttribute("data-expandable") != "false") || el.classList.contains("tabs-container")) { + if (anchorLinks.length == 1) { + if (anchorLinks[0].getAttribute("href") == location.hash) { + el.classList.add("-contains-target-link") + } + } else { + state.set(expansionKey, i); + } + } else { + this.classList.remove("-contains-target-link") + state.delete(expansionKey); + } + + let query = state.toString() + if (query) { + query = '?' + query.replace(/^[?]/, "") + } + + window.history.replaceState(null, '', window.location.pathname + query + window.location.hash); + } + } + + if (el.getAttribute("data-preserve-state") !== "true") { + el.setAttribute("data-preserve-state", "true") + + el.addEventListener("toggle", persistState.bind(el, 1)); + stateChangeElAll.forEach(function (stateChangeEl, i) { + stateChangeEl.addEventListener("click", persistState.bind(stateChangeEl, i + 1)) + }) + + el.querySelectorAll(':scope > summary a[href^="#"]').forEach(anchorLink => { + anchorLink.addEventListener("click", (e) => { + e.stopImmediatePropagation() + e.stopPropagation() + e.preventDefault() + + const newHash = anchorLink.getAttribute("href") + + document.querySelectorAll(".-contains-target-link").forEach(function(el) { + if (el.querySelectorAll(':scope > summary a[href="'+newHash+'"]').length == 0) { + el.classList.remove("-contains-target-link") + } + }) + + let query = location.search + if (query) { + query = '?' + query.replace(/^[?]/, "") + } + window.history.replaceState(null, '', window.location.pathname + query + newHash); + + if (!el.hasAttribute("open")) { + anchorLink.parentElement.click() + } + }) + }) + } + + if (state.get(expansionKey) && el.open != true) { + el.open = true; + stateChangeElAll.forEach(function (stateChangeEl, i) { + if (state.get(expansionKey) === (i + 1).toString()) { + stateChangeEl.click() + } + }) + } + }); + + if (location.host.match(/^localhost(:[0-9]+)?$/)) { + setTimeout(function () { + preserveExpansionStates(); + }, 500) + } +} + +if (ExecutionEnvironment.canUseDOM) { + preserveExpansionStates(); + window.addEventListener("popstate", preserveExpansionStates); + + if (location.hash) { + setTimeout(() => { + location.href = location.href + + const targetEl = document.querySelector('[id="'+location.hash.substr(1)+'"]') + if (targetEl) { + window.scroll({ + behavior: 'smooth', + left: 0, + top: targetEl.getBoundingClientRect().top + window.scrollY - 120 + }); + } + }, 1000) + } +} diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index 44cc4e454d..4b62da4e76 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -1,16 +1,11 @@ import React from 'react'; -import Layout from '@theme/Layout'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; function Home() { - const context = useDocusaurusContext(); - const {siteConfig = {}} = context; - return ( - - - ); + React.useEffect(() => { + window.location.href = './getting-started/introduction'; + }, []); + + return null } export default Home; diff --git a/docs/src/pages/styles.module.css b/docs/src/pages/styles.module.css deleted file mode 100644 index caeec63c59..0000000000 --- a/docs/src/pages/styles.module.css +++ /dev/null @@ -1,35 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; -} - -@media screen and (max-width: 966px) { - .heroBanner { - padding: 2rem; - } -} - -.buttons { - display: flex; - align-items: center; - justify-content: center; -} - -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureImage { - height: 200px; - width: 200px; -} diff --git a/docs/src/pages/versions.js b/docs/src/pages/versions.js deleted file mode 100644 index 5a9f862a2f..0000000000 --- a/docs/src/pages/versions.js +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import React from 'react'; - -import Layout from '@theme/Layout'; - -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import Link from '@docusaurus/Link'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -import versions from '../../versions.json'; - -function Version() { - const context = useDocusaurusContext(); - const {siteConfig = {}} = context; - const latestVersion = versions[0]; - const pastVersions = versions.filter(version => version !== latestVersion); - const repoUrl = `https://github.com/${siteConfig.organizationName}/${siteConfig.projectName}`; - return ( - -
-

DevSpace Versions

-
-

Latest Version (Stable)

-

Here you can find the latest documentation.

- - - - - - - - -
{latestVersion}.x - - Documentation - - - - Release Notes - -
-
-
-

Next Version (Unreleased)

-

Here you can find the documentation for the next version that is not released yet.

- - - - - - - - -
master - - Documentation - - - Source Code -
-
- {pastVersions.length > 0 && ( -
-

Past Versions

-

- Here you can find documentation for previous versions of - DevSpace. -

- - - {pastVersions.map(version => ( - - - - - - ))} - -
{version}.x - - Documentation - - - - Release Notes - -
-
- )} -
-
- ); -} - -export default Version; diff --git a/docs/static/img/deployment-process-devspace.svg b/docs/static/img/deployment-process-devspace.svg index e9308d6483..2235d392d6 100644 --- a/docs/static/img/deployment-process-devspace.svg +++ b/docs/static/img/deployment-process-devspace.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/docs/static/img/logo-devspace.svg b/docs/static/img/logo-devspace.svg index 4ef421e28b..2d50bc65c1 100644 --- a/docs/static/img/logo-devspace.svg +++ b/docs/static/img/logo-devspace.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/docs/static/media/logos/devspace-logo-primary.svg b/docs/static/media/logos/devspace-logo-primary.svg new file mode 100755 index 0000000000..717aaf0e1a --- /dev/null +++ b/docs/static/media/logos/devspace-logo-primary.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/versioned_docs/version-4.13/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-4.13/configuration/development/auto-reloading.mdx deleted file mode 100644 index cfb89112b9..0000000000 --- a/docs/versioned_docs/version-4.13/configuration/development/auto-reloading.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Configure Auto-Reloading -sidebar_label: autoReload ---- - -There are certain use cases where you want to rebuild and redeploy the whole application instead of using the file synchronization and hot reloading. DevSpace provides you the options to specify special paths that are watched during `devspace dev` and any change to such a path will trigger a redeploy. - -Auto-reloading can be configured in the `dev.autoReload` section of `devspace.yaml`. -```yaml {19-26} -images: - backend: - image: john/devbackend - database: - image: john/database -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -- name: custom-manifests - kubectl: - manifests: - - manifests/ - - more/manifests/ -dev: - autoReload: - paths: - - ./package.json - - ./important-config-files/* - images: - - database - deployments: - - custom-manifests -``` - -Take a look at the [redeploy-instead-of-hot-reload exmaple](https://github.com/loft-sh/devspace/tree/master/examples/redeploy-instead-of-hot-reload) to see how to disable hot reloading at all and enable redeployment on every file change instead. - - -## Configuration - -### `paths` -The `paths` option expects an array of strings with paths that should be watched for changes. If a change occurs in any of the specified paths, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `images` -The `images` option expects an array of strings with image names from the `images` section of the `devspace.yaml`. If a change occurs to the `dockerfile` or to one of the files within the `context` of this image (if its context has changed), DevSpace will stop the development mode, rebuild the images, redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `deployments` -The `deployments` option expects an array of strings with names of deployments from the `deployments` section of the `devspace.yaml`. If a change occurs to any of the files that belong to this deployment, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -:::note Manifest Deployments -For `kubectl` deployments, DevSpace watches for all paths configured under `manifests`. -::: - -:::note Helm Chart Deployments -For `helm` deployments, DevSpace watches for changes in the `valuesFiles` or changes in the chart path of a local chart (configured as `chart.name`). -::: diff --git a/docs/versioned_docs/version-4.13/getting-started/deployment.mdx b/docs/versioned_docs/version-4.13/getting-started/deployment.mdx deleted file mode 100644 index baa1f49b32..0000000000 --- a/docs/versioned_docs/version-4.13/getting-started/deployment.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Build & Deploy ---- - - -
- -
DevSpace CLI - Deployment
-
- - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -``` - -Running `devspace deploy` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Deploy to Production -As shown earlier, DevSpace is by default configured to override your `ENTRYPOINT` to restart your application after files are synchronized into the container. However, in production, we don't want DevSpace to change anything about our Docker image. That's why you see the following section in your devspace.yaml: - -```yaml -profiles: -- name: production # Name of this profile: production - patches: # Patches to change the config for this profile - - op: remove # A patch to remove the injectResartHelper option - path: images.app.injectRestartHelper - - op: remove # Second patch ONLY for multi-stage builds - path: images.app.build.docker.options.target # Remote the build target to build entire Dockerfile -``` - -Profiles allow you to modify the config for certain use cases or deployment environment (e.g. your production cluster). You can print the config after applying all patches of this profile using this command: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is a global flag, so we can also use it to apply this profile during the deployment process: -```bash -devspace deploy -p production -``` - -Learn more about [integrating DevSpace into your CI/CD pipelines](../guides/ci-cd-integration.mdx). diff --git a/docs/versioned_docs/version-4.13/getting-started/development.mdx b/docs/versioned_docs/version-4.13/getting-started/development.mdx deleted file mode 100644 index 7f98361257..0000000000 --- a/docs/versioned_docs/version-4.13/getting-started/development.mdx +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Development with DevSpace -sidebar_label: 4. Build & Develop ---- - -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; - -DevSpace allows you to develop applications directly inside a Kubernetes cluster. - -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. - -## Start Development Mode -Run the following command to start your application in development mode: -```bash -devspace dev -``` - -
- -
DevSpace CLI - Development Mode
-
- - -When running `devspace dev`, the `dev` section in `devspace.yaml` becomes important: -```yaml -dev: - ports: # Port Forwarding Configuration - - imageName: app # Select pod & container by image name (reference to images section) - forward: # List of ports to forward - - port: 8080 - open: # Open Browser (after deployment) - - url: http://localhost:8080 - sync: # File Sync Configuration - - imageName: app # Select pod & container by image name (reference to images section) - uploadExcludePaths: # Never upload these files from local filesystem to the container - - Dockerfile - - .git - - devspace.yaml - onUpload: # Commands to execute after uploading files - restartContainer: true # Restart the container (uses the restart helper) -``` - -Running `devspace dev` will do the following: - -1. **Build and deploy** your application -2. **Stream the logs** of all containers deployed during the deployment process -3. **Forward all ports** specified in the [`dev.ports` section in the `devspace.yaml`](../configuration/development/port-forwarding.mdx) -4. **Sync all file changes** according to the [sync config in `dev.sync`](../configuration/development/file-synchronization.mdx), so you can restart your application inside the running container without having to rebuild images or redeploy anything - -
- -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- - -
- -## Workflows - -### 1. Edit Files & Restart -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. - -**Try it and just edit a file!** - -You will see that the logs show how DevSpace restarts your application inside the container: -```logs -[app] ############### Restart container ############### -``` - - -### 2. Open UI (in the browser) -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) - -
- -
DevSpace CLI - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: - - -### 3. Use Port Forwarding -While `devspace dev` is running, you can access your application via `localhost:[PORT]` because DevSpace starts port forwarding for all ports specified in the `dev.ports` section of your project's `devspace.yaml`. - -Port forwarding also allows you to attach to remote debuggers if you package them into your development Docker image. This allows you to set breakpoints in your IDE and the code execution will break inside the remote container while you can debug in your IDE. - -:::info Port Detection -When running `devspace init`, DevSpace detects all ports within your Dockerfile (i.e. `EXPOSE [PORT]` lines) and automatically configures forwarding for them when creating the `devspace.yaml`. -::: - -Learn more about how to [configure port forwarding](../configuration/development/port-forwarding.mdx). - - -## Notes - - diff --git a/docs/versioned_docs/version-4.13/getting-started/initialize-project.mdx b/docs/versioned_docs/version-4.13/getting-started/initialize-project.mdx deleted file mode 100644 index b1c07db3a3..0000000000 --- a/docs/versioned_docs/version-4.13/getting-started/initialize-project.mdx +++ /dev/null @@ -1,270 +0,0 @@ ---- -title: Initialize a Project -sidebar_label: 2. Initialize Project ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Step from '@site/src/components/Step/Step'; -import FragmentTipUseNamespace from '../fragments/tip-use-namespace.mdx'; -import FragmentNoteCreateSpace from '../fragments/note-create-space.mdx'; - -## Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-nodejs -cd quickstart-nodejs -``` - -:::note Tutorials -After finishing this Getting Started Guide, make sure to also check out one of these tutorials: -- [Deploy an Express.js Server to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes) -- [Deploy React.js Apps to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes) -- [Deploy Vue.js Apps to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes) -::: - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-python -cd quickstart-python -``` - -:::note Tutorial -After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Django Projects to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes) -::: - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-ruby -cd quickstart-ruby -``` - -:::note Tutorial -After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Ruby on Rails to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes) -::: - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-golang -cd quickstart-golang -``` - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-php -cd quickstart-php -``` - -:::note Tutorial -After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Laravel Projects to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes) -::: - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-java -cd quickstart-java -``` - - - - -```bash -git clone https://github.com/devspace-cloud/quickstart-asp-dotnet -cd quickstart-asp-dotnet -``` - - - - -```bash -# Navigate to the root directory of your project -cd /path/to/your/project -``` - -:::info -If you are using DevSpace for the first time, it is highly recommended that you use one of the demo projects. -::: - - - - - -
- -## Initialize Your Project -Run this command in your project directory to create a `devspace.yaml` config file for your project: -```bash -devspace init -``` - -
- -
DevSpace CLI - Initialize Project
-
- -While initializing your project, DevSpace will ask you a couple of questions and then create the config file `devspace.yaml` which will look similar to this one: - -```yaml -# Config version -version: v1beta9 - -# Defines all Dockerfiles that DevSpace will build, tag and push -images: - app: # Key 'app' = Name of this image - image: reg.tld/username/devspace # Registry and image name for pushing the image - preferSyncOverRebuild: true - injectRestartHelper: true - build: ... - -# Defines an array of everything (component, Helm chart, Kubernetes maninfests) -# that will be deployed with DevSpace in the specified order -deployments: -- name: quickstart # Name of this deployment - helm: # Deploy using Helm - componentChart: true # Use the Component Helm Chart - values: # Override Values for chart (can also be set using valuesFiles option) - containers: # Defines an array of containers that run in the same pods started by this component - - image: reg.tld/username/devspace # Image of this container - service: # Expose this component with a Kubernetes service - ports: # Array of container ports to expose through the service - - port: 3000 # Exposes container port 3000 on service port 3000 - -# Settings for development mode (will be explained later) -dev: ... - -# Settings for development mode (will be explained later) -profiles: ... -``` - -
- -## Prepare Kube-Context -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. - - - - -:::info Free Demo Namespace -If you don't have a Kubernetes cluster or simply want to test DevSpace without using your own cluster, choose the free demo namespaces sponsored by DevSpace Cloud. [Learn more about Demo Spaces.](https://devspace.cloud/products/devspace-cloud#pricing) -::: - -Run the following command to create a free Kubernetes namespace: -```bash -devspace create space my-app # requires login via GitHub or email -``` - - - - - - -:::note Local Clusters -Local clusters run on your local dev machine and include: minikube, kind, k3s, mikrok8s etc. -::: - -If you want to deploy to a local Kubernetes cluster, make sure your **current kube-context** points to this cluster and tell DevSpace which namespace to use: - -```bash -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -:::note Remote Clusters -Remote clusters run in a cloud or private data center and include: GKE, EKS, AKS, bare metal etc. -::: - -When using a remote cluster, you can either use it just for yourself or you can share the cluster with your colleagues. - - - - -```bash -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -
-1 - -Connect cluster to DevSpace Cloud -```bash -devspace connect cluster -``` -Learn more about connecting cluster in the [documentation of DevSpace Cloud](https://devspace.cloud/cloud/docs/admin/getting-started/connect-clusters). - -:::info DevSpace Cloud On-Premise -Instead of using the SaaS edition of DevSpace Cloud, you can also [install the on-premise edition in your own cluster](https://devspace.cloud/cloud/docs/admin/getting-started/setup#choose-saas-vs-on-premise). -::: - -
-2 - -Create isolated namespace (= Space) - -```bash -devspace create space my-app # requires login via GitHub or email -``` - - - -
-3 - -Add cluster users and allow them to create Spaces - -Learn more about how to do this in the [documentation of DevSpace Cloud](https://devspace.cloud/cloud/docs/admin/getting-started/cluster-users). - -
-
- -
-
diff --git a/docs/versioned_docs/version-4.13/guides/localhost-ui.mdx b/docs/versioned_docs/version-4.13/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/versioned_docs/version-4.13/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/versioned_docs/version-4.13/commands/devspace.md b/docs/versioned_docs/version-4.x/commands/devspace.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace.md rename to docs/versioned_docs/version-4.x/commands/devspace.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add.md b/docs/versioned_docs/version-4.x/commands/devspace_add.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add.md rename to docs/versioned_docs/version-4.x/commands/devspace_add.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add_deployment.md b/docs/versioned_docs/version-4.x/commands/devspace_add_deployment.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add_deployment.md rename to docs/versioned_docs/version-4.x/commands/devspace_add_deployment.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add_image.md b/docs/versioned_docs/version-4.x/commands/devspace_add_image.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add_image.md rename to docs/versioned_docs/version-4.x/commands/devspace_add_image.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add_port.md b/docs/versioned_docs/version-4.x/commands/devspace_add_port.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add_port.md rename to docs/versioned_docs/version-4.x/commands/devspace_add_port.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add_provider.md b/docs/versioned_docs/version-4.x/commands/devspace_add_provider.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add_provider.md rename to docs/versioned_docs/version-4.x/commands/devspace_add_provider.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_add_sync.md b/docs/versioned_docs/version-4.x/commands/devspace_add_sync.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_add_sync.md rename to docs/versioned_docs/version-4.x/commands/devspace_add_sync.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_analyze.md b/docs/versioned_docs/version-4.x/commands/devspace_analyze.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_analyze.md rename to docs/versioned_docs/version-4.x/commands/devspace_analyze.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_attach.md b/docs/versioned_docs/version-4.x/commands/devspace_attach.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_attach.md rename to docs/versioned_docs/version-4.x/commands/devspace_attach.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_build.md b/docs/versioned_docs/version-4.x/commands/devspace_build.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_build.md rename to docs/versioned_docs/version-4.x/commands/devspace_build.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_cleanup.md b/docs/versioned_docs/version-4.x/commands/devspace_cleanup.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_cleanup.md rename to docs/versioned_docs/version-4.x/commands/devspace_cleanup.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-4.x/commands/devspace_cleanup_images.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_cleanup_images.md rename to docs/versioned_docs/version-4.x/commands/devspace_cleanup_images.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_connect.md b/docs/versioned_docs/version-4.x/commands/devspace_connect.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_connect.md rename to docs/versioned_docs/version-4.x/commands/devspace_connect.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_connect_cluster.md b/docs/versioned_docs/version-4.x/commands/devspace_connect_cluster.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_connect_cluster.md rename to docs/versioned_docs/version-4.x/commands/devspace_connect_cluster.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_create.md b/docs/versioned_docs/version-4.x/commands/devspace_create.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_create.md rename to docs/versioned_docs/version-4.x/commands/devspace_create.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_create_space.md b/docs/versioned_docs/version-4.x/commands/devspace_create_space.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_create_space.md rename to docs/versioned_docs/version-4.x/commands/devspace_create_space.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_deploy.md b/docs/versioned_docs/version-4.x/commands/devspace_deploy.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_deploy.md rename to docs/versioned_docs/version-4.x/commands/devspace_deploy.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_dev.md b/docs/versioned_docs/version-4.x/commands/devspace_dev.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_dev.md rename to docs/versioned_docs/version-4.x/commands/devspace_dev.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_enter.md b/docs/versioned_docs/version-4.x/commands/devspace_enter.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_enter.md rename to docs/versioned_docs/version-4.x/commands/devspace_enter.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_init.md b/docs/versioned_docs/version-4.x/commands/devspace_init.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_init.md rename to docs/versioned_docs/version-4.x/commands/devspace_init.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list.md b/docs/versioned_docs/version-4.x/commands/devspace_list.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list.md rename to docs/versioned_docs/version-4.x/commands/devspace_list.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_clusters.md b/docs/versioned_docs/version-4.x/commands/devspace_list_clusters.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_clusters.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_clusters.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_commands.md b/docs/versioned_docs/version-4.x/commands/devspace_list_commands.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_commands.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_commands.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_contexts.md b/docs/versioned_docs/version-4.x/commands/devspace_list_contexts.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_contexts.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_contexts.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_deployments.md b/docs/versioned_docs/version-4.x/commands/devspace_list_deployments.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_deployments.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_deployments.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-4.x/commands/devspace_list_namespaces.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_namespaces.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_namespaces.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_ports.md b/docs/versioned_docs/version-4.x/commands/devspace_list_ports.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_ports.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_ports.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_profiles.md b/docs/versioned_docs/version-4.x/commands/devspace_list_profiles.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_profiles.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_profiles.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_providers.md b/docs/versioned_docs/version-4.x/commands/devspace_list_providers.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_providers.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_providers.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_spaces.md b/docs/versioned_docs/version-4.x/commands/devspace_list_spaces.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_spaces.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_spaces.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_sync.md b/docs/versioned_docs/version-4.x/commands/devspace_list_sync.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_sync.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_sync.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_list_vars.md b/docs/versioned_docs/version-4.x/commands/devspace_list_vars.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_list_vars.md rename to docs/versioned_docs/version-4.x/commands/devspace_list_vars.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_login.md b/docs/versioned_docs/version-4.x/commands/devspace_login.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_login.md rename to docs/versioned_docs/version-4.x/commands/devspace_login.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_logs.md b/docs/versioned_docs/version-4.x/commands/devspace_logs.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_logs.md rename to docs/versioned_docs/version-4.x/commands/devspace_logs.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_open.md b/docs/versioned_docs/version-4.x/commands/devspace_open.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_open.md rename to docs/versioned_docs/version-4.x/commands/devspace_open.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_print.md b/docs/versioned_docs/version-4.x/commands/devspace_print.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_print.md rename to docs/versioned_docs/version-4.x/commands/devspace_print.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_purge.md b/docs/versioned_docs/version-4.x/commands/devspace_purge.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_purge.md rename to docs/versioned_docs/version-4.x/commands/devspace_purge.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove.md b/docs/versioned_docs/version-4.x/commands/devspace_remove.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_cluster.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_cluster.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_cluster.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_cluster.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_context.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_context.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_context.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_context.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_deployment.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_deployment.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_deployment.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_deployment.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_image.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_image.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_image.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_image.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_port.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_port.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_port.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_port.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_provider.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_provider.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_provider.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_provider.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_space.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_space.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_space.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_space.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_remove_sync.md b/docs/versioned_docs/version-4.x/commands/devspace_remove_sync.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_remove_sync.md rename to docs/versioned_docs/version-4.x/commands/devspace_remove_sync.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_render.md b/docs/versioned_docs/version-4.x/commands/devspace_render.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_render.md rename to docs/versioned_docs/version-4.x/commands/devspace_render.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_reset.md b/docs/versioned_docs/version-4.x/commands/devspace_reset.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_reset.md rename to docs/versioned_docs/version-4.x/commands/devspace_reset.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-4.x/commands/devspace_reset_dependencies.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_reset_dependencies.md rename to docs/versioned_docs/version-4.x/commands/devspace_reset_dependencies.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_reset_key.md b/docs/versioned_docs/version-4.x/commands/devspace_reset_key.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_reset_key.md rename to docs/versioned_docs/version-4.x/commands/devspace_reset_key.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_reset_vars.md b/docs/versioned_docs/version-4.x/commands/devspace_reset_vars.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_reset_vars.md rename to docs/versioned_docs/version-4.x/commands/devspace_reset_vars.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_run.md b/docs/versioned_docs/version-4.x/commands/devspace_run.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_run.md rename to docs/versioned_docs/version-4.x/commands/devspace_run.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_set.md b/docs/versioned_docs/version-4.x/commands/devspace_set.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_set.md rename to docs/versioned_docs/version-4.x/commands/devspace_set.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_set_analytics.md b/docs/versioned_docs/version-4.x/commands/devspace_set_analytics.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_set_analytics.md rename to docs/versioned_docs/version-4.x/commands/devspace_set_analytics.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_set_encryptionkey.md b/docs/versioned_docs/version-4.x/commands/devspace_set_encryptionkey.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_set_encryptionkey.md rename to docs/versioned_docs/version-4.x/commands/devspace_set_encryptionkey.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_set_var.md b/docs/versioned_docs/version-4.x/commands/devspace_set_var.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_set_var.md rename to docs/versioned_docs/version-4.x/commands/devspace_set_var.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_status.md b/docs/versioned_docs/version-4.x/commands/devspace_status.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_status.md rename to docs/versioned_docs/version-4.x/commands/devspace_status.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_status_sync.md b/docs/versioned_docs/version-4.x/commands/devspace_status_sync.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_status_sync.md rename to docs/versioned_docs/version-4.x/commands/devspace_status_sync.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_sync.md b/docs/versioned_docs/version-4.x/commands/devspace_sync.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_sync.md rename to docs/versioned_docs/version-4.x/commands/devspace_sync.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_ui.md b/docs/versioned_docs/version-4.x/commands/devspace_ui.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_ui.md rename to docs/versioned_docs/version-4.x/commands/devspace_ui.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_update.md b/docs/versioned_docs/version-4.x/commands/devspace_update.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_update.md rename to docs/versioned_docs/version-4.x/commands/devspace_update.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_update_config.md b/docs/versioned_docs/version-4.x/commands/devspace_update_config.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_update_config.md rename to docs/versioned_docs/version-4.x/commands/devspace_update_config.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-4.x/commands/devspace_update_dependencies.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_update_dependencies.md rename to docs/versioned_docs/version-4.x/commands/devspace_update_dependencies.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_upgrade.md b/docs/versioned_docs/version-4.x/commands/devspace_upgrade.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_upgrade.md rename to docs/versioned_docs/version-4.x/commands/devspace_upgrade.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use.md b/docs/versioned_docs/version-4.x/commands/devspace_use.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use.md rename to docs/versioned_docs/version-4.x/commands/devspace_use.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use_context.md b/docs/versioned_docs/version-4.x/commands/devspace_use_context.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use_context.md rename to docs/versioned_docs/version-4.x/commands/devspace_use_context.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use_namespace.md b/docs/versioned_docs/version-4.x/commands/devspace_use_namespace.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use_namespace.md rename to docs/versioned_docs/version-4.x/commands/devspace_use_namespace.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use_profile.md b/docs/versioned_docs/version-4.x/commands/devspace_use_profile.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use_profile.md rename to docs/versioned_docs/version-4.x/commands/devspace_use_profile.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use_provider.md b/docs/versioned_docs/version-4.x/commands/devspace_use_provider.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use_provider.md rename to docs/versioned_docs/version-4.x/commands/devspace_use_provider.md diff --git a/docs/versioned_docs/version-4.13/commands/devspace_use_space.md b/docs/versioned_docs/version-4.x/commands/devspace_use_space.md similarity index 100% rename from docs/versioned_docs/version-4.13/commands/devspace_use_space.md rename to docs/versioned_docs/version-4.x/commands/devspace_use_space.md diff --git a/docs/versioned_docs/version-4.13/configuration/commands/basics.mdx b/docs/versioned_docs/version-4.x/configuration/commands/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/commands/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/commands/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-4.x/configuration/dependencies/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/dependencies/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/dependencies/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/dependencies/git-repository.mdx b/docs/versioned_docs/version-4.x/configuration/dependencies/git-repository.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/dependencies/git-repository.mdx rename to docs/versioned_docs/version-4.x/configuration/dependencies/git-repository.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/dependencies/local-folder.mdx b/docs/versioned_docs/version-4.x/configuration/dependencies/local-folder.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/dependencies/local-folder.mdx rename to docs/versioned_docs/version-4.x/configuration/dependencies/local-folder.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/deployments/basics.mdx b/docs/versioned_docs/version-4.x/configuration/deployments/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/deployments/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/deployments/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-4.x/configuration/deployments/helm-charts.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/deployments/helm-charts.mdx rename to docs/versioned_docs/version-4.x/configuration/deployments/helm-charts.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-4.x/configuration/deployments/kubernetes-manifests.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/deployments/kubernetes-manifests.mdx rename to docs/versioned_docs/version-4.x/configuration/deployments/kubernetes-manifests.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-4.x/configuration/deployments/kustomizations.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/deployments/kustomizations.mdx rename to docs/versioned_docs/version-4.x/configuration/deployments/kustomizations.mdx diff --git a/docs/pages/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-4.x/configuration/development/auto-reloading.mdx similarity index 100% rename from docs/pages/configuration/development/auto-reloading.mdx rename to docs/versioned_docs/version-4.x/configuration/development/auto-reloading.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/basics.mdx b/docs/versioned_docs/version-4.x/configuration/development/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/development/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-4.x/configuration/development/file-synchronization.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/file-synchronization.mdx rename to docs/versioned_docs/version-4.x/configuration/development/file-synchronization.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/interactive-mode.mdx b/docs/versioned_docs/version-4.x/configuration/development/interactive-mode.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/interactive-mode.mdx rename to docs/versioned_docs/version-4.x/configuration/development/interactive-mode.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-4.x/configuration/development/log-streaming.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/log-streaming.mdx rename to docs/versioned_docs/version-4.x/configuration/development/log-streaming.mdx diff --git a/docs/pages/configuration/development/open-links.mdx b/docs/versioned_docs/version-4.x/configuration/development/open-links.mdx similarity index 100% rename from docs/pages/configuration/development/open-links.mdx rename to docs/versioned_docs/version-4.x/configuration/development/open-links.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-4.x/configuration/development/port-forwarding.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/port-forwarding.mdx rename to docs/versioned_docs/version-4.x/configuration/development/port-forwarding.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-4.x/configuration/development/reverse-port-forwarding.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/reverse-port-forwarding.mdx rename to docs/versioned_docs/version-4.x/configuration/development/reverse-port-forwarding.mdx diff --git a/docs/pages/configuration/env-file.mdx b/docs/versioned_docs/version-4.x/configuration/env-file.mdx similarity index 100% rename from docs/pages/configuration/env-file.mdx rename to docs/versioned_docs/version-4.x/configuration/env-file.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/hooks/basics.mdx b/docs/versioned_docs/version-4.x/configuration/hooks/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/hooks/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/hooks/basics.mdx diff --git a/docs/pages/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-4.x/configuration/images/append-dockerfile-instructions.mdx similarity index 100% rename from docs/pages/configuration/images/append-dockerfile-instructions.mdx rename to docs/versioned_docs/version-4.x/configuration/images/append-dockerfile-instructions.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/basics.mdx b/docs/versioned_docs/version-4.x/configuration/images/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/images/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/custom.mdx b/docs/versioned_docs/version-4.x/configuration/images/custom.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/custom.mdx rename to docs/versioned_docs/version-4.x/configuration/images/custom.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/disabled.mdx b/docs/versioned_docs/version-4.x/configuration/images/disabled.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/disabled.mdx rename to docs/versioned_docs/version-4.x/configuration/images/disabled.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/docker.mdx b/docs/versioned_docs/version-4.x/configuration/images/docker.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/docker.mdx rename to docs/versioned_docs/version-4.x/configuration/images/docker.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-4.x/configuration/images/dockerfile-context.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/dockerfile-context.mdx rename to docs/versioned_docs/version-4.x/configuration/images/dockerfile-context.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-4.x/configuration/images/entrypoint-cmd.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/entrypoint-cmd.mdx rename to docs/versioned_docs/version-4.x/configuration/images/entrypoint-cmd.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-4.x/configuration/images/image-tagging.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/image-tagging.mdx rename to docs/versioned_docs/version-4.x/configuration/images/image-tagging.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-4.x/configuration/images/inject-restart-helper.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/inject-restart-helper.mdx rename to docs/versioned_docs/version-4.x/configuration/images/inject-restart-helper.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/kaniko.mdx b/docs/versioned_docs/version-4.x/configuration/images/kaniko.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/kaniko.mdx rename to docs/versioned_docs/version-4.x/configuration/images/kaniko.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/prefer-sync-over-rebuild.mdx b/docs/versioned_docs/version-4.x/configuration/images/prefer-sync-over-rebuild.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/prefer-sync-over-rebuild.mdx rename to docs/versioned_docs/version-4.x/configuration/images/prefer-sync-over-rebuild.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-4.x/configuration/images/pull-secrets.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/pull-secrets.mdx rename to docs/versioned_docs/version-4.x/configuration/images/pull-secrets.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/profiles/basics.mdx b/docs/versioned_docs/version-4.x/configuration/profiles/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/profiles/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/profiles/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/profiles/patches.mdx b/docs/versioned_docs/version-4.x/configuration/profiles/patches.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/profiles/patches.mdx rename to docs/versioned_docs/version-4.x/configuration/profiles/patches.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/profiles/replace.mdx b/docs/versioned_docs/version-4.x/configuration/profiles/replace.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/profiles/replace.mdx rename to docs/versioned_docs/version-4.x/configuration/profiles/replace.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/reference.mdx b/docs/versioned_docs/version-4.x/configuration/reference.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/reference.mdx rename to docs/versioned_docs/version-4.x/configuration/reference.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/variables/basics.mdx b/docs/versioned_docs/version-4.x/configuration/variables/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/variables/basics.mdx rename to docs/versioned_docs/version-4.x/configuration/variables/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/variables/source-env.mdx b/docs/versioned_docs/version-4.x/configuration/variables/source-env.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/variables/source-env.mdx rename to docs/versioned_docs/version-4.x/configuration/variables/source-env.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/variables/source-input.mdx b/docs/versioned_docs/version-4.x/configuration/variables/source-input.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/variables/source-input.mdx rename to docs/versioned_docs/version-4.x/configuration/variables/source-input.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/variables/source-none.mdx b/docs/versioned_docs/version-4.x/configuration/variables/source-none.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/variables/source-none.mdx rename to docs/versioned_docs/version-4.x/configuration/variables/source-none.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/build-option-buildArgs.mdx b/docs/versioned_docs/version-4.x/fragments/build-option-buildArgs.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/build-option-buildArgs.mdx rename to docs/versioned_docs/version-4.x/fragments/build-option-buildArgs.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/build-option-network.mdx b/docs/versioned_docs/version-4.x/fragments/build-option-network.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/build-option-network.mdx rename to docs/versioned_docs/version-4.x/fragments/build-option-network.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/build-option-target.mdx b/docs/versioned_docs/version-4.x/fragments/build-option-target.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/build-option-target.mdx rename to docs/versioned_docs/version-4.x/fragments/build-option-target.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-commands.mdx b/docs/versioned_docs/version-4.x/fragments/config-commands.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-commands.mdx rename to docs/versioned_docs/version-4.x/fragments/config-commands.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-dependencies.mdx b/docs/versioned_docs/version-4.x/fragments/config-dependencies.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-dependencies.mdx rename to docs/versioned_docs/version-4.x/fragments/config-dependencies.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-deployments.mdx b/docs/versioned_docs/version-4.x/fragments/config-deployments.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-deployments.mdx rename to docs/versioned_docs/version-4.x/fragments/config-deployments.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-dev.mdx b/docs/versioned_docs/version-4.x/fragments/config-dev.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-dev.mdx rename to docs/versioned_docs/version-4.x/fragments/config-dev.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-hooks.mdx b/docs/versioned_docs/version-4.x/fragments/config-hooks.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-hooks.mdx rename to docs/versioned_docs/version-4.x/fragments/config-hooks.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-images.mdx b/docs/versioned_docs/version-4.x/fragments/config-images.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-images.mdx rename to docs/versioned_docs/version-4.x/fragments/config-images.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-profiles.mdx b/docs/versioned_docs/version-4.x/fragments/config-profiles.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-profiles.mdx rename to docs/versioned_docs/version-4.x/fragments/config-profiles.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/config-vars.mdx b/docs/versioned_docs/version-4.x/fragments/config-vars.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/config-vars.mdx rename to docs/versioned_docs/version-4.x/fragments/config-vars.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/dependency-ignoreDependencies.mdx b/docs/versioned_docs/version-4.x/fragments/dependency-ignoreDependencies.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/dependency-ignoreDependencies.mdx rename to docs/versioned_docs/version-4.x/fragments/dependency-ignoreDependencies.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/dependency-name.mdx b/docs/versioned_docs/version-4.x/fragments/dependency-name.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/dependency-name.mdx rename to docs/versioned_docs/version-4.x/fragments/dependency-name.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/dependency-namespace.mdx b/docs/versioned_docs/version-4.x/fragments/dependency-namespace.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/dependency-namespace.mdx rename to docs/versioned_docs/version-4.x/fragments/dependency-namespace.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/dependency-profile.mdx b/docs/versioned_docs/version-4.x/fragments/dependency-profile.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/dependency-profile.mdx rename to docs/versioned_docs/version-4.x/fragments/dependency-profile.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/dependency-skipBuild.mdx b/docs/versioned_docs/version-4.x/fragments/dependency-skipBuild.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/dependency-skipBuild.mdx rename to docs/versioned_docs/version-4.x/fragments/dependency-skipBuild.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/faq-image-context.mdx b/docs/versioned_docs/version-4.x/fragments/faq-image-context.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/faq-image-context.mdx rename to docs/versioned_docs/version-4.x/fragments/faq-image-context.mdx diff --git a/docs/pages/fragments/info-component-chart.mdx b/docs/versioned_docs/version-4.x/fragments/info-component-chart.mdx similarity index 100% rename from docs/pages/fragments/info-component-chart.mdx rename to docs/versioned_docs/version-4.x/fragments/info-component-chart.mdx diff --git a/docs/pages/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-4.x/fragments/kubectl-kustomize.mdx similarity index 100% rename from docs/pages/fragments/kubectl-kustomize.mdx rename to docs/versioned_docs/version-4.x/fragments/kubectl-kustomize.mdx diff --git a/docs/pages/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-4.x/fragments/kubectl-options-applyArgs.mdx similarity index 100% rename from docs/pages/fragments/kubectl-options-applyArgs.mdx rename to docs/versioned_docs/version-4.x/fragments/kubectl-options-applyArgs.mdx diff --git a/docs/pages/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-4.x/fragments/kubectl-options-cmdPath.mdx similarity index 100% rename from docs/pages/fragments/kubectl-options-cmdPath.mdx rename to docs/versioned_docs/version-4.x/fragments/kubectl-options-cmdPath.mdx diff --git a/docs/pages/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-4.x/fragments/kubectl-options-deleteArgs.mdx similarity index 100% rename from docs/pages/fragments/kubectl-options-deleteArgs.mdx rename to docs/versioned_docs/version-4.x/fragments/kubectl-options-deleteArgs.mdx diff --git a/docs/pages/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-4.x/fragments/kubectl-replaceImageTags.mdx similarity index 100% rename from docs/pages/fragments/kubectl-replaceImageTags.mdx rename to docs/versioned_docs/version-4.x/fragments/kubectl-replaceImageTags.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/note-create-space.mdx b/docs/versioned_docs/version-4.x/fragments/note-create-space.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/note-create-space.mdx rename to docs/versioned_docs/version-4.x/fragments/note-create-space.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/note-general-purpose-command.mdx b/docs/versioned_docs/version-4.x/fragments/note-general-purpose-command.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/note-general-purpose-command.mdx rename to docs/versioned_docs/version-4.x/fragments/note-general-purpose-command.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/profile-parent.mdx b/docs/versioned_docs/version-4.x/fragments/profile-parent.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/profile-parent.mdx rename to docs/versioned_docs/version-4.x/fragments/profile-parent.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/tip-print-config.mdx b/docs/versioned_docs/version-4.x/fragments/tip-print-config.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/tip-print-config.mdx rename to docs/versioned_docs/version-4.x/fragments/tip-print-config.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/tip-use-namespace.mdx b/docs/versioned_docs/version-4.x/fragments/tip-use-namespace.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/tip-use-namespace.mdx rename to docs/versioned_docs/version-4.x/fragments/tip-use-namespace.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/vars-default.mdx b/docs/versioned_docs/version-4.x/fragments/vars-default.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/vars-default.mdx rename to docs/versioned_docs/version-4.x/fragments/vars-default.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/vars-force-string.mdx b/docs/versioned_docs/version-4.x/fragments/vars-force-string.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/vars-force-string.mdx rename to docs/versioned_docs/version-4.x/fragments/vars-force-string.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/vars-name.mdx b/docs/versioned_docs/version-4.x/fragments/vars-name.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/vars-name.mdx rename to docs/versioned_docs/version-4.x/fragments/vars-name.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/warning-build-tool-priority.mdx b/docs/versioned_docs/version-4.x/fragments/warning-build-tool-priority.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/warning-build-tool-priority.mdx rename to docs/versioned_docs/version-4.x/fragments/warning-build-tool-priority.mdx diff --git a/docs/pages/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-4.x/fragments/warning-multiple-dev.mdx similarity index 100% rename from docs/pages/fragments/warning-multiple-dev.mdx rename to docs/versioned_docs/version-4.x/fragments/warning-multiple-dev.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/workflow-build-images.mdx b/docs/versioned_docs/version-4.x/fragments/workflow-build-images.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/workflow-build-images.mdx rename to docs/versioned_docs/version-4.x/fragments/workflow-build-images.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/workflow-deploy-dependencies.mdx b/docs/versioned_docs/version-4.x/fragments/workflow-deploy-dependencies.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/workflow-deploy-dependencies.mdx rename to docs/versioned_docs/version-4.x/fragments/workflow-deploy-dependencies.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/workflow-deploy-project.mdx b/docs/versioned_docs/version-4.x/fragments/workflow-deploy-project.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/workflow-deploy-project.mdx rename to docs/versioned_docs/version-4.x/fragments/workflow-deploy-project.mdx diff --git a/docs/pages/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-4.x/fragments/workflow-open-links.mdx similarity index 100% rename from docs/pages/fragments/workflow-open-links.mdx rename to docs/versioned_docs/version-4.x/fragments/workflow-open-links.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/workflow-replace-tags.mdx b/docs/versioned_docs/version-4.x/fragments/workflow-replace-tags.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/workflow-replace-tags.mdx rename to docs/versioned_docs/version-4.x/fragments/workflow-replace-tags.mdx diff --git a/docs/versioned_docs/version-4.x/getting-started/deployment.mdx b/docs/versioned_docs/version-4.x/getting-started/deployment.mdx new file mode 100644 index 0000000000..1fbc91a402 --- /dev/null +++ b/docs/versioned_docs/version-4.x/getting-started/deployment.mdx @@ -0,0 +1,67 @@ +--- +title: Deployment with DevSpace +sidebar_label: 4. Build & Deploy +--- + + +
+ +
DevSpace CLI - Deployment
+
+ + +## Deploy Project +Run the local deployment pipeline using this command: +```bash +devspace deploy +``` + +Running `devspace deploy` will do the following: + +1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) +2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) +3. **Push** the resulting Docker images to the specified registries +4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) +5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) + +
+ Deployment Workflow +
DevSpace CLI - Deployment Workflow
+
+ +:::note Image Building Only +If you only want to build, tag and push all images but not deploy anything, run: +```bash +devspace build +``` +::: + + +
+ +## Deploy to Production +As shown earlier, DevSpace is by default configured to override your `ENTRYPOINT` to restart your application after files are synchronized into the container. However, in production, we don't want DevSpace to change anything about our Docker image. That's why you see the following section in your devspace.yaml: + +```yaml +profiles: +- name: production # Name of this profile: production + patches: # Patches to change the config for this profile + - op: remove # A patch to remove the injectResartHelper option + path: images.app.injectRestartHelper + - op: remove # Second patch ONLY for multi-stage builds + path: images.app.build.docker.options.target # Remote the build target to build entire Dockerfile +``` + +Profiles allow you to modify the config for certain use cases or deployment environment (e.g. your production cluster). You can print the config after applying all patches of this profile using this command: +```bash +devspace print -p production +``` + +The flag `-p / --profile` is a global flag, so we can also use it to apply this profile during the deployment process: +```bash +devspace deploy -p production +``` + +Learn more about [integrating DevSpace into your CI/CD pipelines](../guides/ci-cd-integration.mdx). diff --git a/docs/versioned_docs/version-4.x/getting-started/development.mdx b/docs/versioned_docs/version-4.x/getting-started/development.mdx new file mode 100644 index 0000000000..2d9f98b20a --- /dev/null +++ b/docs/versioned_docs/version-4.x/getting-started/development.mdx @@ -0,0 +1,118 @@ +--- +title: Development with DevSpace +sidebar_label: 4. Build & Develop +--- + +import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; + +DevSpace allows you to develop applications directly inside a Kubernetes cluster. + +The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. + +## Start Development Mode +Run the following command to start your application in development mode: +```bash +devspace dev +``` + +
+ +
DevSpace CLI - Development Mode
+
+ + +When running `devspace dev`, the `dev` section in `devspace.yaml` becomes important: +```yaml +dev: + ports: # Port Forwarding Configuration + - imageName: app # Select pod & container by image name (reference to images section) + forward: # List of ports to forward + - port: 8080 + open: # Open Browser (after deployment) + - url: http://localhost:8080 + sync: # File Sync Configuration + - imageName: app # Select pod & container by image name (reference to images section) + uploadExcludePaths: # Never upload these files from local filesystem to the container + - Dockerfile + - .git + - devspace.yaml + onUpload: # Commands to execute after uploading files + restartContainer: true # Restart the container (uses the restart helper) +``` + +Running `devspace dev` will do the following: + +1. **Build and deploy** your application +2. **Stream the logs** of all containers deployed during the deployment process +3. **Forward all ports** specified in the [`dev.ports` section in the `devspace.yaml`](../configuration/development/port-forwarding.mdx) +4. **Sync all file changes** according to the [sync config in `dev.sync`](../configuration/development/file-synchronization.mdx), so you can restart your application inside the running container without having to rebuild images or redeploy anything + +
+ +
+ Deployment Workflow +
DevSpace CLI - Deployment Workflow
+
+ + +
+ +## Workflows + +### 1. Edit Files & Restart +While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. + +**Try it and just edit a file!** + +You will see that the logs show how DevSpace restarts your application inside the container: +```logs +[app] ############### Restart container ############### +``` + + +### 2. Open UI (in the browser) +When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: +```bash +######################################################### +[info] DevSpace UI available at: http://localhost:8090 +######################################################### +``` + +By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) + +You can also start the UI without running `devspace dev` using this command: +```bash +devspace ui +``` + +[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) + +
+ +
DevSpace CLI - Development UI
+
+ +:::info Runs on Localhost +The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. +::: + + +### 3. Use Port Forwarding +While `devspace dev` is running, you can access your application via `localhost:[PORT]` because DevSpace starts port forwarding for all ports specified in the `dev.ports` section of your project's `devspace.yaml`. + +Port forwarding also allows you to attach to remote debuggers if you package them into your development Docker image. This allows you to set breakpoints in your IDE and the code execution will break inside the remote container while you can debug in your IDE. + +:::info Port Detection +When running `devspace init`, DevSpace detects all ports within your Dockerfile (i.e. `EXPOSE [PORT]` lines) and automatically configures forwarding for them when creating the `devspace.yaml`. +::: + +Learn more about how to [configure port forwarding](../configuration/development/port-forwarding.mdx). + + +## Notes + + diff --git a/docs/versioned_docs/version-4.x/getting-started/initialize-project.mdx b/docs/versioned_docs/version-4.x/getting-started/initialize-project.mdx new file mode 100644 index 0000000000..d38e0f1554 --- /dev/null +++ b/docs/versioned_docs/version-4.x/getting-started/initialize-project.mdx @@ -0,0 +1,270 @@ +--- +title: Initialize a Project +sidebar_label: 2. Initialize Project +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Step from '@site/src/components/Step/Step'; +import FragmentTipUseNamespace from '../fragments/tip-use-namespace.mdx'; +import FragmentNoteCreateSpace from '../fragments/note-create-space.mdx'; + +## Choose a Project +You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-nodejs +cd quickstart-nodejs +``` + +:::note Tutorials +After finishing this Getting Started Guide, make sure to also check out one of these tutorials: +- [Deploy an Express.js Server to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes) +- [Deploy React.js Apps to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes) +- [Deploy Vue.js Apps to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes) +::: + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-python +cd quickstart-python +``` + +:::note Tutorial +After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Django Projects to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes) +::: + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-ruby +cd quickstart-ruby +``` + +:::note Tutorial +After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Ruby on Rails to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes) +::: + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-golang +cd quickstart-golang +``` + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-php +cd quickstart-php +``` + +:::note Tutorial +After finishing this Getting Started Guide, make sure to also check out the tutorial: [Deploy Laravel Projects to Kubernetes using DevSpace](https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes) +::: + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-java +cd quickstart-java +``` + + + + +```bash +git clone https://github.com/devspace-cloud/quickstart-asp-dotnet +cd quickstart-asp-dotnet +``` + + + + +```bash +# Navigate to the root directory of your project +cd /path/to/your/project +``` + +:::info +If you are using DevSpace for the first time, it is highly recommended that you use one of the demo projects. +::: + + + + + +
+ +## Initialize Your Project +Run this command in your project directory to create a `devspace.yaml` config file for your project: +```bash +devspace init +``` + +
+ +
DevSpace CLI - Initialize Project
+
+ +While initializing your project, DevSpace will ask you a couple of questions and then create the config file `devspace.yaml` which will look similar to this one: + +```yaml +# Config version +version: v1beta9 + +# Defines all Dockerfiles that DevSpace will build, tag and push +images: + app: # Key 'app' = Name of this image + image: reg.tld/username/devspace # Registry and image name for pushing the image + preferSyncOverRebuild: true + injectRestartHelper: true + build: ... + +# Defines an array of everything (component, Helm chart, Kubernetes maninfests) +# that will be deployed with DevSpace in the specified order +deployments: +- name: quickstart # Name of this deployment + helm: # Deploy using Helm + componentChart: true # Use the Component Helm Chart + values: # Override Values for chart (can also be set using valuesFiles option) + containers: # Defines an array of containers that run in the same pods started by this component + - image: reg.tld/username/devspace # Image of this container + service: # Expose this component with a Kubernetes service + ports: # Array of container ports to expose through the service + - port: 3000 # Exposes container port 3000 on service port 3000 + +# Settings for development mode (will be explained later) +dev: ... + +# Settings for development mode (will be explained later) +profiles: ... +``` + +
+ +## Prepare Kube-Context +To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. + + + + +:::info Free Demo Namespace +If you don't have a Kubernetes cluster or simply want to test DevSpace without using your own cluster, choose the free demo namespaces sponsored by DevSpace Cloud. [Learn more about Demo Spaces.](https://devspace.cloud/products/devspace-cloud#pricing) +::: + +Run the following command to create a free Kubernetes namespace: +```bash +devspace create space my-app # requires login via GitHub or email +``` + + + + + + +:::note Local Clusters +Local clusters run on your local dev machine and include: minikube, kind, k3s, mikrok8s etc. +::: + +If you want to deploy to a local Kubernetes cluster, make sure your **current kube-context** points to this cluster and tell DevSpace which namespace to use: + +```bash +devspace use namespace my-namespace # will be automatically created during deployment +``` + + + + + + +:::note Remote Clusters +Remote clusters run in a cloud or private data center and include: GKE, EKS, AKS, bare metal etc. +::: + +When using a remote cluster, you can either use it just for yourself or you can share the cluster with your colleagues. + + + + +```bash +devspace use namespace my-namespace # will be automatically created during deployment +``` + + + + + + +
+1 + +Connect cluster to DevSpace Cloud +```bash +devspace connect cluster +``` +Learn more about connecting cluster in the [documentation of DevSpace Cloud](https://devspace.cloud/cloud/docs/admin/getting-started/connect-clusters). + +:::info DevSpace Cloud On-Premise +Instead of using the SaaS edition of DevSpace Cloud, you can also [install the on-premise edition in your own cluster](https://devspace.cloud/cloud/docs/admin/getting-started/setup#choose-saas-vs-on-premise). +::: + +
+2 + +Create isolated namespace (= Space) + +```bash +devspace create space my-app # requires login via GitHub or email +``` + + + +
+3 + +Add cluster users and allow them to create Spaces + +Learn more about how to do this in the [documentation of DevSpace Cloud](https://devspace.cloud/cloud/docs/admin/getting-started/cluster-users). + +
+
+ +
+
diff --git a/docs/versioned_docs/version-4.13/getting-started/installation.mdx b/docs/versioned_docs/version-4.x/getting-started/installation.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/getting-started/installation.mdx rename to docs/versioned_docs/version-4.x/getting-started/installation.mdx diff --git a/docs/versioned_docs/version-4.13/getting-started/next-steps.mdx b/docs/versioned_docs/version-4.x/getting-started/next-steps.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/getting-started/next-steps.mdx rename to docs/versioned_docs/version-4.x/getting-started/next-steps.mdx diff --git a/docs/versioned_docs/version-4.13/guides/basics.mdx b/docs/versioned_docs/version-4.x/guides/basics.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/basics.mdx rename to docs/versioned_docs/version-4.x/guides/basics.mdx diff --git a/docs/versioned_docs/version-4.13/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-4.x/guides/ci-cd-integration.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/ci-cd-integration.mdx rename to docs/versioned_docs/version-4.x/guides/ci-cd-integration.mdx diff --git a/docs/pages/guides/community-projects.mdx b/docs/versioned_docs/version-4.x/guides/community-projects.mdx similarity index 100% rename from docs/pages/guides/community-projects.mdx rename to docs/versioned_docs/version-4.x/guides/community-projects.mdx diff --git a/docs/pages/guides/dev-staging-production.mdx b/docs/versioned_docs/version-4.x/guides/dev-staging-production.mdx similarity index 100% rename from docs/pages/guides/dev-staging-production.mdx rename to docs/versioned_docs/version-4.x/guides/dev-staging-production.mdx diff --git a/docs/versioned_docs/version-4.13/guides/file-synchronization.mdx b/docs/versioned_docs/version-4.x/guides/file-synchronization.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/file-synchronization.mdx rename to docs/versioned_docs/version-4.x/guides/file-synchronization.mdx diff --git a/docs/pages/guides/image-building.mdx b/docs/versioned_docs/version-4.x/guides/image-building.mdx similarity index 100% rename from docs/pages/guides/image-building.mdx rename to docs/versioned_docs/version-4.x/guides/image-building.mdx diff --git a/docs/versioned_docs/version-4.13/guides/interactive-mode.mdx b/docs/versioned_docs/version-4.x/guides/interactive-mode.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/interactive-mode.mdx rename to docs/versioned_docs/version-4.x/guides/interactive-mode.mdx diff --git a/docs/versioned_docs/version-4.x/guides/localhost-ui.mdx b/docs/versioned_docs/version-4.x/guides/localhost-ui.mdx new file mode 100644 index 0000000000..98ac39ebae --- /dev/null +++ b/docs/versioned_docs/version-4.x/guides/localhost-ui.mdx @@ -0,0 +1,131 @@ +--- +title: DevSpace Localhost UI +sidebar_label: DevSpace UI +--- + +DevSpace provides a powerful client-only UI for Kubernetes development. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Overview
+
+ +## Open The UI +Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: +```bash +######################################################### +[info] DevSpace UI available at: http://localhost:8090 +######################################################### +``` +By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. + +To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. + +Additionally, you can also start the UI using the following command: +```bash +devspace ui +``` + +:::info Use without Config +The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. +::: + +:::note +If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. +::: + +## Logs +The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. + +### Inspecting Pods & Containers +The logs view allows you to: +- switch the kube-context and namespace +- list all containers (grouped by pods) in a namespace +- observe the status of all containers and detect issues +- view the YAML definition of each pod +- [stream the logs of a container](#stream-logs) +- [start interactive terminal sessions for a container](#start-terminals) + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Inspecting Pods & Containers
+
+ + +### Stream Logs +To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Streaming Container Logs
+
+ +If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. + +**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. + +**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. + +:::info Last 100 Lines +The log stream prints the last 100 log lines and then starts streaming the logs in real-time. +::: + +:::note Streaming in the background +Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. +::: + + +### Start Terminals +To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Starting Interactive Terminals
+
+ +The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. + +**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. + +**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. + + +### Open / 1-Click Port-Forwarding +If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. + +:::info Service Required +This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). +::: + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
+
+ + +## Stack +If you open the stack view, DevSpace will show: +- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) +- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config +- the [config variables](../configuration/variables/basics.mdx) available for this project + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Stack: Config, Profile, Variables
+
+ + +## Commands +DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. + +The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
+
+ +Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: +```bash +devspace run my-command +``` diff --git a/docs/pages/guides/networking-domains.mdx b/docs/versioned_docs/version-4.x/guides/networking-domains.mdx similarity index 100% rename from docs/pages/guides/networking-domains.mdx rename to docs/versioned_docs/version-4.x/guides/networking-domains.mdx diff --git a/docs/pages/guides/remote-debugging.mdx b/docs/versioned_docs/version-4.x/guides/remote-debugging.mdx similarity index 100% rename from docs/pages/guides/remote-debugging.mdx rename to docs/versioned_docs/version-4.x/guides/remote-debugging.mdx diff --git a/docs/versioned_docs/version-4.13/introduction.md b/docs/versioned_docs/version-4.x/introduction.md similarity index 96% rename from docs/versioned_docs/version-4.13/introduction.md rename to docs/versioned_docs/version-4.x/introduction.md index b474f724bd..238dd4cdd0 100644 --- a/docs/versioned_docs/version-4.13/introduction.md +++ b/docs/versioned_docs/version-4.x/introduction.md @@ -12,7 +12,7 @@ DevSpace is a client-only, open-source developer tool for Kubernetes: ## How does it work? DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - + ## Why DevSpace? @@ -53,4 +53,4 @@ DevSpace is battle tested with many Kubernetes distributions including: - **Self-managed Kubernetes clusters** (e.g. created with Rancher)
- + diff --git a/docs/versioned_docs/version-5.15/commands/devspace.md b/docs/versioned_docs/version-5.15/commands/devspace.md deleted file mode 100644 index 77355f7887..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Command - devspace" -sidebar_label: devspace ---- - -## devspace - -Welcome to the DevSpace! - -### Synopsis - -DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes. Get started by running the init command in one of your projects: - - devspace init - -### Options - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - -h, --help help for devspace - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - -``` - -``` - - -## Flags -## Global & Inherited Flags \ No newline at end of file diff --git a/docs/versioned_docs/version-5.15/commands/devspace_add.md b/docs/versioned_docs/version-5.15/commands/devspace_add.md deleted file mode 100644 index 93dd2af1d8..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_add.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Command - devspace add" -sidebar_label: devspace add ---- - - -Convenience command: adds something to devspace.yaml - -## Synopsis - - -``` -####################################################### -#################### devspace add ##################### -####################################################### -Adds config sections to devspace.yaml -``` - - -## Flags - -``` - -h, --help help for add -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_add_plugin.md b/docs/versioned_docs/version-5.15/commands/devspace_add_plugin.md deleted file mode 100644 index 75d19eb6d8..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_add_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace add plugin" -sidebar_label: devspace add plugin ---- - - -Add a plugin to devspace - -## Synopsis - - -``` -devspace add plugin [flags] -``` - -``` -####################################################### -############### devspace add plugin ################### -####################################################### -Adds a new plugin to devspace - -devspace add plugin https://github.com/my-plugin/plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_analyze.md b/docs/versioned_docs/version-5.15/commands/devspace_analyze.md deleted file mode 100644 index 4210991039..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_analyze.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace analyze" -sidebar_label: devspace analyze ---- - - -Analyzes a kubernetes namespace and checks for potential problems - -## Synopsis - - -``` -devspace analyze [flags] -``` - -``` -####################################################### -################## devspace analyze ################### -####################################################### -Analyze checks a namespaces events, replicasets, services -and pods for potential problems - -Example: -devspace analyze -devspace analyze --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for analyze - --ignore-pod-restarts If true, analyze will ignore the restart events of running pods - --patient If true, analyze will ignore failing pods and events until every deployment, statefulset, replicaset and pods are ready or the timeout is reached - --timeout int Timeout until analyze should stop waiting (default 120) - --wait Wait for pods to get ready if they are just starting (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_attach.md b/docs/versioned_docs/version-5.15/commands/devspace_attach.md deleted file mode 100644 index 3c66e55394..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_attach.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace attach" -sidebar_label: devspace attach ---- - - -Attaches to a container - -## Synopsis - - -``` -devspace attach [flags] -``` - -``` -####################################################### -################# devspace attach ##################### -####################################################### -Attaches to a running container - -devspace attach -devspace attach --pick # Select pod to enter -devspace attach -c my-container -devspace attach -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for attach - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to open a shell to -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_build.md b/docs/versioned_docs/version-5.15/commands/devspace_build.md deleted file mode 100644 index 1df6012752..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_build.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace build" -sidebar_label: devspace build ---- - - -Builds all defined images and pushes them - -## Synopsis - - -``` -devspace build [flags] -``` - -``` -####################################################### -################## devspace build ##################### -####################################################### -Builds all defined images and pushes them -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Builds only the specific named dependencies - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -h, --help help for build - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-dependency strings Skips building the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_cleanup.md b/docs/versioned_docs/version-5.15/commands/devspace_cleanup.md deleted file mode 100644 index 553b048918..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_cleanup.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace cleanup" -sidebar_label: devspace cleanup ---- - - -Cleans up resources - -## Synopsis - - -``` -####################################################### -################## devspace cleanup ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for cleanup -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-5.15/commands/devspace_cleanup_images.md deleted file mode 100644 index 833487d134..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_cleanup_images.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace cleanup images" -sidebar_label: devspace cleanup images ---- - - -Deletes all locally created images from docker - -## Synopsis - - -``` -devspace cleanup images [flags] -``` - -``` -####################################################### -############# devspace cleanup images ################# -####################################################### -Deletes all locally created docker images from docker -####################################################### -``` - - -## Flags - -``` - -h, --help help for images -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_deploy.md b/docs/versioned_docs/version-5.15/commands/devspace_deploy.md deleted file mode 100644 index 748ce6e054..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_deploy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace deploy" -sidebar_label: devspace deploy ---- - - -Deploy the project - -## Synopsis - - -``` -devspace deploy [flags] -``` - -``` -####################################################### -################## devspace deploy #################### -####################################################### -Deploys the current project to a Space or namespace: - -devspace deploy -devspace deploy -n some-namespace -devspace deploy --kube-context=deploy-context -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to (re-)build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to (re-)deploy every deployment - -h, --help help for deploy - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips building of images - --skip-dependency strings Skips deploying the following dependencies - --skip-deploy Skips deploying and only builds images - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --timeout int Timeout until deploy should stop waiting (default 120) - --verbose-dependencies Deploys the dependencies verbosely (default true) - --wait If true will wait for pods to be running or fails after given timeout -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_dev.md b/docs/versioned_docs/version-5.15/commands/devspace_dev.md deleted file mode 100644 index 93853fb60a..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_dev.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: "Command - devspace dev" -sidebar_label: devspace dev ---- - - -Starts the development mode - -## Synopsis - - -``` -devspace dev [flags] -``` - -``` -####################################################### -################### devspace dev ###################### -####################################################### -Starts your project in development mode: -1. Builds your Docker images and override entrypoints if specified -2. Deploys the deployments via helm or kubectl -3. Forwards container ports to the local computer -4. Starts the sync client -5. Streams the logs of deployed containers - -Open terminal instead of logs: -- Use "devspace dev -t" for opening a terminal -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specified named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - --exit-after-deploy Exits the command after building the images and deploying the project - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to deploy every deployment - -h, --help help for dev - -i, --interactive DEPRECATED: DO NOT USE ANYMORE - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --open Open defined URLs in the browser, if defined (default true) - --portforwarding Enable port forwarding (default true) - --print-sync If enabled will print the sync log to the terminal - --skip-build Skips building of images - --skip-dependency strings Skips the following dependencies for deployment - -x, --skip-pipeline Skips build & deployment and only starts sync, portforwarding & terminal - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --sync Enable code synchronization (default true) - -t, --terminal Open a terminal instead of showing logs - --timeout int Timeout until dev should stop waiting and fail (default 120) - --ui Start the ui server (default true) - --ui-port int The port to use when opening the ui server - --verbose-dependencies Deploys the dependencies verbosely (default true) - --verbose-sync When enabled the sync will log every file change - --wait If true will wait first for pods to be running or fails after given timeout - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_enter.md b/docs/versioned_docs/version-5.15/commands/devspace_enter.md deleted file mode 100644 index f04089ccdc..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_enter.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Command - devspace enter" -sidebar_label: devspace enter ---- - - -Open a shell to a container - -## Synopsis - - -``` -devspace enter [flags] -``` - -``` -####################################################### -################## devspace enter ##################### -####################################################### -Execute a command or start a new terminal in your -devspace: - -devspace enter -devspace enter --pick # Select pod to enter -devspace enter bash -devspace enter -c my-container -devspace enter bash -n my-namespace -devspace enter bash -l release=test -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for enter - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod / container if multiple are found (default true) - --pod string Pod to open a shell to - --wait Wait for the pod(s) to start if they are not running - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_init.md b/docs/versioned_docs/version-5.15/commands/devspace_init.md deleted file mode 100644 index 3590599258..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_init.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace init" -sidebar_label: devspace init ---- - - -Initializes DevSpace in the current folder - -## Synopsis - - -``` -devspace init [flags] -``` - -``` -####################################################### -#################### devspace init #################### -####################################################### -Initializes a new devspace project within the current -folder. Creates a devspace.yaml with all configuration. -####################################################### -``` - - -## Flags - -``` - --context string Context path to use for intialization - --dockerfile string Dockerfile to use for initialization (default "./Dockerfile") - -h, --help help for init - --provider string The cloud provider to use - -r, --reconfigure Change existing configuration -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list.md b/docs/versioned_docs/version-5.15/commands/devspace_list.md deleted file mode 100644 index d10b138b1e..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace list" -sidebar_label: devspace list ---- - - -Lists configuration - -## Synopsis - - -``` -####################################################### -#################### devspace list #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for list -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_commands.md b/docs/versioned_docs/version-5.15/commands/devspace_list_commands.md deleted file mode 100644 index 64fb860ad8..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_commands.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace list commands" -sidebar_label: devspace list commands ---- - - -Lists all custom DevSpace commands - -## Synopsis - - -``` -devspace list commands [flags] -``` - -``` -####################################################### -############## devspace list commands ################# -####################################################### -Lists all DevSpace custom commands defined in the -devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for commands -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_contexts.md b/docs/versioned_docs/version-5.15/commands/devspace_list_contexts.md deleted file mode 100644 index 51f8bdf4de..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_contexts.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace list contexts" -sidebar_label: devspace list contexts ---- - - -Lists all kube contexts - -## Synopsis - - -``` -devspace list contexts [flags] -``` - -``` -####################################################### -############## devspace list contexts ################# -####################################################### -Lists all available kube contexts - -Example: -devspace list contexts -####################################################### -``` - - -## Flags - -``` - -h, --help help for contexts -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_deployments.md b/docs/versioned_docs/version-5.15/commands/devspace_list_deployments.md deleted file mode 100644 index f0dddddde8..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_deployments.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list deployments" -sidebar_label: devspace list deployments ---- - - -Lists and shows the status of all deployments - -## Synopsis - - -``` -devspace list deployments [flags] -``` - -``` -####################################################### -############# devspace list deployments ############### -####################################################### -Shows the status of all deployments -####################################################### -``` - - -## Flags - -``` - -h, --help help for deployments -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-5.15/commands/devspace_list_namespaces.md deleted file mode 100644 index 1ebfa230b6..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_namespaces.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list namespaces" -sidebar_label: devspace list namespaces ---- - - -Lists all namespaces in the current context - -## Synopsis - - -``` -devspace list namespaces [flags] -``` - -``` -####################################################### -############ devspace list namespaces ################# -####################################################### -Lists all namespaces in the selected kube context -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespaces -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_plugins.md b/docs/versioned_docs/version-5.15/commands/devspace_list_plugins.md deleted file mode 100644 index cb5bc0d884..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_plugins.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list plugins" -sidebar_label: devspace list plugins ---- - - -Lists all installed devspace plugins - -## Synopsis - - -``` -devspace list plugins [flags] -``` - -``` -####################################################### -############# devspace list plugins ################## -####################################################### -Lists all installed plugins - -devspace list plugins -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugins -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_ports.md b/docs/versioned_docs/version-5.15/commands/devspace_list_ports.md deleted file mode 100644 index e1fde513b4..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_ports.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list ports" -sidebar_label: devspace list ports ---- - - -Lists port forwarding configurations - -## Synopsis - - -``` -devspace list ports [flags] -``` - -``` -####################################################### -############### devspace list ports ################### -####################################################### -Lists the port forwarding configurations -####################################################### -``` - - -## Flags - -``` - -h, --help help for ports -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_profiles.md b/docs/versioned_docs/version-5.15/commands/devspace_list_profiles.md deleted file mode 100644 index 9092f0dcd3..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_profiles.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list profiles" -sidebar_label: devspace list profiles ---- - - -Lists all DevSpace profiles - -## Synopsis - - -``` -devspace list profiles [flags] -``` - -``` -####################################################### -############## devspace list profiles ################# -####################################################### -Lists all DevSpace configuartions for this project -####################################################### -``` - - -## Flags - -``` - -h, --help help for profiles -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_sync.md b/docs/versioned_docs/version-5.15/commands/devspace_list_sync.md deleted file mode 100644 index 69e6fd706b..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_sync.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list sync" -sidebar_label: devspace list sync ---- - - -Lists sync configuration - -## Synopsis - - -``` -devspace list sync [flags] -``` - -``` -####################################################### -################# devspace list sync ################## -####################################################### -Lists the sync configuration -####################################################### -``` - - -## Flags - -``` - -h, --help help for sync -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_list_vars.md b/docs/versioned_docs/version-5.15/commands/devspace_list_vars.md deleted file mode 100644 index cc32ef92c0..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_list_vars.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list vars" -sidebar_label: devspace list vars ---- - - -Lists the vars in the active config - -## Synopsis - - -``` -devspace list vars [flags] -``` - -``` -####################################################### -############### devspace list vars #################### -####################################################### -Lists the defined vars in the devspace config with their -values -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars - -o, --output string The output format of the command. Can be either empty, keyvalue or json -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_logs.md b/docs/versioned_docs/version-5.15/commands/devspace_logs.md deleted file mode 100644 index 0cc91b281d..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_logs.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Command - devspace logs" -sidebar_label: devspace logs ---- - - -Prints the logs of a pod and attaches to it - -## Synopsis - - -``` -devspace logs [flags] -``` - -``` -####################################################### -#################### devspace logs #################### -####################################################### -Logs prints the last log of a pod container and attachs -to it - -Example: -devspace logs -devspace logs --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -f, --follow Attach to logs afterwards - -h, --help help for logs - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --lines int Max amount of lines to print from the last log (default 200) - --pick Select a pod (default true) - --pod string Pod to print the logs of - --wait Wait for the pod(s) to start if they are not running -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_open.md b/docs/versioned_docs/version-5.15/commands/devspace_open.md deleted file mode 100644 index 955d0566bf..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_open.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace open" -sidebar_label: devspace open ---- - - -Opens the space in the browser - -## Synopsis - - -``` -devspace open [flags] -``` - -``` -####################################################### -#################### devspace open #################### -####################################################### -Opens the space domain in the browser - -Example: -devspace open -####################################################### -``` - - -## Flags - -``` - -h, --help help for open - --port int The port on the localhost to listen on - --provider string The cloud provider to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_print.md b/docs/versioned_docs/version-5.15/commands/devspace_print.md deleted file mode 100644 index a9601ce337..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_print.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace print" -sidebar_label: devspace print ---- - - -Print displays the configuration - -## Synopsis - - -``` -devspace print [flags] -``` - -``` -####################################################### -################## devspace print ##################### -####################################################### -Prints the configuration for the current or given -profile after all patching and variable substitution -####################################################### -``` - - -## Flags - -``` - -h, --help help for print - --skip-info When enabled, only prints the configuration without additional information -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_purge.md b/docs/versioned_docs/version-5.15/commands/devspace_purge.md deleted file mode 100644 index fe7f236a63..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_purge.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace purge" -sidebar_label: devspace purge ---- - - -Delete deployed resources - -## Synopsis - - -``` -devspace purge [flags] -``` - -``` -####################################################### -################### devspace purge #################### -####################################################### -Deletes the deployed kuberenetes resources: - -devspace purge -devspace purge --dependencies -devspace purge -d my-deployment -####################################################### -``` - - -## Flags - -``` - -a, --all When enabled purges the dependencies as well - --dependencies DEPRECATED: Please use --all instead - --dependency strings Purges only the specific named dependencies - -d, --deployments string The deployment to delete (You can specify multiple deployments comma-separated, e.g. devspace-default,devspace-database etc.) - -h, --help help for purge - --skip-dependency strings Skips the following dependencies from purging - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_remove.md b/docs/versioned_docs/version-5.15/commands/devspace_remove.md deleted file mode 100644 index a6c5e71bef..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_remove.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace remove" -sidebar_label: devspace remove ---- - - -Changes devspace configuration - -## Synopsis - - -``` -####################################################### -################## devspace remove #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for remove -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_remove_context.md b/docs/versioned_docs/version-5.15/commands/devspace_remove_context.md deleted file mode 100644 index 41f1c2013b..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_remove_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace remove context" -sidebar_label: devspace remove context ---- - - -Removes a kubectl-context - -## Synopsis - - -``` -devspace remove context [flags] -``` - -``` -####################################################### -############# devspace remove context ################# -####################################################### -Removes a kubectl-context - -Example: -devspace remove context myspace -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_remove_plugin.md b/docs/versioned_docs/version-5.15/commands/devspace_remove_plugin.md deleted file mode 100644 index 91f9b76b86..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_remove_plugin.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace remove plugin" -sidebar_label: devspace remove plugin ---- - - -Removes a devspace plugin - -## Synopsis - - -``` -devspace remove plugin [flags] -``` - -``` -####################################################### -############# devspace remove plugin ################## -####################################################### -Removes a plugin - -devspace remove plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_render.md b/docs/versioned_docs/version-5.15/commands/devspace_render.md deleted file mode 100644 index d8744a1159..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_render.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace render" -sidebar_label: devspace render ---- - - -Render builds all defined images and shows the yamls that would be deployed - -## Synopsis - - -``` -devspace render [flags] -``` - -``` -####################################################### -################## devspace render ##################### -####################################################### -Builds all defined images and shows the yamls that would -be deployed via helm and kubectl, but skips actual -deployment. -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Renders only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to build every image - -h, --help help for render - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips image building - --skip-dependencies Skips rendering the dependencies - --skip-dependency strings Skips rendering the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_reset.md b/docs/versioned_docs/version-5.15/commands/devspace_reset.md deleted file mode 100644 index 6e4d8ceb1a..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_reset.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace reset" -sidebar_label: devspace reset ---- - - -Resets an cluster token - -## Synopsis - - -``` -####################################################### -################## devspace reset ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for reset -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-5.15/commands/devspace_reset_dependencies.md deleted file mode 100644 index 9ac4018f4a..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_reset_dependencies.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset dependencies" -sidebar_label: devspace reset dependencies ---- - - -Resets the dependencies cache - -## Synopsis - - -``` -devspace reset dependencies [flags] -``` - -``` -####################################################### -############ devspace reset dependencies ############## -####################################################### -Deletes the complete dependency cache - -Examples: -devspace reset dependencies -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_reset_pods.md b/docs/versioned_docs/version-5.15/commands/devspace_reset_pods.md deleted file mode 100644 index afea2011ca..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_reset_pods.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset pods" -sidebar_label: devspace reset pods ---- - - -Resets the replaced pods - -## Synopsis - - -``` -devspace reset pods [flags] -``` - -``` -####################################################### -############### devspace reset pods ################### -####################################################### -Resets the replaced pods to its original state - -Examples: -devspace reset pods -####################################################### -``` - - -## Flags - -``` - -h, --help help for pods -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_reset_vars.md b/docs/versioned_docs/version-5.15/commands/devspace_reset_vars.md deleted file mode 100644 index 9b18a646d1..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_reset_vars.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset vars" -sidebar_label: devspace reset vars ---- - - -Resets the current config vars - -## Synopsis - - -``` -devspace reset vars [flags] -``` - -``` -####################################################### -############### devspace reset vars ################### -####################################################### -Resets the saved variables of the current config - -Examples: -devspace reset vars -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_restart.md b/docs/versioned_docs/version-5.15/commands/devspace_restart.md deleted file mode 100644 index f55e9997d4..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_restart.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Command - devspace restart" -sidebar_label: devspace restart ---- - - -Restarts containers where the sync restart helper is injected - -## Synopsis - - -``` -devspace restart [flags] -``` - -``` -####################################################### -################## devspace restart ################### -####################################################### -Restarts containers where the sync restart helper -is injected: - -devspace restart -devspace restart -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod to restart - -h, --help help for restart - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to restart -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_restore.md b/docs/versioned_docs/version-5.15/commands/devspace_restore.md deleted file mode 100644 index 279d29b0af..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_restore.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace restore" -sidebar_label: devspace restore ---- - - -Restore configuration - -## Synopsis - - -``` -####################################################### -################## devspace restore ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for restore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_restore_vars.md b/docs/versioned_docs/version-5.15/commands/devspace_restore_vars.md deleted file mode 100644 index 86ce4d55f9..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_restore_vars.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace restore vars" -sidebar_label: devspace restore vars ---- - - -Restores variable values from kubernetes - -## Synopsis - - -``` -devspace restore vars [flags] -``` - -``` -####################################################### -############### devspace restore vars ################# -####################################################### -Restores devspace config variable values from a kubernetes -secret. - -Examples: -devspace restore vars -devspace restore vars --namespace test -devspace restore vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_run.md b/docs/versioned_docs/version-5.15/commands/devspace_run.md deleted file mode 100644 index 0addeec7f1..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_run.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace run" -sidebar_label: devspace run ---- - - -Run executes a predefined command - -## Synopsis - - -``` -devspace run [flags] -``` - -``` -####################################################### -##################### devspace run #################### -####################################################### -Run executes a predefined command from the devspace.yaml - -Examples: -devspace run mycommand --myarg 123 -devspace run mycommand2 1 2 3 -devspace --dependency my-dependency run any-command --any-command-flag -####################################################### -``` - - -## Flags - -``` - --dependency string Run a command from a specific dependency - -h, --help help for run -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_save.md b/docs/versioned_docs/version-5.15/commands/devspace_save.md deleted file mode 100644 index 6eb1fe6b87..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_save.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace save" -sidebar_label: devspace save ---- - - -Save configuration - -## Synopsis - - -``` -####################################################### -#################### devspace save #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for save -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_save_vars.md b/docs/versioned_docs/version-5.15/commands/devspace_save_vars.md deleted file mode 100644 index db54e3dcdc..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_save_vars.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Command - devspace save vars" -sidebar_label: devspace save vars ---- - - -Saves variable values to kubernetes - -## Synopsis - - -``` -devspace save vars [flags] -``` - -``` -####################################################### -################ devspace save vars ################### -####################################################### -Saves devspace config variable values into a kubernetes -secret. Variable values can be shared or restored via -devspace restore vars. - -Examples: -devspace save vars -devspace save vars --namespace test -devspace save vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_set.md b/docs/versioned_docs/version-5.15/commands/devspace_set.md deleted file mode 100644 index 96298bc808..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_set.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace set" -sidebar_label: devspace set ---- - - -Make global configuration changes - -## Synopsis - - -``` -####################################################### -#################### devspace set ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for set -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_set_var.md b/docs/versioned_docs/version-5.15/commands/devspace_set_var.md deleted file mode 100644 index 38842faab4..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_set_var.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace set var" -sidebar_label: devspace set var ---- - - -Sets a variable - -## Synopsis - - -``` -devspace set var [flags] -``` - -``` -####################################################### -################# devspace set var #################### -####################################################### -Sets a specific variable - -Examples: -devspace set var key=value -devspace set var key=value key2=value2 -####################################################### -``` - - -## Flags - -``` - -h, --help help for var - --overwrite If true will overwrite the variables value even if its set already (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_sync.md b/docs/versioned_docs/version-5.15/commands/devspace_sync.md deleted file mode 100644 index b4802709a1..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_sync.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Command - devspace sync" -sidebar_label: devspace sync ---- - - -Starts a bi-directional sync between the target container and the local path - -## Synopsis - - -``` -devspace sync [flags] -``` - -``` -####################################################### -################### devspace sync ##################### -####################################################### -Starts a bi-directionaly sync between the target container -and the current path: - -devspace sync -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -devspace sync --container-path=/my-path -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to sync to - --container-path string Container path to use (Default is working directory) - --download-on-initial-sync DEPRECATED: Downloads all locally non existing remote files in the beginning (default true) - --download-only If set DevSpace will only download files - -e, --exclude strings Exclude directory from sync - -h, --help help for sync - --initial-sync string The initial sync strategy to use (mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --local-path string Local path to use (Default is current directory - --no-watch Synchronizes local and remote and then stops - --pick Select a pod (default true) - --pod string Pod to sync to - --upload-only If set DevSpace will only upload files - --verbose Shows every file that is synced -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_ui.md b/docs/versioned_docs/version-5.15/commands/devspace_ui.md deleted file mode 100644 index a96da5bf09..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_ui.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace ui" -sidebar_label: devspace ui ---- - - -Opens the localhost UI in the browser - -## Synopsis - - -``` -devspace ui [flags] -``` - -``` -####################################################### -##################### devspace ui ##################### -####################################################### -Opens the localhost UI in the browser -####################################################### -``` - - -## Flags - -``` - --dev Ignore errors when downloading UI - -h, --help help for ui - --host string The host to use when opening the ui server (default "localhost") - --port int The port to use when opening the ui server - --server If enabled will force start a server (otherwise an existing UI server is searched) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_update.md b/docs/versioned_docs/version-5.15/commands/devspace_update.md deleted file mode 100644 index d2f87e33f1..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_update.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace update" -sidebar_label: devspace update ---- - - -Updates the current config - -## Synopsis - - -``` -####################################################### -################## devspace update #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for update -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-5.15/commands/devspace_update_dependencies.md deleted file mode 100644 index fb3b98f886..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_update_dependencies.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace update dependencies" -sidebar_label: devspace update dependencies ---- - - -Updates the git repositories of the dependencies defined in the devspace.yaml - -## Synopsis - - -``` -devspace update dependencies [flags] -``` - -``` -####################################################### -############ devspace update dependencies ############# -####################################################### -Updates the git repositories of the dependencies defined -in the devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_update_plugin.md b/docs/versioned_docs/version-5.15/commands/devspace_update_plugin.md deleted file mode 100644 index e234901371..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_update_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace update plugin" -sidebar_label: devspace update plugin ---- - - -Updates a devspace plugin - -## Synopsis - - -``` -devspace update plugin [flags] -``` - -``` -####################################################### -############# devspace update plugin ################## -####################################################### -Updates a plugin - -devspace update plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_upgrade.md b/docs/versioned_docs/version-5.15/commands/devspace_upgrade.md deleted file mode 100644 index eba126f39f..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_upgrade.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace upgrade" -sidebar_label: devspace upgrade ---- - - -Upgrade the DevSpace CLI to the newest version - -## Synopsis - - -``` -devspace upgrade [flags] -``` - -``` -####################################################### -################## devspace upgrade ################### -####################################################### -Upgrades the DevSpace CLI to the newest version -####################################################### -``` - - -## Flags - -``` - -h, --help help for upgrade - --version string The version to update devspace to. Defaults to the latest stable version available -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_use.md b/docs/versioned_docs/version-5.15/commands/devspace_use.md deleted file mode 100644 index 096ad1ebdc..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_use.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace use" -sidebar_label: devspace use ---- - - -Use specific config - -## Synopsis - - -``` -####################################################### -#################### devspace use ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_use_context.md b/docs/versioned_docs/version-5.15/commands/devspace_use_context.md deleted file mode 100644 index 3b4cb52d5f..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_use_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace use context" -sidebar_label: devspace use context ---- - - -Tells DevSpace which kube context to use - -## Synopsis - - -``` -devspace use context [flags] -``` - -``` -####################################################### -############### devspace use context ################## -####################################################### -Switch the current kube context - -Example: -devspace use context my-context -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_use_namespace.md b/docs/versioned_docs/version-5.15/commands/devspace_use_namespace.md deleted file mode 100644 index ee11acc7f9..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_use_namespace.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace use namespace" -sidebar_label: devspace use namespace ---- - - -Tells DevSpace which namespace to use - -## Synopsis - - -``` -devspace use namespace [flags] -``` - -``` -####################################################### -############## devspace use namespace ################# -####################################################### -Set the default namespace to deploy to - -Example: -devspace use namespace my-namespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespace - --reset Resets the default namespace of the current kube-context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/commands/devspace_use_profile.md b/docs/versioned_docs/version-5.15/commands/devspace_use_profile.md deleted file mode 100644 index 2e531b7836..0000000000 --- a/docs/versioned_docs/version-5.15/commands/devspace_use_profile.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace use profile" -sidebar_label: devspace use profile ---- - - -Use a specific DevSpace profile - -## Synopsis - - -``` -devspace use profile [flags] -``` - -``` -####################################################### -################ devspace use profile ################# -####################################################### -Use a specific DevSpace profile - -Example: -devspace use profile production -devspace use profile staging -devspace use profile --reset -####################################################### -``` - - -## Flags - -``` - -h, --help help for profile - --reset Don't use a profile anymore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.15/configuration/commands/basics.mdx b/docs/versioned_docs/version-5.15/configuration/commands/basics.mdx deleted file mode 100644 index ab03f7b78c..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/commands/basics.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Custom Commands -sidebar_label: commands ---- - -The idea of custom commands is that someone on a team defines a set of useful commands and stores them in the `devspace.yaml`, then commits and pushes this config to the code repository. Now, others can run these custom commands without having to remember all the details or having to read through endless pages of documentation. - -Custom commands are being shared in the `commands` section of `devspace.yaml`: -```yaml -# File: devspace.yaml -images: - default: - image: john/backend -commands: -- name: debug-backend - command: "devspace dev --profile=debug-backend" -profiles: -- name: debug-backend - patches: - - op: replace - path: images.default.entrypoint - value: ["npm", "run", "debug"] -``` - -:::note -Custom commands can be used for more than just running `devspace` commands, e.g. they can run any other script or command, set environment variables etc. If you are familiar with the `scripts` section of the `package.json` for Node.js, you will find that `devspace run [name]` works pretty much the same way as `npm run [name]` -::: - -The above example configuration would allow everyone to run the custom command `debug-backend` like this: -```bash -devspace run debug-backend -devspace run debug-backend --verbose-dependencies -devspace run debug-backend -- --verbose-dependencies -s -``` - -And `devspace run` would execute the following commands internally: -```bash -devspace dev --profile=debug-backend -devspace dev --profile=debug-backend --verbose-dependencies -devspace dev --profile=debug-backend --verbose-dependencies -s -``` - -:::note `--` End of Options Separator -The `--` between the command name and the additional flags for the command tells your terminal that the arguments and flags that follow after the `--` do not belong to `devspace run` and should not be parsed. It is not required but often helpful to use `--` when executing commands using `devspace run`. -::: - -:::info Interactive Commands -Custom commands proxy input and output streams, so you can even share interactive commands such as `devspace enter`. -::: - - -## Configuration - -### `name` -The `name` option is mandatory and expects a string with name that serves as an alias for the command provided in the `command` option. - - -### `command` -The `command` option is mandatory and expects a string with an arbitrary terminal command. - -While you can run any `devspace` command, you can also run other commands (if installed), set environment variables or use `bash` style expressions such as `&&`, `||` or `;`. To ensure that many of your team mates can run the command on any platform, it is highly recommended to keep your command expressions as simple as possible. - -:::info Cross-Platform -Write all commands in `bash` style. DevSpace is using a library to make them cross-platform executable. -::: - -### `appendArgs` -The `appendArgs` option expects either true or false and will append given arguments to the command. If not specified, this option to true. - -Example: -```yaml -commands: -# Running 'devspace run append my-value' will print 'my-value' -- name: append - command: echo -# Running 'devspace run append2 my-value' will print 'my-value my-value' -- name: append2 - command: echo $@ -# Running 'devspace run no-append my-value' will print 'my-value' -- name: append2 - appendArgs: false - command: echo $@ -``` - -### `description` -The `description` option is optional and expects a string with a description of what this command does and when it should be used. This is only used for helping other users to understand the meaning of a command and will be shown when the user runs: `devspace list commands` - - -
- -## Useful Commands - -### `devspace list commands` -Run this command to list all custom commands that are configured: -```bash -devspace list commands -``` - - -### `devspace run dependency1.command` -You can run a command defined in one of the dependencies of the current project like this: -```bash -devspace run [dependency].[command] [command-flags-and-args] -``` - -:::note Working Directory -When running a command of a dependency, DevSpace will use the root folder of the dependency as current working directory when executing the command. -::: diff --git a/docs/versioned_docs/version-5.15/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-5.15/configuration/dependencies/basics.mdx deleted file mode 100644 index 360731a33b..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/dependencies/basics.mdx +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Dependencies -sidebar_label: "Basics" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: - -- You want to reuse an already existing `devspace.yaml` of another project -- You want to define a more complex pipeline with multiple build, hook and deploy steps -- You want to define a common build / deploy step for other projects - -Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. - - - - -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - ports: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - vars: - - name: ROOT_PASSWORD - value: ${ROOT_PASSWORD} -``` - - - - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - - - - -## Dependency Source -DevSpace is able to work with dependencies from the following sources: -- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration -- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) - - -## Execution Order - -Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 - dev: - sync: true -- name: dep2 - source: - path: dep2 - dev: - ports: true -images: - image1: - image: myimage/image -deployments: -- name: deployment1 - helm: - ... -dev: - ports: ... - sync: ... -``` - -### Explanation -In the above `devspace.yaml`, execution order would be as followed: -* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) -* Execute dependency dep2's pull secrets, image building & deployments -* Build image `image1` -* Deploy deployment `deployment1` -* Start merged portforwarding from `dep2` and `dev.ports` -* Start sync from `dep1` and `dev.sync` - -## Referencing Dependencies - -### Reference Image Names -You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageName: dep1.image1 -``` - -With `dep1/devspace.yaml`: -```yaml -images: - image1: - image: myusername/devspace -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: myusername/devspace -``` - -### Referencing Nested Dependencies - -You can also reference nested dependencies (dependencies of dependencies) via: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep2 that is a dependency of dep1 - terminal: - imageName: dep1.dep2.image1 -``` - -### Referencing Dependencies in Deployment Values / Manifests - -It is also possible to reference a dependency's image with the helpers `image()` or `tag()` in a deployment: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: image(dep1.image1):tag(dep1.image1) # -> replaced with 'myusername/devspace:xxxx' -``` - -With a dependency `dep1/devspace.yaml` that looks like: -```yaml -images: - image1: - image: myusername/devspace -``` - -## Dependency Resolution -When a DevSpace project has dependencies, DevSpace will: - -1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository -2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) -3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets -4. Remove the leave node from the tree and repeat step 3 until everything has been deployed - -The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. - -### Redundant Dependencies -If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. - -### Circular Dependencies -If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. - -## Useful Commands - -### `devspace update dependencies` -If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.15/configuration/dependencies/git-repository.mdx b/docs/versioned_docs/version-5.15/configuration/dependencies/git-repository.mdx deleted file mode 100644 index 07f33635c0..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/dependencies/git-repository.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Deploy Git-based Dependencies -sidebar_label: "source.git" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - sync: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - dev: - ports: true -dev: - terminal: - imageName: api-server.server-image -``` - -:::info Authentication -DevSpace is using the git credential store. So, if you are able to clone or pull from the specified repository, DevSpace will also be able clone or pull this repository. -::: - -## `source` - -### `source.git` -The `source.git` option expects a string with the URL of a git repository. DevSpace will use the `master` branch by default and assumes that the `devspace.yaml` is located at the root directory of the git repository. To customize this behavior, use the following, complementary config options: -- [`branch` for a different git branch](#sourcebranch) -- [`tag` for a specific git tag or release](#sourcetag) -- [`revision` for a specific git commit hash](#sourcerevision) -- [`subPath` for custom location of `devspace.yaml` within the repository](#sourcesubpath) - -:::note Caching -DevSpace will clone the git repository which is defined as a dependency and cache the project in the global cache folder (i.e. `$HOME/.devspace`). DevSpace will also pull new commits before deploying the dependency. -::: - -#### Example: Git Projects as Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable -- source: - git: https://github.com/my-auth-server - revision: c967392 -- source: - git: https://github.com/my-auth-server - tag: v3.0.1 -``` -**Explanation:** -- When you run `devspace deploy` or `devspace dev` for the first time after defining the dependencies, DevSpace will check out all git projects into the global cache folder `$HOME/.devspace`. -- Whenever you run `devspace deploy` or `devspace dev` (even the first time), DevSpace will: - - Run a `git pull` for all cached repositories. - - Load the `devspace.yaml` files of the dependency projects and resolve their dependencies respectively. - - Deploy all dependency projects according to their `devspace.yaml` files. - -### `source.branch` -The `source.branch` option expects a string stating the branch of the git repository referenced via `source.git` that should be used when deploying this dependency. - -#### Default Value For `source.branch` -```yaml -branch: master -``` - -### `source.tag` -The `source.tag` option expects a string stating a tag of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.revision` -The `source.revision` option expects a string stating a commit hash of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.subPath` -The `source.subPath` option expects a string stating a folder within the git repository referenced via `source.git` that contains the `devspace.yaml` for this dependency. - -#### Default Value For `source.subPath` -```yaml -subPath: / -``` - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name within the git repository's `source.subPath` folder. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file dev.yaml for the dependency's DevSpace configuration -# at the root folder of the repository's "stable" branch -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable - configName: dev.yaml -``` - - -## Git Options - -### `source.disableShallow` -The `source.disableShallow` option expects a boolean that prevents DevSpace from using shallow clones (git flag `--depth 1`) when retrieving a dependency via git clone. - -:::info Shallow Clone By Default -DevSpace uses shallow clones of git dependencies which reduces the time to retrieve the dependency. -::: - -#### Default Value For `source.disableShallow` -```yaml -disableShallow: false -``` - -### `source.cloneArgs` -The `source.cloneArgs` option expects an array of additional arguments that DevSpace will pass when cloning a git dependency using the `git clone` command. - -#### Default Value For `source.cloneArgs` -```yaml -cloneArgs: [] -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.15/configuration/dependencies/local-folder.mdx b/docs/versioned_docs/version-5.15/configuration/dependencies/local-folder.mdx deleted file mode 100644 index 8e4f935dd8..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/dependencies/local-folder.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Deploy Path-Based Local Dependencies -sidebar_label: "source.path" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: component-1 - source: - path: ./different/component-1 -- name: component-2 - source: - path: ./different/component-2 -deployments: -- name: use-dependency-image - helm: - componentChart: true - values: - containers: - - image: image(component-1.image1):tag(component-1.image1) -``` - -## `source` - -### `source.path` -The `source.path` option expects a string with a relative path to a folder that contains a `devspace.yaml` which marks a project that is a dependency of the project referencing it. - -#### Example: Local Project as Dependency -```yaml -dependencies: -- source: - path: ../other-project -- source: - path: ./different/subproject -``` -**Explanation:** -- Whenever you run `devspace deploy` or `devspace dev`, DevSpace will: - - Load the `devspace.yaml` files of both dependencies and resolve their dependencies respectively. - - Deploy both projects according to their `devspace.yaml` files. - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name. If not provided, `devspace.yaml` at the dependency `source.path` will be used. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file component-1/dev.yaml -# for the dependency's DevSpace configuration -dependencies: -- source: - path: component-1 - configName: dev.yaml -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.15/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-5.15/configuration/deployments/helm-charts.mdx deleted file mode 100644 index c1d554e150..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/deployments/helm-charts.mdx +++ /dev/null @@ -1,554 +0,0 @@ ---- -title: Deploy Helm Charts -sidebar_label: helm ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentInfoComponentChart from '../../fragments/info-component-chart.mdx'; - -To deploy Helm charts, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - - - - - - -```yaml {5,6} -deployments: -- name: backend - helm: - chart: - name: chart-name - repo: https://my-charts.company.tld/ - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - -```yaml {5} -deployments: -- name: backend - helm: - chart: - name: ./path/to/chart - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - - -## Chart - -### `componentChart` -The `componentChart` option expects a boolean which states if the Component Helm Chart should be used for deployment. - - - -:::warning -If `componentChart: true` is configured, all options under `chart` will be ignored. -::: - -#### Default Value for `componentChart` -```yaml -componentChart: false -``` - -#### Example: Component Chart Deployment -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - -### `chart.name` -The `name` option is mandatory and expects a string stating either: -- **a path to a local chart** that is stored on the filesystem -- **or the name of a remote chart** that is stored in a repository (one specified via [`repo` option](#chartrepo)) or in the form of `repo/name`, where `repo` was added via `helm repo add repo https://repo.url` beforehand - -DevSpace follows the same behavior as `helm install` and first checks if the path specified in `name` exists on the file system and is a valid chart. If not, DevSpace will assume that the `name` is not a path but the name of a remote chart located in a chart repository. - -#### Example: Simple Helm Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -``` - -### `chart.version` -The `version` option expects a string stating the version of the chart that should be used. - -#### Default Value for `version` -```yaml -version: "" -``` - -:::note Latest Version -If no version is specified, Helm will by default use the latest version of the chart. -::: - -#### Example: Custom Chart Version -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - version: "1.3.1" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --version="1.3.1" -``` - -### `chart.repo` -The `repo` option expects a string with a URL to a [Helm Chart Repository](https://helm.sh/docs/chart_repository/). This is equivalent of using the `--repo` flag in `helm install` - -#### Example: Custom Chart Repository -```yaml -deployments: -- name: database - helm: - chart: - name: custom-chart - repo: https://my-repo.tld/ -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database custom-chart --repo "https://my-repo.tld/" -``` - -### `chart.username` -The `username` option expects a string that specifies the user that should be used to access `chart.repo`. Will be used as value for the helm flag `--username` - -### `chart.password` -The `password` option expects a string that specifies the password that should be used to access `chart.repo`. Will be used as value for the helm flag `--password` - -## Values -Helm charts can be configured by overriding the default values of the chart. - -### `values` -The `values` option expects an object with values that should be overriding the default values of this Helm chart. - -Compared to the `valuesFiles` option, using `values` has the following advantages: -- It is easier to comprehend and faster to find (no references) -- It allows you to use [dynamic config variables](../../configuration/variables/basics.mdx) - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `values` -```yaml -values: {} -``` - -#### Example: Using Values in devspace.yaml -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - values: - mysqlRootPassword: ${MYSQL_ROOT_PASSWORD} - mysqlUser: db_user - mysqlDatabase: app_database -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --set mysqlRootPassword="$MYSQL_ROOT_PASSWORD" --set mysqlUser="db_user" --set mysqlDatabase="app_database" -``` - -### `valuesFiles` -The `valuesFiles` option expects an array of paths to yaml files which specify values for overriding the values.yaml of the Helm chart. - -Compared to the `values` option, using `valuesFiles` has the following advantages: -- It reduces the size of your `devspace.yaml` especially when setting many values for a chart -- It allows you to run Helm commands directly without DevSpace, e.g. `helm upgrade [NAME] -f mysql/values.yaml` - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `valuesFiles` -```yaml -valuesFiles: [] -``` - -#### Example: Using Values Files -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - valuesFiles: - - mysql/values.yaml - - mysql/values.production.yaml -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -f mysql/values.yaml -f mysql/values.production.yaml -``` - - -### `replaceImageTags` -The `replaceImageTags` option expects a boolean stating if DevSpace should do [Image Tag Replacement](../../configuration/deployments/basics.mdx#3-tag-replacement). - -By default, DevSpace searches all your values (specified via `values` or `valuesFiles`) for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - replaceImageTags: false -``` - - -## Helm Options - -### `upgradeArgs` -The `upgradeArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm upgrade` during deployment. - -### `templateArgs` -The `templateArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm template` during `devspace render`. - -### `deleteArgs` -The `deleteArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm delete` during `devspace purge`. - -### `wait` -The `wait` option expects a boolean that will be used for the [helm flag `--wait`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `wait` -```yaml -wait: false -``` - -#### Example: Helm Flag Wait -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - wait: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --wait -``` - -### `displayOutput` - -The `displayOutput` option expects a boolean and allows helm output to be printed to the console after `helm install` and `helm upgrade`. This can be used to display `notes.txt` from your helm charts. - -#### Default Value for `displayOutput` -```yaml -displayOutput: false -``` - -#### Example: displayOutput -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - displayOutput: true -``` - -**Explanation:** -Deploying the above example would print the helm output and the `notes.txt` from the bitnami/mysql chart. - - -### `timeout` -The `timeout` option expects an integer representing a number of seconds that will be used for the [helm flag `--timeout`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `timeout` -```yaml -timeout: 180 -``` - -#### Example: Helm Flag Timeout -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - timeout: 300 -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --timeout=300 -``` - -### `force` -The `force` option expects a boolean that will be used for the [helm flag `--force`](https://helm.sh/docs/helm/helm_upgrade). - -#### Default Value for `force` -```yaml -force: false -``` - -#### Example: Helm Flag Force -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - force: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --force -``` - -### `recreate` -The `recreate` option expects a boolean that states if DevSpace should set the Helm flag `--recreate-pods`. It tells Helm to restart all pods for applicable resources (e.g. Deployments). - -#### Default Value for `recreate` -```yaml -recreate: false -``` - -#### Example: Enable Recreate Pods -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - recreate: true -``` - -### `atomic` -The `atomic` option expects a boolean that states if DevSpace should pass the `--atomic` flag to Helm. If set, the upgrade process rolls back all changes in case the upgrade fails. This flag also sets the [`--wait` option](#wait). - -#### Default Value for `atomic` -```yaml -atomic: false -``` - -#### Example: Enable Atomic Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - atomic: true -``` - -### `cleanupOnFail` -The `cleanupOnFail` option expects a boolean that states if DevSpace should set the Helm flag `--cleanup-on-fail`. It allows that Helm deletes newly created resources during a rollback in case the rollback fails. - -#### Default Value for `cleanupOnFail` -```yaml -cleanupOnFail: false -``` - -#### Example: Enable Cleanup On Fail -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - cleanupOnFail: true -``` - -### `disableHooks` -The `disableHooks` option expects a boolean that tells DevSpace to disable hooks when executing Helm commands. - -#### Default Value for `disableHooks` -```yaml -disableHooks: false -``` - -#### Example: Disable Hooks -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - disableHooks: true -``` - -### `v2` -The `v2` option expects a boolean that tells DevSpace to use the legacy version 2 of Helm instead of Helm v3. - -#### Default Value for `v2` -```yaml -v2: false -``` - -### `tillerNamespace` -The `tillerNamespace` option expects a string that will be used for the [helm flag `--tiller-namespace`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning Deprecated -This config option is deprecated because Tiller is not necessary anymore since DevSpace supports Helm v3. -::: - -#### Default Value for `tillerNamespace` -```yaml -tillerNamespace: "" # defaults to default namespace of current context -``` - -#### Example: Change Tiller Namespace -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - tillerNamespace: my-tiller-ns - v2: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -# Helm v2 CLI -helm install --name database bitnami/mysql --tiller-namespace=my-tiller-ns -``` - - -### `path` -The `path` option is optional and expects a string with the path of an Helm v2 binary / executable file which should be used for Helm v2 deployments. - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning -Setting `path` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `helm` to your `$PATH` environment variable instead. -::: - - -## General Options - -### `name` -The `name` option is required and expects a string with the name of the release used to deploy this Helm chart. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the Helm chart to. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: database - namespace: some-namespace - helm: - chart: - name: bitnami/mysql -``` diff --git a/docs/versioned_docs/version-5.15/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-5.15/configuration/deployments/kubernetes-manifests.mdx deleted file mode 100644 index 033550ece8..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/deployments/kubernetes-manifests.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kubernetes Manifests -sidebar_label: kubectl (manifests) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kubernetes manifests with `kubectl apply`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -- name: frontend - kubectl: - manifests: - - frontend/manifest.yaml -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -f backend/ -kubectl apply -f backend-extra/ -kubectl apply -f frontend/manifest.yaml -``` - -:::note Kubectl -Deployments with `kubectl` require `kubectl` to be installed. If the `kubectl` binary cannot be found within the `$PATH` variable and it is not specified by specifying the [`cmdPath` option](#cmdpath), DevSpace will download the `kubectl` binary into the `$HOME/.devspace/bin` folder. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths or path globs that point to Kubernetes manifest files (yaml or json files) or to folders containing Kubernetes manifests or Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ - - glob/path/to/manifests/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `createArgs` -The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize create` to render the manifests using the default flags `--dry-run --output yaml --validate=false`. The actual deployment will be executed using `kubectl apply` after DevSpace has replaced the image tags within the rendered manifests in memory. -::: - -#### Default Value for `createArgs` -```yaml -createArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - createArgs: - - "--recursive" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.15/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-5.15/configuration/deployments/kustomizations.mdx deleted file mode 100644 index 74d10d7539..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/deployments/kustomizations.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kustomizations -sidebar_label: kubectl (kustomize) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kustomizations using `kustomize` / `kubectl apply -k`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml {4} -deployments: -- name: my-deployment - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -k my-kustomization/ -kubectl apply -k another-kustomization/ -``` - -:::warning Kubectl or Kustomize Required -Kustomization deployments require `kubectl` or `kustomize` to be installed. If both are available, DevSpace will use the `kustomize` binary by default. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths that point to directories containing Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `kustomizeArgs` -The `kustomizeArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kustomize build`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize build` to render the manifest templates. The actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `kustomizeArgs` -```yaml -kustomizeArgs: [] -``` - -#### Example: Custom Kustomize Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - kustomize: true - kustomizeArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kustomize build --timeout=10s --grace-period=30 -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.15/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-5.15/configuration/development/auto-reloading.mdx deleted file mode 100644 index cfb89112b9..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/auto-reloading.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Configure Auto-Reloading -sidebar_label: autoReload ---- - -There are certain use cases where you want to rebuild and redeploy the whole application instead of using the file synchronization and hot reloading. DevSpace provides you the options to specify special paths that are watched during `devspace dev` and any change to such a path will trigger a redeploy. - -Auto-reloading can be configured in the `dev.autoReload` section of `devspace.yaml`. -```yaml {19-26} -images: - backend: - image: john/devbackend - database: - image: john/database -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -- name: custom-manifests - kubectl: - manifests: - - manifests/ - - more/manifests/ -dev: - autoReload: - paths: - - ./package.json - - ./important-config-files/* - images: - - database - deployments: - - custom-manifests -``` - -Take a look at the [redeploy-instead-of-hot-reload exmaple](https://github.com/loft-sh/devspace/tree/master/examples/redeploy-instead-of-hot-reload) to see how to disable hot reloading at all and enable redeployment on every file change instead. - - -## Configuration - -### `paths` -The `paths` option expects an array of strings with paths that should be watched for changes. If a change occurs in any of the specified paths, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `images` -The `images` option expects an array of strings with image names from the `images` section of the `devspace.yaml`. If a change occurs to the `dockerfile` or to one of the files within the `context` of this image (if its context has changed), DevSpace will stop the development mode, rebuild the images, redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `deployments` -The `deployments` option expects an array of strings with names of deployments from the `deployments` section of the `devspace.yaml`. If a change occurs to any of the files that belong to this deployment, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -:::note Manifest Deployments -For `kubectl` deployments, DevSpace watches for all paths configured under `manifests`. -::: - -:::note Helm Chart Deployments -For `helm` deployments, DevSpace watches for changes in the `valuesFiles` or changes in the chart path of a local chart (configured as `chart.name`). -::: diff --git a/docs/versioned_docs/version-5.15/configuration/development/basics.mdx b/docs/versioned_docs/version-5.15/configuration/development/basics.mdx deleted file mode 100644 index b0116b8e6a..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/basics.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Development Mode -sidebar_label: Basics ---- - -import FragmentWarningMultipleDev from '../../fragments/warning-multiple-dev.mdx'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; -import FragmentNoteGeneralPurposeCommand from '../../fragments/note-general-purpose-command.mdx'; -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -## Why? -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. - -Kubernetes-based development can be useful in the following cases: -- Your applications needs to access cluster-internal services (e.g. Cluster DNS) -- You want to test your application in a production-like environment -- You want to debug issues that are hard to reproduce on your local machine - -The development experience is very similar to using `docker-compose`, so if you are already familiar on how to develop with `docker-compose`, DevSpace will behave very similar. One of the major benefits of DevSpace versus docker-compose is that DevSpace allows you to develop in any Kubernetes cluster, either locally using minikube, Docker Kubernetes etc. or in any remote Kubernetes cluster. - - -## Start Development Mode -Start the development mode using this command: -```bash -devspace dev -``` - - - -### Important Flags for `devspace dev` -The following flags are available for all commands that trigger image building: -- `-t / --terminal` starts a terminal to a container -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - - -## Development Process -The development process first runs the [deployment process](../../configuration/deployments/basics.mdx) (1. - 4.) and then continues with starting the development-specific features. - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - - -### 5. Start Port-Forwarding -DevSpace iterates over every item in the `dev.ports` array defined in the `devspace.yaml` and starts port-forwarding for each of the entries and the port mappings they define in the `forward` section. - -:::note -Before starting the actual port-forwarding threads, DevSpace waits until the containers and services are ready. -::: - -:::info -Port-Fowarding allows you to access your containers and Kubernetes services via localhost. -::: - -For detailed logs about the port-forwarding, take a look at `.devspace/logs/portforwarding.log`. - - -### 6. Start File Synchronization -DevSpace iterates over every item in the `dev.sync` array defined in the `devspace.yaml` and starts a bi-directional, real-time code synchronization for each of the entries and the path mappings they define. - -:::note Initial Sync -Right after starting the file synchronization, DevSpace runs the so-called initial sync which quickly computes the differences between your local folders and the remote container filesystems. If DevSpace detects changes, it synchronizes them first to get a clean state before starting the real-time synchronization which is invoked every time a file changes. -::: - -For detailed logs about the file synchronzation, take a look at `.devspace/logs/sync.log` for the current session and `.devspace/logs/sync.log.old` for previous logs. - - -### 7. Stream Logs or Open Terminal -DevSpace provides two options to develop applications in Kubernetes: -- using multi-container log streaming (default) -- using an interactive terminal session (run `devspace dev -i`) - -:::note Multi-Container Log Streaming (default) -The first option starts your application as defined in your Dockerfile or in your Kubernetes pod definition. After the pods are started, DevSpace streams the logs of all containers that are started with an image that was built during the image building process. Each log line is prefixed with the image name or alternatively with the pod name of the container. Before starting the actual log streaming, DevSpace prints the last 50 log lines of each container by default. - -Learn how to [customize which containers should be included in the log stream and how many log lines should be shown in the beginning](../../configuration/development/log-streaming.mdx). -::: - -:::note Terminal Session -To start a terminal mode, run: -```bash -devspace dev -t -``` -Instead of starting the multi-container log streaming, you can also start development mode using a terminal session. - -Terminal is configurable by [using the `dev.terminal` configuration section](../../configuration/development/terminal.mdx). -::: - -### 8. Open Links (optional) -DevSpace iterates over every item in the `dev.open` array defined in the `devspace.yaml` and tries to open the URL you provide for each item using the following method: - - - -Learn more about [configuring auto-opening links](../../configuration/development/open-links.mdx). - - - -## Useful Commands - -### `devspace enter` -The command `devspace dev -t` starts a terminal but it also starts port-forwarding and file synchronization which can only be opened once. However, you often need additional terminal sessions. To open a simple terminal session without starting port-forwarding and file sync, run the following command: -```bash -devspace enter -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace logs [-f]` -If you want to print or stream the logs of a single container, run: -```bash -# Print logs -devspace logs - -# Stream logs -devspace logs -f -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace sync` -If you want to start code synchronization on-demand (and even outside a DevSpace project), you can run commands like the ones shown here: -```bash -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace open` -To view your project in the browser either via port-forwarding or via ingress (domain), run the following command: -```bash -devspace open -``` -When DevSpace asks you how to open your application, you have two options as shown here: -```bash -? How do you want to open your application? - [Use arrows to move, space to select, type to filter] -> via localhost (provides private access only on your computer via port-forwarding) - via domain (makes your application publicly available via ingress) -``` -To use the second option, you need to make sure that the DNS of your domain points to your Kubernetes cluster and that you have an ingress-controller running in your cluster. - -:::info Automatic Error Analytics -If your application does not open as exepected, run [`devspace analyze` and DevSpace will try to identify the issue](#devspace-analyze). -::: - - -### `devspace analyze` -If your application is not starting as expected or there seems to be some kind of networking issue, you can let DevSpace run an automated analysis of your namespace using the following command: -```bash -devspace analyze -``` -After analyzing your namespace, DevSpace compiles a report with potential issues, which is a good starting point for debugging and fixing issues with your deployments. - - -### `devspace list commands` -DevSpace allows you to share commands for common development tasks which can be executed with `devspace run [command-name]`. To get a list of available commands, run: -```bash -devspace list commands -``` -Learn how to [configure shared commands for `devspace run`](../../configuration/commands/basics.mdx). - - -### `devspace list deployments` -To get a list of all deployments as well as their status and other information, run the following command: -```bash -devspace list deployments -``` - - -### `devspace purge` -If you want to delete a deployment from Kubernetes you can run: -```bash -# Removes all deployments remotely -devspace purge -# Removes deployment with given name -devspace purge --deployments=my-deployment-1,my-deployment-2 -``` - -:::warning -Purging a deployment does not remove it from the `deployments` section in the `devspace.yaml`. It just removes the deployment from the Kubernetes cluster. To remove a deployment from `devspace.yaml`, run `devspace remove deployment [NAME]`. -::: - -### `devspace update dependencies` -If you are using dependencies from other git repositories, use the following command to update the cached git repositories of dependencies: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.15/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-5.15/configuration/development/file-synchronization.mdx deleted file mode 100644 index 4861eb4081..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/file-synchronization.mdx +++ /dev/null @@ -1,781 +0,0 @@ ---- -title: Configure File Synchronization -sidebar_label: sync ---- - -import FragmentImageName from '../../fragments/selector-image-name.mdx'; -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -The code synchronization feature of DevSpace allows you to use hot reloading during development. Especially when using programming languages and frameworks that support hot reloading with tools like nodemon, re-building and re-deploying containers is very annoying and time consuming. Therefore, DevSpace uses a smart syncing mechanism that is able to sync local file changes to remote containers directly without the need of rebuilding or restarting the container. - -When starting the development mode, DevSpace starts the file sync as configured in the `dev.sync` section of the `devspace.yaml`. -```yaml {15-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - sync: - - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -``` - -:::info Start Sync Only -To only start the file sync without the other functions of the development mode, use `devspace sync` or `devspace sync --config=devspace.yaml` (to load the config). -::: - -Every sync configuration consists of two essential parts: -- [Pod/Container Selection](#podcontainer-selection) -- [Sync Path Mapping via `localSubPath` and `containerPath`](#sync-path-mapping) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this sync configuration. This can be used as a steady identifier when using profile patches or when targeting this sync configuration with the before or after initial sync hook. - -For example: -```yaml {3} -dev: - sync: - - name: devbackend - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -hooks: -- command: | - /app/rebuild.sh - when: - after: - initialSync: devbackend - where: - container: - imageSelector: john/devbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which the file synchronization should be established to: -- [`imageSelector`](#imageselector) -- [`imageName`](#imagename) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Auto Reconnect -If the sync is unable to establish a connection to the selected container or loses it after starting the sync, DevSpace will try to restart the sync several times. -::: - -### `imageSelector` - - -#### Example: Select Container by Image -```yaml -vars: - - name: backend-image - value: john/devbackend - - name: backend-debugger-image - value: john/debugger -images: - backend: - image: ${backend-image} - backend-debugger: - image: ${backend-debugger-image} -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: ${backend-image} - - name: container-1 - image: ${backend-debugger-image} -dev: - sync: - - imageSelector: ${backend-image} - excludePaths: - - node_modules/ - - logs/ - - imageSelector: ${backend-debugger-image} - localSubPath: ./debug-logs - containerPath: /logs -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` or `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first sync configuration in the `dev.sync` section references the same image as `images.backend`. That means DevSpace would select the first container for file synchronization, that would match `john/devbackend:tag(backend)`, where `tag(backend)` is the last built tag of `images.backend` -- The first sync configuration does not define `localSubPath`, so it defaults to the project's root directory (location of `devspace.yaml`). -- The first sync configuration does not define `containerPath`, so it defaults to the container's working directory (i.e. `WORKDIR`). -- The `imageSelector` option of the second sync configuration in the `dev.sync` section references the same image as `images.backend-debugger`. That means DevSpace would select the second container for file synchronization, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following sync processes would be started when using the above config example assuming the local project root directoy `/my/project/`: - -1. `localhost:/my/project/` forwards to `container-0:$WORKDIR` **\*** -2. `localhost:/my/project/debug-logs/` forwards to `container-1:/logs` - -**\* Changes on either side (local and container filesystem) that occur within the sub-folders `node_modules/` and `logs/` would be ingored.** - -### `imageName` - - -#### Example: Select Container by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - sync: - - imageName: backend - excludePaths: - - node_modules/ - - logs/ - - imageName: backend-debugger - localSubPath: ./debug-logs - containerPath: /logs -``` -**Explanation:** -- The above example defines two images that can be used as `imageName`: `backend` and `backend-debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first sync configuration in the `dev.sync` section references `backend`. That means DevSpace would select the first container for file synchronization, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The first sync configuration does not define `localSubPath`, so it defaults to the project's root directory (location of `devspace.yaml`). -- The first sync configuration does not define `containerPath`, so it defaults to the container's working directory (i.e. `WORKDIR`). -- The `imageName` option of the second sync configuration in the `dev.sync` section references `backend-debugger`. That means DevSpace would select the second container for file synchronization, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following sync processes would be started when using the above config example assuming the local project root directoy `/my/project/`: - -1. `localhost:/my/project/` forwards to `container-0:$WORKDIR` **\*** -2. `localhost:/my/project/debug-logs/` forwards to `container-1:/logs` - -**\* Changes on either side (local and container filesystem) that occur within the sub-folders `node_modules/` and `logs/` would be ingored.** - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - sync: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - containerName: container-0 - localSubPath: ./src - containerPath: /app/src -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because the selected pod has two containers, we also need to specify the `containerName` option which defines the container that should be used for the file synchronization. - - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -#### Example -**See "[Example: Select Container by Label](#example-select-container-by-label)"** - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - - -
- -## Sync Path Mapping - -### `localSubPath` -The `localSubPath` option expects a string with a path that is relative to the location of `devspace.yaml`. - -#### Default Value For `localSubPath` -```yaml -localSubPath: ./ # Project root directory (folder containing devspace.yaml) -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image-name)"** - - -### `containerPath` -The `containerPath` option expects a string with an absolute path on the container filesystem. - -#### Default Value For `containerPath` -```yaml -containerPath: $WORKDIR # working directory, set as WORKDIR in the Dockerfile -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image-name)"** - - -
- -## Exclude Paths -The config options for excluding paths use the same syntax as `.gitignore`. - -:::note -An exclude path that matches a folder recursively excludes all files and sub-folders within this folder. -::: - -### `excludePaths` -The `excludePaths` option expects an array of strings with paths that should not be synchronized between the local filesystem and the remote container filesystem. - -#### Default Value For `excludePaths` -```yaml -excludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example: Exclude Paths from Synchronization -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ - downloadExcludePaths: - - tmp/ -``` -**Explanation:** -- Files in `logs/` and in `more/logs/` would not be synchronized at all. -- Files in `node_modules/` would only be synchronized from the container to the local filesystem but not the other way around. -- Files in `tmp/` would only be synchroniyed from the local to the container filesystem but not the other way around. - -#### Example: Only Sync Specific Folders -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - '**' - - '!/my-folder-1/' - - '!/my-folder-2/' -``` -**Explanation:** -- All files will be execluded except those in folders `./my-folder-1/` and `./my-folder-2/` - - -### `downloadExcludePaths` -The `downloadExcludePaths` option expects an array of strings with paths that should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludePaths` -```yaml -downloadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `uploadExcludePaths` -The `uploadExcludePaths` option expects an array of strings with paths that should not be synchronized from the local filesystem to the remote container filesystem. - -:::info -This option is often useful if you want to download a dependency folder (e.g. `node_modules/`) for code completion but you never want to upload anything from there because of compiled binaries that are not portable between local filesystem and container filesystem (e.g. when your local system is Windows but your containers run Linux). -::: - -#### Default Value For `uploadExcludePaths` -```yaml -uploadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - - -
- -## Post-Sync Commands -Sometimes it is useful to execute commands after the sync downloads or uploads files/directories between container and local filesystem. - -:::warning -Make sure that post-sync commands will **not** trigger a new sync process which could lead to an **endless loop**. -::: - -### `onUpload.restartContainer` -The `restartContainer` option expects a boolean which defines if DevSpace should restart the container every time either a single file or even a batch of files have been uploaded to the container using file sync. - -:::caution Restart Helper Required -Setting `restartContainer: true` requires to set `injectRestartHelper: true` for the image that is used to run the affected container. Otherwise, this option does not have any effect. -::: - -:::note When not to use this option -Using `restartContainer: true` is most useful if your application runs based on a compiled language and you are **not** using a framework or language specific tool which provides hot reloading capabilities. If you are using tools like nodemon or frameworks like React, Rails or Flask, they allow you to enable hot reloading which may be much faster than restarting the entire container. In this case you should disable `restartContainer`. -::: - -#### Example: Enable Container Restart -```yaml {4,16} -images: - backend: - image: john/devbackend - injectRestartHelper: true -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - restartContainer: true -``` - - -### `onUpload` -The `onUpload` option defines command(s) that should be executed after a file/directory was uploaded from the local filesystem to the container. - -#### Example: Post-Upload Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - execRemote: # These post-sync commands will be executed inside the affected container - command: chmod # Command to execute for files and folders - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onFileChange: # Command to execute ONLY for files - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onDirCreate: # Command to execute ONLY for newly created directories - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onBatch: # Command to execute after sync has processed a full batch of files and folders - command: recompile - args: # NOTE: {} is NOT available for onBatch - - assets - - --minify -``` - -### `onDownload` -The `onDownload` option defines command(s) that should be executed after a file/directory was downloaded from the container to the local filesystem. - -#### Example: Post-Download Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onDownload: - execLocal: # These post-sync commands will be executed on the local dev machine - command: chmod # Command to execute for files and folders - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onFileChange: # Command to execute ONLY for files - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onDirCreate: # Command to execute ONLY for newly created directories - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory -``` - - -
- -## One-Directional Sync -These flags allow for local or remote container filesystems to be ignored during synchronization. - -### `disableDownload` -The `disableDownload` option expects a boolean which enables/disables all synchronization from the remote container filesystem to the local filesystem. - -#### Default Value For `disableDownload` -```yaml -disableDownload: false # Do not ignore remote container files during synchronization -``` - -#### Example: Synchronize Local Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableDownload: true - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ -``` - -### `disableUpload` -The `disableUpload` option expects a boolean which enables/disables all synchronization from the local filesystem to the remote container filesystem. - -#### Default Value For `disableUpload` -```yaml -disableUpload: false # Do not ignore local files during synchronization -``` - -#### Example: Synchronize Remote Container Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableUpload: true - excludePaths: - - logs/ - - more/logs/ - downloadExcludePaths: - - tmp/ -``` - - -
- -## Initial Sync - -### `initialSync` -The `initialSync` option expects a string with an initial sync strategy. The following strategies are available: - -#### • `mirrorLocal` mirrors the local filesystem inside the container (default) - -1. deletes all files inside the conainer that are not existing on the local filesystem -2. uploads all files which are existing on the local filesystem but are missing within the container -3. resolves all file conflicts (different content on local filesystem than in inside the container) by preferring the file on the local filesystem (i.e. all files in the container will be replaced if they are different than on the local filesystem) - -#### • `preferLocal` is like `mirrorLocal` but skips step 1. - -#### • `mirrorRemote` mirrors the container files to the local filesystem: - -1. deletes all files on the local filesystem that are not existing inside the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the file within the container (i.e. all files on the local filesystem will be replaced if they are different than inside the container) - -#### • `preferRemote` is like `mirrorRemote` but skips step 1. - -#### • `preferNewest` merges local and remote filesystem while resolving all conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the newest file (i.e. compares last modified timestamps and replaces all outdated files) - -#### • `keepAll` merges local and remote filesystem without resolving any conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem - -#### Default Value For `initialSync` -```yaml -initialSync: mirrorLocal -``` - -#### Example: Configuring Initial Sync -```yaml {19} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - node_modules/* - - imageSelector: john/devbackend - localSubPath: ./node_modules/ - containerPath: /app/node_modules/ - initialSync: preferRemote -``` -**Explanation:** -With this configuration, `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- The first sync config section would synchronize all files except files within `node_modules/`. This means that during initial sync, all remote files that are not existing locally would be deleted and other files would be updated to the most recent version. -- The second sync config section would only synchronize files within `node_modules/` and because of `initialSync: preferRemote`, DevSpace would download all remote files which are not present on the local filesystem and override all local files which are different than the files within the container. - - -### `waitInitialSync` -The `waitInitialSync` option expects a boolean which defines if DevSpace should wait until the initial sync process has terminated before opening the container terminal or the multi-container log streaming. - -#### Default Value For `waitInitialSync` -```yaml -waitInitialSync: false # Start container terminal or log streaming before initial sync is completed -``` - -#### Example: Wait For Initial Sync To Complete -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - waitInitialSync: true -``` -**Explanation:** -With the configuration `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- After the initial sync process is finished, DevSpace starts the multi-container log streaming. - - -
- -## Network Bandwidth Limits -Sometimes it is useful to throttle the file synchronization, especially when large files or a large number of files are expected to change during development. The following config options provide these capabilities: - -### `bandwidthLimits.download` -The `bandwidthLimits.download` option expects an integer representing the max file download speed in KB/s, e.g. `download: 100` would limit the file sync to a download speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example: Limiting Network Bandwidth -```yaml {14-16} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - bandwidthLimits: - download: 200 - upload: 100 -``` -**Explanation:** -- Downloading files from the container to the local filesystem would be limited to a transfer speed of `200 KB/s`. -- Upload files from the local filesystem to the container would be limited to a transfer speed of `100 KB/s`. - -### `bandwidthLimits.upload` -The `bandwidthLimits.upload` option expects an integer representing the max file upload speed in KB/s, e.g. `upload: 100` would limit the file sync to a upload speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example -**See "[Example: Limiting Network Bandwidth](#example-limiting-network-bandwidth)"** - -## Advanced Options - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. - -### `polling` - -Polling specifies if the DevSpace helper should traverse over all watched files and folders periodically in the container to identify file changes. By default, DevSpace will use [inotify](https://man7.org/linux/man-pages/man7/inotify.7.html) to detect changes which is more efficient, however sometimes it might be unsupported or not feasible in certain situations, in which polling might be preferred. - -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - polling: true -``` - -:::info -Polling might increase CPU consumption of the container drastically, depending on the amount of files and folders watched -::: - -:::info -If you are using a DevSpace config version below `v1beta10`, polling will be enabled by default, as it was the default syncing method in older DevSpace versions -::: - -## Useful Commands - -### `devspace sync` -If you want to start file synchronzation on-demand without having to configure it in `devspace.yaml` and without starting port-forwarding or log streaming etc, you can use the `devspace sync` command as shown in the examples below: -```bash -# Select pod with a picker -devspace sync --local-path=subfolder --container-path=/app - -# Select pod and container by name and use current working directory as local-path -devspace sync --pod=my-pod --container=my-container --container-path=/app -``` - - - -## FAQ - -
-How does the sync work? - -
- -DevSpace establishes a bi-directional code synchronization between the specified local folders and the remote container folders. It automatically recognizes any changes within the specified folders during the session and will update the corresponding files locally and remotely in the background. It uses a small helper binary that is injected into the target container to accomplish this. - -The algorithm roughly works like this: - -1. Inject a small helper binary via `kubectl cp` into the target container -2. Run initial sync accoring to the [`initialSync` config option](#initial-sync) -3. Watch for file changes on both sides (local and remote) and sync them according to the [sync path mappings](#sync-path-mapping) -4. After every sync process, [restart the container](#onuploadrestartcontainer) or run other custom [post-sync commands](#post-sync-commands) (optional) - -
- -
- -
-Are there any requirements for the sync to work? - -
- -The `tar` command has to be present in the container otherwise `kubectl cp` does not work and the helper binary cannot be injected into the container. - -Other than that, no server-side component or special container privileges for code synchronization are required, as the sync algorithm runs completely client-only within DevSpace. The synchronization mechanism works with any container filesystem and no special binaries have to be installed into the containers. File watchers running within the containers like nodemon will also recognize changes made by the synchronization mechanism. - -
- -
- -
-What is the performance impact on using the file sync? - -
- -The sync mechanism is normally very reliable and fast. Syncing several thousand files is usually not a problem. Changes are packed together and compressed during synchronization, which improves performance especially for transferring text files. Transferring large compressed binary files is possible, but can affect performance negatively. Remote changes can sometimes have a delay of 1-2 seconds till they are downloaded, depending on how big the synchronized folder is. It should be generally avoided to sync the complete container filesystem. - -
- -
diff --git a/docs/versioned_docs/version-5.15/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-5.15/configuration/development/log-streaming.mdx deleted file mode 100644 index a8725c3b02..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/log-streaming.mdx +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Configure Log Streaming -sidebar_label: logs ---- - -By default, DevSpace streams the logs of all containers that use one of the images defined in the `images` section of the `devspace.yaml`. - -To control which container logs should be streamed, you can configure the `dev.logs` section in the `devspace.yaml`. -```yaml {9-17} -images: - frontend: - image: gcr.io/my-org/appfrontend - backend: - image: john/appbackend - database: - image: john/database -dev: - logs: - showLast: 200 - # To display the sync log as well - sync: true - selectors: - - imageSelector: john/appbackend - - imageSelector: john/database -``` - -DevSpace will continously check what pods match the given selectors and start or end log streaming accordingly. - -## Configuration - -### `selectors` - -DevSpaces allows log streaming from pods and containers based on label or image selectors. You can configure them under the option `selectors`. - -```yaml -dev: - logs: - selectors: - # Selects all pods with the given label selectors and streams the logs to the console - - labelSelector: - abc: def - containerName: optional - namespace: optional - - labelSelector: - other: selector - - imageSelector: nginx - namespace: optional -``` - -### `sync` -The `sync` option expects an boolean which defines if the sync log should be merged with the pod and container logs. By default this option is true. - -### `showLast` -The `showLast` option expects an integer which defines how many log lines DevSpace will print for each container before starting to stream the container's logs in real-time. - -#### Default Value For `showLast` -```yaml -showLast: 50 -``` - -#### Example: Show Last 200 Log Lines -```yaml {22} -images: - frontend: - image: john/appfrontend - backend: - image: john/appbackend -deployments: -- name: app-frontend - helm: - componentChart: true - values: - containers: - - image: john/appfrontend -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - showLast: 200 -``` -**Explanation:** -- The above example defines 2 images and 2 deployments. -- DevSpace would stream the logs of: - - The container of deployment `app-frontend` because the image is `john/appfrontend` = `images.frontend.image` - - Only the first container of deployment `app-backend` because the image is `john/appbackend` = `images.backend.image` -- For each of the two containers, DevSpace would print the last 200 log lines before starting to stream the logs - - -### `disabled` -The `disabled` option expects a boolean which defines if DevSpace should start multi-container log streaming when running `devspace dev` or if DevSpace should just start other services (e.g. port-forwarding and sync) without starting the log stream. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disable Log Streaming -```yaml {14} -images: - backend: - image: john/appbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - disabled: true -``` diff --git a/docs/versioned_docs/version-5.15/configuration/development/open-links.mdx b/docs/versioned_docs/version-5.15/configuration/development/open-links.mdx deleted file mode 100644 index 41c1af1852..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/open-links.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Open Links in Browser -sidebar_label: open ---- - -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -DevSpace allows you to define URLs that should open after deploying an application in development mode, i.e. using `devspace dev`. - -The configuration for automatically opening URLs can be found in the `dev.open` section of `devspace.yaml`. -```yaml -dev: - open: - - url: http://localhost:3000/ - - url: http://localhost:8089/ # DevSpace UI -``` - -:::note -Setting `dev.open` only affects `devspace dev`. To open your application after running `devspace deploy`, run `devspace open`. -::: - - -## Workflow - - - -## Configuration - -### `open` -The `open` option expects an array of auto-open configurations with exactly one of the following properties: -- `url` to open a URL in the default browser - -#### Default Value For `open` -```yaml -open: [] -``` - -#### Example: Open URL when Starting Dev Mode -```yaml -dev: - open: - - url: http://localhost:3000/login -``` -**Explanation:** -Running `devspace dev` using the above configuration would do the following: -- Build images and deploy the application -- Start port-forwarding and code-synchronization -- DevSpace opens the browser with URL `http://localhost:3000/login` diff --git a/docs/versioned_docs/version-5.15/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-5.15/configuration/development/port-forwarding.mdx deleted file mode 100644 index ba6ad6892f..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/port-forwarding.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Configure Port-Forwarding -sidebar_label: ports[].forward ---- - -import FragmentImageName from '../../fragments/selector-image-name.mdx'; -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -Port-forwarding allows you to access your application on `localhost:[PORT]` by forwarding the network traffic from a localhost port to a specified port of a container. - -When starting the development mode, DevSpace starts port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {15-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -``` - -:::warning Unique Local Port -The `port` option must be unique across your entire `ports` section, e.g. you can only use the value `8080` once for the `port` option in your `ports` section. -::: - -Every port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-forward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this port-forwarding configuration. This can be used as a steady identifier when using profile patches. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod Selection -The following config options are needed to determine the pod to which the traffic should be forwarded: -- [`imageSelector`](#imageselector) -- [`imageName`](#imagename) -- [`labelSelector`](#labelselector) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a port-forwarding connection to the selected pod or loses it after starting the port-forwarding, DevSpace will try to restart port-forwarding several times. -::: - -### `imageSelector` - - -### `imageName` - - -#### Example: Select Pod by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageName: backend - forward: - - port: 8080 - remotePort: 80 - - imageName: backend-debugger - forward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageName`: `backend` and `backend-debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageName` option of the second port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following port-forwarding processes would be started when using the above config example: -- `localhost:8080` forwards to `container-0:80` -- `localhost:3000` forwards to `container-1:3000` - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - forward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `forward` -The `forward` section defines which localhost `port` should be forwarded to the `remotePort` of the selected container. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` diff --git a/docs/versioned_docs/version-5.15/configuration/development/replace-pods.mdx b/docs/versioned_docs/version-5.15/configuration/development/replace-pods.mdx deleted file mode 100644 index 327c37eef7..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/replace-pods.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Replacing Pods for Development -sidebar_label: replacePods ---- - -import FragmentImageName from '../../fragments/selector-image-name.mdx'; -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -`replacePods` gives you the option to exchange an already running or just deployed pod with a modified version. This is especially useful if you: - -- Need to configure or disable an option on a pod which is not configurable via your helm chart or manifests -- Do not want to use DevSpace for your pipeline and instead only want to use DevSpace for development -- Want to debug a setup in an already deployed app by exchanging a single pod temporarily with modifications - -For example: -```yaml -vars: -- name: IMAGE - value: idonotexist:neverexisted -deployments: -- name: my-app - helm: - componentChart: true - values: - containers: - - image: ${IMAGE} -dev: - # DevSpace will try to find a pod with the given image selector. If found (even if its currently in a failed state) - # DevSpace will copy the pod, scale down the owning ReplicaSet, Deployment or StatefulSet - # and create the new modified pod in the cluster. - replacePods: - - imageSelector: ${IMAGE} - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - # This will create a terminal to the replaced pod - terminal: - imageSelector: ${IMAGE} - # This will sync to the replaced pod's working directory - sync: - - imageSelector: ${IMAGE} -``` - -## How does it work? - -Each entry that you specify under `dev.replacePods` will tell DevSpace to search for a pod that should be replaced with the given configuration. If DevSpace finds a pod to replace, it does the following things: -- Copy the pod.metadata and pod.spec of the already running pod -- Scale down the owning ReplicaSet, Deployment or StatefulSet replicas to 0 -- Apply the patches to the copied pod -- Create the copied pod in the cluster - -Within the `dev` part of DevSpace, replacing pods is the first step that is executed, which means that all other services such as port-forwarding, sync, log streaming or terminal forwarding will wait until DevSpace has either replaced the pods or already found replaced pods. The services will then target the newly created patched pod instead of the old one. - -:::note -DevSpace will automatically recognize changes to the parent Deployment, ReplicaSet or StatefulSet and apply them to the replaced pod automatically in the next run. -::: - -## Pod/Container Selection -The following config options are needed to determine the container which should be replaced: -- [`imageSelector`](#imageselector) -- [`imageName`](#imagename) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -### `imageSelector` - - -#### Example: Select Container by Image Selector -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend -dev: - replacePods: - - imageSelector: john/devbackend - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - terminal: - imageSelector: john/devbackend -``` - -### `imageName` - - -#### Example: Select Container by Image Name -```yaml -images: - backend: - image: john/devbackend - build: - disabled: true -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend -dev: - replacePods: - - imageName: backend - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - terminal: - imageName: backend -``` - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: idontexist -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - sync: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Pod Modifications - -### `replaceImage` - -`replaceImage` expects a string with the new image name (inclusive tag) that should be used for the selected pod. For example: `replaceImage: my-repo/my-debug-image:1.0`. In addition, DevSpace will also replace the following things: - -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `xApsTn` - -### `patches` - -`patches` define more generic patches that should be applied to the pod. You can basically modify anything in the pod here. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as implemented by the [yaml-patch](https://github.com/krishicks/yaml-patch) library. - -The `patches` option expects a patch object which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the pod (e.g. `metadata.annotations`, `spec.containers.name=backend.env`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `metadata.annotations`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `spec.containers`), you have two options: - -1. Use the index of the array item you want to patch, e.g. `spec.containers[0]` -2. Use a property selector matching the array item(s) you want to patch, e.g. `spec.containers.name=backend` - -Using a property selector is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A property selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -#### Example: Overwrite command and args of a pod -```yaml -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] -``` - -## Reset replaced pods - -If you want to reset replaced pods and revert the cluster state to before, you can run -``` -devspace reset pods -``` diff --git a/docs/versioned_docs/version-5.15/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-5.15/configuration/development/reverse-port-forwarding.mdx deleted file mode 100644 index c2534a0383..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/reverse-port-forwarding.mdx +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Configure Reverse Port-Forwarding -sidebar_label: ports[].reverseForward ---- - -import FragmentImageName from '../../fragments/selector-image-name.mdx'; -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -Reverse port-forwarding allows you to forward traffic from within your containers to your local machine. This can be useful when: -- using certain remote debuggers that connect to your IDE instead of the other way around -- developing a service on localhost which should be accessed from other services that run within the cluster, i.e. using the [Telepresence development model](https://www.telepresence.io/discussion/why-telepresence) but with DevSpace to get better performance and cross-platform support - -With reverse port-forwarding, you can access `localhost:[PORT]` inside the container and it will redirect to a program that runs on your local dev machine. - -When starting the development mode, DevSpace starts reverse port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {20-23} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - reverseForward: - - port: 5678 - remotePort: 5678 - - port: 3303 -``` - -:::warning Unique Remote Port -The `remotePort` option must be unique across your entire `ports` section for all selectors that match the same pods, e.g. you can only use the value `8080` once for the `remotePort` option in your `ports` section unless multiple port mappings target different pods. -::: - -Every reverse port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-reverseforward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this reverse port-forwarding configuration. This can be used as a steady identifier when using profile patches. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - - -## Pod Selection -The following config options are needed to determine the pod from which the traffic should be forwarded to localhost: -- [`imageSelector`](#imageselector) -- [`imageName`](#imagename) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a reverse port-forwarding connection to the selected pod or loses it after starting the reverse port-forwarding, DevSpace will try to restart reverse port-forwarding several times. -::: - -### `imageSelector` - - -### `imageName` - - -#### Example: Select Pod by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageName: backend - reverseForward: - - port: 8080 - remotePort: 80 - - imageName: backend-debugger - reverseForward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageName`: `backend` and `backend-debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first reverse port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for reverse port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageName` option of the second reverse port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for reverse port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following reverse port-forwarding processes would be started when using the above config example: -- `localhost:80` inside the container will forward to `localhost:8080` on your local machine -- `localhost:3000` inside the container will forward to `localhost:3000` on your local machine - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - reverseForward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `containerName` -The `containerName` option expects a string with the name of the container to use within the pod selected by `labelSelector`. This option is not required if `imageName` is used or there is only one container inside the selected pod. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `reverseForward` -The `reverseForward` section defines which `remotePort` inside the selected container should be forwarded to the `port` on your local machine. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` - -## Container Architecture - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. diff --git a/docs/versioned_docs/version-5.15/configuration/development/terminal.mdx b/docs/versioned_docs/version-5.15/configuration/development/terminal.mdx deleted file mode 100644 index d4575c6a3b..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/development/terminal.mdx +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Configure Terminal -sidebar_label: terminal ---- - -import FragmentImageName from '../../fragments/selector-image-name.mdx'; -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -There are two main modes how to develop with DevSpace, by streaming the log output of pods in DevSpace or by opening a terminal to the pod you would like to develop with. If you prefer the latter, you can configure the `dev.terminal` option to tell DevSpace to open a terminal to a target container. - -In the `dev.terminal` section in the `devspace.yaml` you can configure the terminal: -```yaml {18-23} -images: - frontend: - image: myregistry/appfrontend -dependencies: -- name: backend - source: - path: backend -deployments: -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appfrontend - workDir: '/path/to/my/workdir' - # If you would like to open a different shell or start - # it with a different command you can also use - command: ["bash"] -``` - -:::warning Sleeping Container -You will need to make sure that the container has a terminal equipped and is sleeping so that you can start your application. -::: - -## Configuration - -### `imageSelector` - - -### `imageName` - - -#### Example: Setting imageName -```yaml {25-34} -images: - frontend: - image: myregistry/appfrontend - backend: - image: myregistry/appbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: myregistry/appbackend -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageName: backend -``` - -### `labelSelector` - - -#### Example: Setting labelSelector -```yaml {25-34} -dev: - terminal: - labelSelector: - app: my-app - # If the pod has multiple containers make sure to set this - containerName: container1 -``` - -### `containerName` -If you select a pod via `labelSelector` and the pod has multiple containers, you'll need to specify a container name with this option. - -### `namespace` -If this option is specified DevSpace will search the pod in this namespace. - -### `workDir` -If this option is specified DevSpace will open the shell in the specified working directory. - -### `command` -The `command` option expects a string array as optional configuration for how to open the shell for terminal forwarding. If this option is specified, `workDir` will not work anymore. - -:::note Command Termination -If `command` is a non-interactive command that terminates, DevSpace will run the command and exits after the command has terminated. -::: diff --git a/docs/versioned_docs/version-5.15/configuration/env-file.mdx b/docs/versioned_docs/version-5.15/configuration/env-file.mdx deleted file mode 100644 index d196a4fc62..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/env-file.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Environment Variable File -sidebar_label: .env ---- - -Besides reading environment variables available in your terminal session, DevSpace also reads environment variables from the `.env` file inside your project. The syntax of the `.env` file is the [same as for docker-compose](https://docs.docker.com/compose/env-file/): - -- Each line should have the format `VAR_NAME=VAR_VALUE`. -- **There is *no* special handling of quotation marks. This means that they are part of the `VAR_VALUE`.** -- Lines beginning with # are processed as comments and ignored. - -## Precedence -- Environment variables defined in your terminal session (including system variables) always take precendence over the variables in your `.env` file. -- Variables defined in your `.env` file take precende over the default values defined for config variables (configured in the `vars` section of `devspace.yaml`). - -## Define Default Flags -A common use case for the `.env` file is to set default flags for the `devspace` commands such as `devspace dev` or `devspace deploy`. You can define the following environment variables to set default flags: -- `DEVSPACE_FLAGS` for global flags that should be added to each commands (e.g. `DEVSPACE_FLAGS=-s -p dev`) -- `DEVSPACE_[COMMAND]_FLAGS` to add default flags for single commands (e.g. `DEVSPACE_DEV_FLAGS=-s --verbose-dependencies`) - -:::note Overriding Default Flags -Specifying flags for a command will override the default flags, e.g. if `DEVSPACE_FLAGS=-s -p dev` is configured and you run `devspace dev -p production`, the following command would be executed: `devspace dev -s -p production` -::: - -#### Example: Setting Default Flags for DevSpace -```bash -# File: .env -DEVSPACE_FLAGS=-s -p dev -DEVSPACE_DEV_FLAGS=-s --verbose-dependencies -``` diff --git a/docs/versioned_docs/version-5.15/configuration/hooks/basics.mdx b/docs/versioned_docs/version-5.15/configuration/hooks/basics.mdx deleted file mode 100644 index 7e7a3c8ceb..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/hooks/basics.mdx +++ /dev/null @@ -1,294 +0,0 @@ ---- -title: Hooks -sidebar_label: hooks ---- - -DevSpace allows you to define certain actions that should be executed during the pipeline. This makes it possible to customize the deployment and development process with DevSpace. The following actions can be executed with hooks: -- Execute a command on the local machine (in a golang shell or directly on the system) -- Execute a command in a container -- Upload a file or folder into a container -- Download a file or folder from a container -- Wait for a container to start or terminate -- Print the logs of container - -Hooks can be defined in the `hooks` section of `devspace.yaml`: -```yaml -hooks: -# Execute the hook in a golang shell (cross operating system compatible) -- command: "echo before image building" - when: - before: - images: all -# Execute the hook in a golang shell (cross operating system compatible) -- command: | - echo Hello - echo World - when: - before: - images: image-1,image-2 -# Execute the hook directly on the system (echo binary must exist) -- command: "echo" - args: ["before image building"] - when: - before: - images: image-1,image-2 -# Execute the hook only on windows -- command: "echo before image building" - os: windows - when: - before: - images: all -``` - -:::note Example Project -For a complete example take a look at [this example project on GitHub](https://github.com/loft-sh/devspace/tree/master/examples/hooks). -::: - -This tells DevSpace to execute the command `echo before image building` before any image will be built. You are able to define hooks for the following life cycle events that can be triggered either before (`when.before`) or after (`when.after`) the event: -- **pull secret creation**: Will be executed before or after creating any image pull secrets. Example: `when.before.pullSecrets: all` -- **dependency deployment**: Will be executed before or after deploying any dependencies. Example: `when.before.dependencies: all` -- **image building**: Will be executed before or after building any images. Example: `when.before.images: all` -- **specific image build**: Will be executed before or after a certain image is built. The hook `when.after.images: my-image` is only executed if the image actually was built and not skipped. Example: `when.before.images: my-image` -- **deploying**: Will be executed before or after any deployment is deployed. Example: `when.before.deployments: all` -- **specific deployment**: Will be executed before or after a certain deployment is deployed. The hook `when.after.deployments: my-deployment` is only executed if the deployment was actually deployed and not skipped. Example: `when.before.deployments: my-deployment` -- **deployment purging**: Will be executed before or after any deployment is purged. Example: `when.before.purgeDeployments: all` -- **specific deployment purging**: Will be executed before or after a certain deployment is purged. Example: `when.before.purgeDeployments: my-deployment` -- **initial sync**: Will be executed before or after a certain sync configuration finished merging remote and local state. Example: `when.before.initialSync: my-sync-config` - -:::info Errors in Hooks -If any hook returns a non zero exit code, DevSpace will abort and print an error message. -::: - -## Execute hooks if an error occured - -DevSpace allows you to execute hooks after certain steps have failed: -- **pull secret creation**: Will be executed if creating image pull secrets fails. Value: `when.onError.pullSecrets: all` -- **dependency deployment**: Will be executed if deploying any dependencies fail. Value: `when.onError.dependencies: all` -- **image building**: Will be executed if building any images fails. Value: `when.onError.images: all` -- **deploying**: Will be executed if any deployment fails. Value: `when.onError.deployments: all` -- **certain deployment**: Will be executed if a certain deployment fails. Value: `when.onError.deployments: my-deployment` - -The actual error will be passed to the hook via the environment variable `DEVSPACE_HOOK_ERROR`. For example: -```yaml -# This will print the error to the console that has occured during a deployment -hooks: -- command: "echo The following error has occured: $DEVSPACE_HOOK_ERROR" - os: darwin,windows - when: - onError: - deployments: all -``` - -## Execute hooks in a container - -DevSpace allows you to execute commands directly in a container instead of the local system. You can specify this in the `where` section of the hook: - -```yaml -... -hooks: -- command: | - echo Hello World! - echo From within the container! - where: - container: - imageSelector: nginx - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - - # If you are using dependencies, you can also select a dependency via - # imageName: dependency1.my-image - when: - after: - deployments: my-deployment -... -``` - -By default, DevSpace will wait for all pods / containers that were selected with the given selector to come up. As soon as all targets are running, DevSpace will execute the hook and wait for it to finish. You can define if DevSpace should wait and how long it should wait with `wait` and `timeout`: - -```yaml -... -hooks: -- command: "echo" - args: ["Hello from within the container!"] - where: - container: - imageName: default - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - wait: true # This is the default - timeout: 300 # Timeout in seconds - when: - after: - deployments: my-deployment -... -``` - -## Upload or Download files from a container - -Hooks can be used to upload or download files from a container. In the background, DevSpace will basically do a `kubectl cp` to the specified container. Example: -```yaml -hooks: -# Upload the complete local bin folder to the container path ./bin -- upload: - localPath: bin - containerPath: bin - where: - container: - imageName: default - when: - after: - deployments: deployment-1 -# Download a single file from the container to the local path -- download: - localPath: build/artifact.jar - containerPath: /abs/path/build/artifact-test.jar - where: - container: - imageName: java - when: - after: - deployments: deployment-2 -``` - -## Wait for a pod to be running - -This hook action can be useful if you want to ensure a certain pod is running before you continue with the pipeline. An example configuration could look like this: -```yaml -... -deployments: -- name: my-database - helm: - componentChart: true - values: - ... -hooks: -# This hook will ensure that everytime the deployment -# my-database is deployed that DevSpace will wait until -# all pods and containers that match the labelSelector -# app.kubernetes.io/component: my-database are running -- wait: - # DevSpace will wait for all containers that match the label selector below to become running. - # If there are init containers, make sure to set terminatedWithCode as well. - running: true - # This can be needed if there are for example init containers - # that terminate instead of become running. - terminatedWithCode: 0 - where: - container: - labelSelector: - app.kubernetes.io/component: my-database - # You could also select just a specific container with - # containerName: database-container - when: - after: - deployments: my-database -... -``` - -## Print the logs of a container - -This action can be useful to print logs of jobs or print the logs of init containers that would not be printed otherwise during `devspace dev`. An example configuration could look like this: - -`job.yaml`: -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: my-pod - labels: - app.kubernetes.io/component: my-job -spec: - restartPolicy: Never - containers: - - command: ["sh"] - args: ["-c", "echo 'Job Start' && sleep 5 && echo 'Doing Things...' && sleep 5 && echo 'Job End'"] - image: alpine - name: job -``` - -`devspace.yaml`: -```yaml -version: ... -deployments: -- name: my-job - kubectl: - manifests: - - job.yaml -hooks: -# This hook will wait until the selected container is either running or already -# terminated and then print the logs of it until it terminates. -- logs: {} - where: - container: - labelSelector: - app.kubernetes.io/component: my-job - when: - after: - deployments: my-job -``` - -## Execute hooks in the background - -By default, DevSpace will wait for a hook to finish and then move on with the pipeline. However, in some cases it might be desired that a hook is executed in the background to speed up a process. You can specify a background hook with the `background` option: - -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - when: - after: - deployments: all -... -``` - -If you do not want to stream the output of the hook to the console, you can also mark the hook as silent, which will prevent any hook output: -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - silent: true - when: - after: - deployments: all -... -``` - -## Execute hooks only on certain operating systems - -Hooks can be executed only on certain operating systems: - -```yaml {5,12} -hooks: -- command: echo - args: - - before image building on windows - os: windows - when: - before: - images: all -- command: echo - args: - - before image building on mac and linux - os: darwin,linux - when: - before: - images: all -``` - -## Hook Context Information - -DevSpace passes certain environment variables to the hook execution: -- **DEVSPACE_HOOK_KUBE_CONTEXT**: the name of the kube context that was used -- **DEVSPACE_HOOK_KUBE_NAMESPACE**: the name of the kube namespace that was used -- **DEVSPACE_HOOK_OS_ARGS**: json encoded os.Args that were used to call devspace -- **DEVSPACE_HOOK_ERROR**: if an error has occured contains the error string (only for onError hooks) diff --git a/docs/versioned_docs/version-5.15/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-5.15/configuration/images/append-dockerfile-instructions.mdx deleted file mode 100644 index 78fc212199..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/append-dockerfile-instructions.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Append Build Instructions In-Memory -sidebar_label: appendDockerfileInstructions ---- - - -## `appendDockerfileInstructions` -The `appendDockerfileInstructions` expects an array of strings with each string containing a Dockerfile instruction, e.g. `RUN chmod...`, `USER root`. - -This option is very useful to add development-specific instructions (installing dev tooling like debuggers, setting a different runtime user for the container etc.) without the need to change the actual Dockerfile. - -:::info In-Memory -DevSpace adds these instructions dynamically to your Dockerfile when building images. However, this happens in-memory and does **not** change the Dockerfile. -::: - -:::tip Combination with Profiles -It is often useful to create a [profile](../profiles/basics.mdx) `production` with a patch that removes the `appendDockerfileInstructions` entirely. This way, you can also evaluate what you are working on in a more production-like way using a single command: `devspace deploy -p production` -::: diff --git a/docs/versioned_docs/version-5.15/configuration/images/basics.mdx b/docs/versioned_docs/version-5.15/configuration/images/basics.mdx deleted file mode 100644 index 9c2eec5ada..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/basics.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Image Building -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; -import WarningBuildToolPriority from '../../fragments/warning-build-tool-priority.mdx'; - -Images are configured within the `images` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {3} -images: - backend: - image: my-docker-username/appbackend - database: - image: my-docker-company/appbackend -``` - - - - -```yaml {3} -images: - backend: - image: image.company.tld/appbackend - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-9} -images: - backend: - image: image.company.tld/appbackend - tags: - - latest - # This will be replaced during build time with - # something like dev-ads13as1-sA4ve. Each hashtag - # represents a random character. - - dev-${DEVSPACE_GIT_COMMIT}-##### - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -:::info What is BuildKit? -[BuildKit](https://github.com/moby/buildkit) is an open-source concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit that lets you build images inside containers that run on top of Kubernetes or in your local docker daemon. To force image building using BuildKit, set `build.buildKit: {}`. To tell DevSpace to use in cluster building set `build.buildKit.inCluster: {}` as shown above. Learn more about [configuring BuildKit builds](../../configuration/images/buildkit.mdx). -::: - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true -``` - -:::info What is kaniko? -Kaniko is an open-source tool that lets you build images inside containers that run on top of Kubernetes. DevSpace uses kaniko as automatic fallback if Docker is not installed. To force image building using kaniko, set `build.kaniko.cache: true` as shown above. Learn more about [configuring kaniko builds](../../configuration/images/kaniko.mdx). -::: - - - - -```yaml {4-11} -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "arg-value-1" - - "--arg2" - - "arg-value-2" -``` - - - - -```yaml {5} -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` - - - - -:::note Parallel Image Building -To speed up the build process, the images you specify under `images` will all be built in parallel (unless you use the `--build-sequential` flag). -::: - - - - -## Run Image Building -When you run one of the following commands, DevSpace will run the image building process: -- `devspace build` (only image building without deployment) -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger image building: -- `--build-sequential` build images sequentially instead of in parallel (provides more detailed logs for each image) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed since the latest build) - -## Image Building Process -DevSpace loads the `images` configuration from `devspace.yaml` and builds all images in parallel. The multi-threaded, parallel build process of DevSpace speeds up image building drastically, especially when building many images and using remote build methods. - -### 1. Load Dockerfile -DevSpace loads the contents of the Dockerfile specified in `image[*].dockerfile` (defaults to `./Dockerfile`). - -:::info Use Relative Paths -Dockerfile paths used in `dockerfile` should be relative to the `devspace.yaml`. -::: - -### 2. Override Entrypoint (if needed) -DevSpace allows you to apply an in-memory override of a Dockerfile's `ENTRYPOINT` by configuring the `entrypoint` option for the image. Similar to the Dockerfile `ENTRYPOINT`, the `images[*].entrypoint` option should be defined as an array. - -:::note Useful for Profiles -Configuring `ENTRYPOINT` overrides can be particularly useful when defining different [config profiles](../../configuration/profiles/basics.mdx) in your `devspace.yaml`. -::: - -### 3. Load Build Context -DevSpace loads the context to build this image as specified in `context` (defaults to `./`). The context path serves as root directory for Dockerfile statements like `ADD` or `COPY`. - -:::info Use Relative Paths -Context paths used in `context` should be relative to the `devspace.yaml`. -::: - - - -### 4. Skip Build & Push (if possible) -DevSpace tries to speed up image building by skipping images when they have not changed since the last build process. To do this, DevSpace caches the following information after building an image: -- a hash of the `Dockerfile` used to build the image (including ENTRYPOINT override) -- a hash over all files in the `context` used to build this image (excluding files in `.dockerignore`) - -The next time you trigger the image building process, DevSpace will generate these hashes again and compare them to the hashes of the last image building process. If all newly generated hashes are equal to the old ones stored during the last image building process, then nothing has changed and DevSpace will skip this image. - -:::note Force Build -You can use the `-b / --force-build` flag to tell DevSpace to build all images even if nothing has changed. -::: - -### 5. Build Image -DevSpace uses one of the following [build tools](../../configuration/images/basics.mdx) to create an image based on your Dockerfile and the provided context: -- [`docker`](../../configuration/images/docker.mdx) for building images using a Docker daemon (default, prefers Docker daemon of local Kubernetes clusters) -- [`kaniko`](../../configuration/images/kaniko.mdx) for building images directly inside Kubernetes (automatic fallback for `docker`) -- [`custom`](../../configuration/images/custom.mdx) for building images with a custom build command (e.g. for using Google Cloud Build) -- [`disabled`](../../configuration/images/disabled.mdx) if this image should not be built (especially useful for [config `profiles`](../../configuration/profiles/basics.mdx)) - -### 6. Tag Image -DevSpace automatically tags all images after building them using a tagging schema that you can customize using the `tag` option. By default, this option is configured to generate a random string consisting of 5 characters. - -[Learn more about defining a custom tagging schema.](../../configuration/images/image-tagging.mdx#tags-tagging-schema) - -:::info Tag Replacement -Before deploying your application, DevSpace will use the newly generated image tags and replace them in-memory in the values for your [Helm charts](../../configuration/deployments/helm-charts.mdx) and [Kubernetes manifests](../../configuration/deployments/kubernetes-manifests.mdx), so they will be deployed using the newest image tag. -::: - -### 7. Push Image -DevSpace automatically pushes your images to the respective registry that should be specified as part of the `image` option. Just as with regular Docker images, DevSpace uses Docker Hub if no registry hostname is provided within `image`. - - -:::note -You can skip this step when proving the `--skip-push` flag. Beware that deploying your application after using `--skip-push` will only work when your images have already been pushed to the registry or when you are using a local Kubernetes cluster (e.g. minikube). -::: - -### 8. Create Pull Secrets -When deploying your application via DevSpace, Kubernetes needs to be able to pull your images from the registry that is used to store your images when pushing them. For this purpose, Kubernetes relies on so-called image pull secrets. DevSpace can automatically create these secrets for you, if you configure `createPullSecret: true` for the respective image in your `devspace.yaml`. - -:::note -You do **not** need to change anything in your Kubernetes manifests or Helm charts to use the image pull secrets that DevSpace creates because DevSpace [adds these secrets to the default service account in the namespace](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) used to deploy your project. - -After running `devspace build`, `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the following command: -```bash -kubectl get serviceaccount default -o yaml -``` -Take a look at the `imagePullSecrets` section of the output showing the yaml definition of the service account `default`. -::: - -## Advanced Topics - -### Authentication (Registry) -DevSpace uses the same credential store as Docker. So, if you already have Docker installed and you have logged in to a private registry before, DevSpace will be able to push to this registry. So, if you want to push to a registry using DevSpace, simply authenticate using this command: -```bash -docker login # for Docker Hub -docker login [REGISTRY] # for any other registry (e.g. my-registry.tld) -``` - -:::note -If you do **not** have Docker installed, DevSpace initializes a Docker credential store for you and stores your login information just like Docker would do it. -::: - - -### Skip Push (Local Clusters) -If you are using a local Kubernetes cluster, DevSpace will try to build the image using the Docker deamon of this local cluster. If this process is successful, DevSpace will skip the step of pushing the image to a registry as it is not required for deploying your application. diff --git a/docs/versioned_docs/version-5.15/configuration/images/custom.mdx b/docs/versioned_docs/version-5.15/configuration/images/custom.mdx deleted file mode 100644 index 6b08dddf1b..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/custom.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Custom Build Scripts -sidebar_label: custom ---- - -## `custom` -Using `custom` as build tool allows you to define a custom command for building images. This is particularly useful if you want to use a remote build system such as Google Cloud Build. - -:::warning -Make sure your `custom` build command terminates with exit code 0 when the build process was successful. -::: - -### `command` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Example: Building Images With `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build arg1 --flag flag-value arg2 "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `imageFlag` -The `imageFlag` option expects a string which states the name of the flag that is used to pass the image name (including auto-generated tag) to the custom build script defined in `command`. - -#### Default Value For `imageFlag` -```yaml -imageFlag: "" # Defaults to passing image and tag as an argument instead of using a flag -``` - -#### Example: Defining `imageFlag` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `skipImageArg` -The `skipImageArg` option expects a boolean which specifies if DevSpace should add an argument to the command with the `image:tag`. If enabled DevSpace will omit the image argument completely - -#### Example: Defining `skipImageArg` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - skipImageArg: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2` - -### `imageTagOnly` -The `imageTagOnly` option expects a boolean which specifies if DevSpace should only add the image `tag` instead of `image:tag` as argument. - -#### Example: Defining `imageTagOnly` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - imageTagOnly: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[TAG]"` while `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `args` -The `args` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **before** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Using `args` and `appendArgs` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" - appendArgs: - - "arg3" - - "--flag2" - - "flag-value-2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG] arg3 --flag2 flag-value-2` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `appendArgs` -The `appendArgs` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **after** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `appendArgs` -```yaml -appendArgs: [] -``` - -#### Example -**See "[Example: Using `args` and `appendArgs` For Custom Builds](#example-using-args-and-appendargs-for-custom-builds)"** - -### `commands` -The `commands` option expects an array of commands that should be executed on a specific operating system. This will only exchange the base command, but all other arguments will be appended the same way. - -#### Example: Using `commands` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build-default.sh - commands: - - command: ./build-windows.ps - os: windows - - command: ./build-darwin.sh - os: darwin - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" -``` -**Explanation:** -- **linux**: The image `backend` would be built using the command `./build-default.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **windows**: The image `backend` would be built using the command `./build-windows.ps --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **darwin (macOS)**: The image `backend` would be built using the command `./build-darwin.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` - -### `onChange` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Default Value For `onChange` -```yaml -onChange: [] -``` - -#### Example: OnChange Option For custom Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - onChange: - - some/path/ - - another/path/file.txt -``` -**Explanation:** -The image `backend` would be built using the command `./build --image "[IMAGE]:[TAG]"` and DevSpace would skip the build if none of the files within `some/path/` nor the file `another/path/file.txt` has changed since the last build. diff --git a/docs/versioned_docs/version-5.15/configuration/images/disabled.mdx b/docs/versioned_docs/version-5.15/configuration/images/disabled.mdx deleted file mode 100644 index c5a8e42cd9..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/disabled.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Disable Image Building -sidebar_label: disabled ---- - -## `disabled` -The `disabled` option expects a boolean and allows you to disable image building for an image. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disabling Image Building -```yaml -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` -**Explanation:** -- The first image `frontend` would not be built at all. -- The second image `backend` would be built using [`docker`](../../configuration/images/docker.mdx) because nothing is specified and `docker` is the default build tool for images. diff --git a/docs/versioned_docs/version-5.15/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-5.15/configuration/images/dockerfile-context.mdx deleted file mode 100644 index 0b6cc404af..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/dockerfile-context.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Configure Dockerfile & Context -sidebar_label: dockerfile + context ---- - -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; - -## `dockerfile` -The `dockerfile` option expects a string with a path to a `Dockerfile`. -- The path in `dockerfile` should be relative to the `devspace.yaml`. -- When setting the `dockerfile` option, it is often useful to set the [`context` option](#context) as well. -- To share your configuration with team mates, make sure `devspace.yaml` and all `Dockerfiles` used in the `images` section are checked into your code repository. - -#### Default Value For `dockerfile` -```yaml -dockerfile: ./Dockerfile -``` - -#### Example: Different Dockerfile -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - dockerfile: frontend/Dockerfile - context: frontend/ -``` -**Explanation:** -- The first image would be built using the Dockerfile in `./Dockerfile` and the context path `./`. -- The second image would be built using the Dockerfile in `./frontend/Dockerfile` and the context path `./frontend/`. -- Switching the `context` for image `frontend` would assure that a statement like `ADD file.txt` or `COPY file.txt .` in `./frontend/Dockerfile` would use the local file `./frontend/file.txt` instead of `./file.txt`. -- In this example, it would probably be useful to have a `./.dockerignore` file which ignores the `frontend/` folder when building the first image called `backend`. - -:::note -See **[Best Practices for Image Building](../../guides/image-building.mdx)** for details on how to optimize your Dockerfiles and use `.dockerignore` for faster image building. -::: - - - -## `context` -The `context` option expects a string with a path to the folder used as context path when building the image. The context path serves as root directory for Dockerfile statements like ADD or COPY. - - - -#### Default Value For `context` -```yaml -context: ./ -``` - -#### Example -**See "[Example: Different Dockerfiles](#example-different-dockerfile)"** diff --git a/docs/versioned_docs/version-5.15/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-5.15/configuration/images/entrypoint-cmd.mdx deleted file mode 100644 index 5e8b440f1c..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/entrypoint-cmd.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Override ENTRYPOINT and CMD -sidebar_label: entrypoint + cmd ---- - -:::warning -If you are overriding the Dockerfile `ENTRYPOINT` or `CMD`, it only affects the image but **not** the deployment in Kubernetes. If a deployment using this image defines the `command` or `args` options, they will take precedence over the overrides you define for the image. -::: - -### `entrypoint` -The `entrypoint` option expects an array of strings which tells DevSpace to override the `ENTRYPOINT` defined in the `Dockerfile` during the image building process. - -:::note -If you are overriding the `ENTRYPOINT`, it is often useful to also [override the `CMD` statement](#cmd). If you want to define `entrypoint: ...` for an image and you do **not** want the `CMD` statement from the Dockerfile, add `cmd: []` to the image configuration in your `devspace.yaml`. -::: - -#### Default Value For `entrypoint` -```yaml -entrypoint: [] -``` - -#### Example: Override ENTRYPOINT For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - entrypoint: - - npm - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `ENTRYPOINT` (e.g. `[npm, start]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `ENTRYPOINT`, DevSpace would use the `[npm, run, dev]` as value for `ENTRYPOINT` - - -## `cmd` -The `cmd` option expects an array of strings which tells DevSpace to override the `CMD` defined in the `Dockerfile` during the image building process. - -:::note -`CMD` generally defines the arguments for `ENTRYPOINT`. -::: - -#### Default Value For `cmd` -```yaml -cmd: [] -``` - -#### Example: Override CMD For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - cmd: - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `CMD` (e.g. `[start]`) for `ENTRYPOINT` (e.g. `[npm]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `CMD`, DevSpace would use the `[run, dev]` as value for `CMD` diff --git a/docs/versioned_docs/version-5.15/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-5.15/configuration/images/image-tagging.mdx deleted file mode 100644 index c99d3fc36e..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/image-tagging.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Image Name & Tagging Schema -sidebar_label: image + tags ---- - -The `images` section in `devspace.yaml` is a map with keys representing the name of the image and values representing the image definition including `tag`, `dockerfile` etc. -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - dev-${USER}-### # Each # will be replaced with a random character -``` - -## `image` *Image Repository* -The `image` option expects a string containing the image repository including registry and image name. - -- Make sure you [authenticate with the image registry](../../configuration/images/basics.mdx#authentication-registry) before using in here. -- For Docker Hub images, do not specify a registry hostname and use just the image name instead (e.g. `mysql`, `my-docker-username/image`). - -#### Example: Multiple Images -```yaml -images: - backend: - image: john/appbackend - frontend: - image: custom-registry.com:5000/peter/appfrontend -``` -**Explanation:** -- The first image `backend` would be tagged as `appbackend:[TAG]` pushed to Docker Hub using the path `john` (which generally could be your Docker Hub username). -- The second image `frontend` would be tagged as `appfrontend:[TAG]` and pushed to `custom-registry.com:5000` using the path `peter`. - -## `tags` *Tagging Schema* -The `tags` option expects an array of strings, each containing a static tag or a tagging schema used to automatically tag images before pushing them to the registry. The tagging schema can contain [dynamic config variables](../../configuration/variables/basics.mdx). While you can define your own config variables, DevSpace provides a set of pre-defined variables. The most commonly used variables for tagging are: -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_NAMESPACE**: The default namespace of your current kube-context - -Besides dynamic config variables, DevSpace offers you a possibility to mark certain parts of the image tag as random generated. During image build DevSpace will fill these parts with random characters. The placeholder for a random character is **#**. For example, let's assume you want to generate tags with the format dev-BRANCH-RANDOM, you would write the tag as: -```yaml -images: - default: - image: my-registry.com/user/image - tags: - # The five # are replaced with 5 random characters. The variable ${GIT_BRANCH} is replaced - # with the current branch the user is on - - 'dev-${GIT_BRANCH}-#####' -``` - -:::info Unique Tags For Development -**Make sure tags are unique** when defining a custom tagging schema for development. Unique tags ensure that your application gets started with the newly built image instead of using an older, cached version. Therefore, it is highly recommended for non-production tags to either use `#` placeholders or `DEVSPACE_TIMESTAMP` as a suffix in your tagging schema (see [example below](#example-custom-tagging-schema)). -::: - -#### Default Value For `tag` -```yaml -tags: -- '#####' -``` - -#### Example: Custom Tagging Schema -```yaml -images: - backend: - image: john/appbackend - tags: - - latest - - dev-backend-${DEVSPACE_GIT_COMMIT}-##### -``` -**Explanation:** -The above example would always use the tag `latest` and additionaly generate random tags which could look like this one: `dev-backend-b6caf8a-Jak9i`. This example tag consists of the following substrings defined by the tagging schema: -- `dev-` static string -- `-backend-` static string -- `b6caf8a` latest git commit hash on current local branch -- `-` static string -- `Jak9i` auto-generated random string diff --git a/docs/versioned_docs/version-5.15/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-5.15/configuration/images/inject-restart-helper.mdx deleted file mode 100644 index d0af502cc5..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/inject-restart-helper.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Container Restart Helper -sidebar_label: injectRestartHelper ---- - -## `injectRestartHelper` -The `injectRestartHelper` option expects a boolean which decides if DevSpace should inject a restart helper and override the `ENTRYPOINT+CMD` of the image in runtime during the build process which wraps the regular container start command and allows to restart the regular container start command without terminating/recreating the container. - - -:::note How does it work? -The idea of the restart helper is to start the restart helper script as PID 1 inside the conainer. This script will then start the original container entrypoint which will run your application. If a [restart is triggered](#trigger-a-restart), the restart helper will just restart the application again. -::: - -:::tip Automatic Restart On File Change -The restart helper per se does not do much except restarting your application if it has been killed. You can combine this config option with the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) which will effectively restart your application inside the container every time DevSpace syncs files into the container. -::: - - -#### Default Value For `injectRestartHelper` -```yaml -injectRestartHelper: false -``` - -#### Example: Inject Restart Helper -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - injectRestartHelper: true -``` - - -
- -## Trigger a Restart -You can restart a pod that has a restart helper injected with devspace itself: -``` -devspace restart -n my-namespace -devspace restart -n my-namespace --pod my-pod -devspace restart -n my-namespace --label-selector abc=def -``` - -Restart a pod via kubectl: -``` -kubectl exec my-pod -- sh -c 'PID=$(cat /.devspace/devspace-pid) && rm /.devspace/devspace-pid && kill -9 -$PID' -``` - -You can also manually trigger a restart through the restart helper by doing the following (same as with kubectl): -```bash -# 1. Get the PID of your applications process -PID=$(cat /.devspace/devspace-pid) - -# 2. Remove the PID file to tell the restart helper that this is an intended restart -# (otherwise the restart helper will terminate as well which will kill the container) -rm /.devspace/devspace-pid - -# 3. Kill the application process group (restart helper on PID 1 will detect this and restart it again) -kill -9 -$PID -``` - -:::note Automatic Restart On File Change -This is exactly what DevSpace is doing when the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) is configured. -::: - - -
- -## Restart Helper Script -```bash -#!/bin/sh -# -# A process wrapper script to simulate a container restart. This file was injected with devspace during the build process -# -set -e -pid="" -trap quit TERM INT -quit() { - if [ -n "$pid" ]; then - kill $pid - fi -} -while true; do - setsid "$@" & - pid=$! - echo "$pid" > /.devspace/devspace-pid - set +e - wait $pid - exit_code=$? - if [ -f /.devspace/devspace-pid ]; then - rm -f /.devspace/devspace-pid - printf "\nContainer exited with $exit_code. Will restart in 7 seconds...\n" - sleep 7 - fi - set -e - printf "\n\n############### Restart container ###############\n\n" -done -``` - -## Providing a custom restart helper script or changing the existing script - -DevSpace provides a way to change the existing restart helper script by defining the option `restartHelperPath`: -```yaml -images: - frontend: - image: john/appfrontend - injectRestartHelper: true - restartHelperPath: path/to/restarthelper.sh -``` - -DevSpace will now inject this script instead of the bundled restart helper script (see above). You can also specify an URL instead of a local path. This can be handy if you want to start up the application in a special way or want to make adjustments to the existing restart helper script. diff --git a/docs/versioned_docs/version-5.15/configuration/images/kaniko.mdx b/docs/versioned_docs/version-5.15/configuration/images/kaniko.mdx deleted file mode 100644 index 8e4aa3ac01..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/kaniko.mdx +++ /dev/null @@ -1,332 +0,0 @@ ---- -title: Build Images with kaniko -sidebar_label: kaniko ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [kaniko](https://github.com/GoogleContainerTools/kaniko) as build tool allows you to build images directly inside your Kubernetes cluster without a Docker daemon. DevSpace simply starts a build pod and builds the image using `kaniko`. - -:::note Automatic Cleanup -After the build process completes, the build pod started for the kaniko build process will be deleted again. -::: - -To set `kaniko` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: {} -``` - -## Flags & Arguments - -### `cache` -The `cache` option expects a boolean that states if kaniko should make use of layer caching by pulling the previously build image and using the layers of this image as cache. - -#### Default Value For `cache` -```yaml -cache: true -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - cache: false -``` -**Explanation:** -- The first image `backend` would be built using kaniko and make use of the build cache. -- The second image `frontend` would be built using kaniko and **not** use the build cache. - - -### `snapshotMode` -The `snapshotMode` option expects a string that can have the following values: -- `full` tells kaniko to do a full filesystem snapshot -- `time` tells kaniko to do a filesystem snapshot based on `mtime` (default) - -:::warning Limitations -One of the biggest limitations of the `time` mode is that kaniko might **miss** file metadata changes introduced by `RUN` statements, e.g. kaniko might skip a command such as `RUN chown 333:333 -R /app`. In cases where this is not an option, use `full` instead. Learn more about [limitations related to kaniko snapshots using `mtime`](https://github.com/GoogleContainerTools/kaniko#mtime-and-snapshotting). -::: - -#### Default Value For `snapshotMode` -```yaml -snapshotMode: time -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - snapshotMode: time -``` -**Explanation:** -- The first image `backend` would be built using kaniko and creating full filesystem snapshots. -- The second image `frontend` would be built using kaniko and calculate filesystem snapthots only based on `mtime`. - - -### `insecure` -The `insecure` option expects a boolean stating if kaniko should allow to push to an insecure (plain HTTP instead of HTTPS) registry. - -:::warning -This option should only be set to `true` for testing purposes. -::: - -#### Default Value For `insecure` -```yaml -insecure: false -``` - -#### Example: Push to Insecure Registry With kaniko -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - insecure: false -``` -**Explanation:** -The image `backend` would be built using kaniko and pushing to the insecure registry `123.456.789.0:5000` would be allowed. - - -### `args` -The `args` option expects an array of strings that will be passed as arguments (and flags) when running the kaniko build command. - -:::note Kaniko Documentation -Take a look at the kaniko documentation for a full [list of available flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). -::: - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Passing Args to kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - args: - - --cache-dir=/tmp - - --verbosity=debug -``` -**Explanation:** -The image `backend` would be built using kaniko and the flags `--cache-dir=/tmp --verbosity=debug` would be set when running the build command within the kaniko pod used for image building. - - - -
- -## Build Pod Configuration - -### `image` -The `image` option expects a string stating the image that should be used for the kaniko container within the build pod. - -#### Default Value For `image` -```yaml -image: gcr.io/kaniko-project/executor:v0.17.1 -``` - -#### Example: Use Different Kaniko Image/Version -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - image: gcr.io/kaniko-project/executor:v0.19.0 -``` - -### `initImage` -The `initImage` option expects a string stating the image that should be used for the init kaniko container within the build pod. (default is `alpine`) - -### `pullSecret` -The `pullSecret` option expects a string with the name of a Kubernetes secret which is used by kaniko as pull/push secret (e.g. for pulling the base image defined in the `FROM` statement of the Dockerfile and for pushing the newly built image after the kaniko build process). - -:::info -In most cases, DevSpace already makes sure that kaniko gets the correct pull secrets to push and pull to registries. -::: - -#### Default Value For `pullSecret` -```yaml -pullSecret: "" -``` - -#### Example: Pull Secret For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - pullSecret: custom-pull-secret -``` -**Explanation:** -The image `backend` would be built using kaniko and kaniko would use the Kubernete secret `custom-pull-secret` to pull images from registries that require authentication. - -:::tip Creating Pull Secrets using `hooks` -If you use the `pullSecret` option, you have to manually create the secret before DevSpace tries to build your images. You can automate this by [defining a hook in devspace.yaml](../../configuration/hooks/basics.mdx) as show in this example: -```yaml -hooks: -- command: kubectl - args: - - create - - secret - - generic - - custom-pull-secret - - --from-literal - - config.json='{ "credsStore":"ecr-login" }' - when: - before: - images: all -``` -::: - -:::note Building AWS ECR images on EKS -If your EKS instance is [configured with access to ECR (see instance role permissions for AWS EKS and ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html), your pull secret referenced by the `pullSecret` option, could be created with this kubectl command: -```yaml -kubectl create secret generic custom-pull-secret --from-literal config.json='{ "credsStore":"ecr-login" }' -``` -The resulting Kubernetes secret would look like this: -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: custom-pull-secret -data: - config.json: eyAiY3JlZHNTdG9yZSI6ImVjci1sb2dpbiIgfQ== -``` -If you define `pullSecret: custom-pull-secret` as shown in the example above, DevSpace will automatically mount this secret into the kaniko container and kaniko will be able to pull from and push to ECR. -::: - - -### `additionalMounts` -The `additionalMounts` option expects an array of mount options that allow to mount Kubernetes Secrets and ConfigMaps into the kaniko container within the build pod. - -#### Default Value For `additionalMounts` -```yaml -additionalMounts: [] -``` - -#### Example: Mount ConfigMaps & Secrets For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - additionalMounts: - - mountPath: /some/configmap/dir - configMap: - name: my-configmap - - mountPath: /some/secret/dir - secret: - name: my-secret - items: - - key: aws-token - path: token.json -``` -**Explanation:** -The above configuration would create a kaniko container which mounts the following volumes: -- All keys within the ConfigMap `my-configmap` will be mounted as files within the folder `/some/configmap/dir`. The filenames will be the keys within the ConfigMap. -- The key `aws-token` within the Secret `my-secret` will be mounted as the file `/some/secret/dir/token.json`. - - -### `resources` -The `resources` option expects a Kubernetes resource object, so that the kaniko pod can specify `requests` and `limits` for resources such as `memory` and `cpu`. - -#### Default Value For `resources` -```yaml -resources: {} -``` - -#### Example: Resource Limits For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - resources: - limits: - memory: "256Mi" - cpu: "500m" -``` - - -### `namespace` -The `namespace` option expects a string stating a namespace that should be used to start the kaniko build pod in. - -:::warning Hard-Coding Namespaces Discouraged -Unless you really know what you are doing, it is discouraged to hard-code namespaces within devspace.yaml because that makes it harder to share the project and its configuration with others. -::: - -#### Default Value For `namespace` -```yaml -namespace: "" # defaults to the default namespace of the current kube-context -``` - -#### Example: Different Namespace For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - namespace: build-namespace -``` -**Explanation:** -The image `backend` would be built using kaniko and the build pod started to run the kaniko build process would be created within the namespace `build-namespace` within the cluster that the current kube-context points to. - -### `serviceAccount` - -The service account to use for the build pod. - -### `nodeSelector` - -A key value map of the node selector to use for the build pod. - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - diff --git a/docs/versioned_docs/version-5.15/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-5.15/configuration/images/pull-secrets.mdx deleted file mode 100644 index 97baf078e7..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/pull-secrets.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Image Pull Secrets -sidebar_label: createPullSecret ---- - -## `createPullSecret` -The `createPullSecret` option expects a boolean that tells DevSpace if a pull secret should be created for the registry where this image will be pushed to. -- If there are multiple images with the **same registry** and any of the images will define `createPullSecret: true`, the pull secret will be created no matter if any of the other images using the same registry explicitly defines `createPullSecret: false`. -- There is **no need to change your Kubernetes manifests, Helm charts or other deployments to reference the pull secret** because DevSpace will [add the pull secret to the service account](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) which deploys your project. This ensures that the pull secret is automatically considered by Kubernetes altough it is not explicitly referenced by your pods. -- After running `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the command `kubectl get serviceaccount default -o yaml` and take a look at the `imagePullSecrets` section of this service account. - -#### Default Value For `createPullSecret` -```yaml -createPullSecret: false -``` - -#### Example: Different Dockerfiles -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - createPullSecret: true -``` -**Explanation:** -- The first image `backend` will be pushed to Docker Hub and DevSpace will **not** create a pull secret for Docker Hub because `createPullSecret` defaults to `false`. This makes sense for public images where no login is required to pull the image or where you want to manage the pull secret yourself. -- The second image `frontend` will be pushed to gcr.io and DevSpace will create a pull secret for gcr.io, so Kubernetes is able to pull the image from gcr.io. diff --git a/docs/versioned_docs/version-5.15/configuration/images/rebuild-strategy.mdx b/docs/versioned_docs/version-5.15/configuration/images/rebuild-strategy.mdx deleted file mode 100644 index c5aa10e53a..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/images/rebuild-strategy.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Rebuild Strategies -sidebar_label: rebuildStrategy ---- - -## `rebuildStrategy` -The `rebuildStrategy` option expects a string which decides when DevSpace will rebuild an image. By default DevSpace will rebuild an image if one of the conditions is true: -- The image was not built before -- The dockerfile has changed -- The configuration within the devspace.yaml for the image has changed -- A file within the docker context (excluding .dockerignore rules) has changed - -:::tip Skip Rebuild Manually -DevSpace will skip building when the `--skip-build` flag is explicitly provided. -::: - -:::tip Trigger Rebuild Manually -DevSpace will always rebuild when the `-b / --force-rebuild` flag is explicitly provided. -::: - -#### Options For `rebuildStrategy` -Currently DevSpace supports the rebuild strategies `always` and `ignoreContextChanges`: -- **always**: if this strategy is provided, DevSpace will always rebuild the image -- **ignoreContextChanges**: same as default except that DevSpace will ignore changes to files within the docker context - -#### Example -```yaml {4,7} -images: - backend: - image: john/appbackend - rebuildStrategy: always - frontend: - image: john/appfrontend - rebuildStrategy: ignoreContextChanges - cache: - image: john/cache - build: - disabled: true -``` -**Explanation:** -When running `devspace dev`, `devspace build` or `devspace deploy` using the above configuration, DevSpace would: -- **not** build the image `cache` because `build.disabled` is `true` -- build the image `frontend` only if it was not built yet, there were changes to the Dockerfile or the image config itself changed -- build the image `backend` because `rebuildStrategy` is set to `always` diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/activation.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/activation.mdx deleted file mode 100644 index c8785444d0..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/activation.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "Profiles: Activation" -sidebar_label: activation ---- - -The `activation` option is optional and allows you to activate a profile using regular expression matching of environment variables. An activation is configured with the profile it activates in `devspace.yaml`. - -#### Example: Defining a Profile Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "production" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The `production` profile would be activated when the environment variable `ENV` has value `production`: - -#### Example: Regular Expression Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "prod-\d+" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The profile `production` would be activated when the environment variable `ENV` matches the regular expression `prod-\d+`. This can be useful for matching environment variables that have dynamic values. - -#### Example: Matching All Environment Variables -When multiple `env` name/expression pairs are specified in the same activation, all environment variables values must match the expression to activate the profile. For example, the `production` profile is activated when both environment variables match their expressions: -```yaml {3-6} -profiles: -- name: production - activation: - - env: - CI: "true" - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -#### Example: Matching Any Environment Variables -When environment variables are used in multiple activations, the profile is activated when any environment variable matches. In this example, the `production` profile is activated when either environment variables match their expressions: -```yaml {3-7} -profiles: -- name: production - activation: - - env: - CI: "true" - - env: - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -### Dependency Activations -When `dependencies` are referenced from a `devspace.yaml`, the dependency's profile activations will also be evaluated. In this example, any profile activations in `./component-1/devspace.yaml` or `./component-2/devspace.yaml` would be evaluated. - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - -#### Example: Disable Activations by Dependency -The `disableProfileActivation` option can be used to disable profile activations for specific dependencies. In the following example, the activations for `./component-1/devspace.yaml` would be ignored, while the activations in `./component-2/devspace.yaml` would be evaluated: -```yaml {5} -dependencies: -- name: component-1 - source: - path: ./component-1 - disableProfileActivation: true -- name: component-2 - source: - path: ./component-2 -``` - -### Disable Activations Globally -The `--disable-profile-activation` flag can be used to disable all profile activations, including those specifed within each dependency's `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/basics.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/basics.mdx deleted file mode 100644 index b43a2794a4..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/basics.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Config Profiles -sidebar_label: Basics ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -DevSpace allows you to define different profiles for different use cases (e.g. working on different services in the same project, starting certain debugging environments) or for different deployment targets (e.g. dev, staging production). - -Profiles allow you to define: -- [`replace`](../../configuration/profiles/replace.mdx) statements to override entire sections of the config. -- [`merge`](../../configuration/profiles/merge.mdx) patches ([JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386)) to change specific parts of the config. -- [`strategicMerge`](../../configuration/profiles/strategic-merge.mdx) patches (similar to [kubernetes strategic patches](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/#use-strategic-merge-patch-to-update-a-deployment-using-the-retainkeys-strategy)) to change specific parts of the config. -- [`patches`](../../configuration/profiles/patches.mdx) ([JSON Patch, RFC 6902](https://tools.ietf.org/html/rfc6902)) to modify certain paths in the config. - -:::note Combine several strategies -It is possible to use several strategies together within one profile. The execution order inside a single profile is: -1. `replace` -2. `merge` -3. `strategicMerge` -4. `patches` - -You can also apply multiple profiles through the `--profile` flag -::: - -:::tip Debug Profiles - - - -::: - -A profile has to be configured in the `profiles` section of the `devspace.yaml`. -```yaml {15-25} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` - -## Useful Commands - -### `devspace print -p [profile]` - - - - - -### `devspace list profiles` -To get a list of available profiles, you can run this command: -```bash -devspace list profiles -``` - -### `devspace use profile [profile]` -To permanently switch to a different profile, you can run this command: -```bash -devspace use profile [PROFILE_NAME] -``` - -:::note -Permanently switching to a profile means that all future commands (e.g. `devspace deploy` or `devspace dev`) will be executed using this profile until the user [resets the profile](#devspace-use-profile---reset) (see below). -::: - -### `devspace use profile --reset` -To permanently switch back to the default configuration (no profile replaces and patches active), you can run this command: -```bash -devspace use profile --reset -``` - -### `devspace [deploy] -p [profile]` -Most DevSpace commands support the `-p / --profile` flag. Using this flag, you can run a single command with a different profile without switching your profile permenantly: -```bash -devspace build -p [PROFILE_NAME] -devspace deploy -p [PROFILE_NAME] -devspace dev -p [PROFILE_NAME] -devspace dev -i -p [PROFILE_NAME] -``` diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/merge.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/merge.mdx deleted file mode 100644 index ac8c7420cb..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/merge.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Profiles: Merge" -sidebar_label: merge ---- - -Merge patches are a way to perform specific overrides to the configuration without having to create a completely separate config file. Patch functionality follows [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386) semantics. - -### Example - -Merge patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {16-30} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - merge: - images: - # Change the backend image - backend: - image: john/prodbackend - # Delete the backend-debugger image - backend-debugger: null - # Override deployments - deployments: - - name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config is merged with the given merge patch at `profiles[0].merge`. -- Merge patches follow the rules as defined in [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386): - - Arrays are overriden - - Objects are merged together - - Keys that have a `null` value are removed from objects -- The resulting config used in-memory when the profile `production` is used would look like this (you can check via `devspace print -p production`): - -```yaml -# In-Memory Config After Applying Merge Patches For Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/parents.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/parents.mdx deleted file mode 100644 index 8ac70e6678..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/parents.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Profiles: Parents" -sidebar_label: parents ---- - -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -The `parents` option is optional and expects the names of other profiles which should be applied before this profile. -The profiles are applied in the order they are specified. It is also possible to apply profiles from distant `devspace.yaml`s. -The kind of profile inheritance that the `parents` option provides can help to reduce redundancy when multiple profiles need to change the config in a similar way. - -:::info Execution Order -A parent profile is applied before the profile that defines the parent. A parent profile can have parents of its own. -::: - -#### Example: Defining a Parent Profile -```yaml {16-17} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - parents: - - profile: staging - patches: - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -- name: staging - replace: - images: - backend: - image: john/backendprod - patches: - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/backendprod - - op: remove - path: deployments.name=backend.helm.values.containers[1] -``` -When the `production` profile is active, the `replace` and `patches` statements configured in `staging` would be applied first because of the `parents` statement in line 16. After applying the `staging` profile, DevSpace would additionally apply the currently active `production` profile. In this example, the `production` profile is based on the `staging` profile and the only difference is that the `production` profile adds another container to the `backend` deployment which is using the image `john/cache`. - -#### Example: Defining multiple Parent Profiles -```yaml -version: v1beta9 -profiles: -- name: multi-parents - # Field that applies the profile deployments first and then the profile images - parents: - - profile: deployments - - profile: images -- name: deployments - replace: - deployments: - - name: my-deployment - helm: - componentChart: true - values: - containers: - - name: test -- name: images - replace: - images: - test: - image: mydockeruser/devspace - createPullSecret: true -``` - - -It is also possible to load a profile from a different source with the option `profiles.*.parents.*.source` that can define profiles that lie in a different `devspace.yaml`: - -#### Example: Define a profile from a different devspace.yaml -```yaml -version: v1beta9 -profiles: -- name: dev - parents: - # Will load the profile images from the devspace.yaml specified in other-folder/devspace.yaml - - profile: images - source: - path: other-folder # devspace.yaml will be automatically appended to the path (same syntax as with dependencies) - # or load from url - # path: https://raw.githubusercontent.com/my-org/my-repo/master/devspace.yaml - # or load from git - # git: https://github.com/loft-sh/devspace.git - - profile: deployments - source: - path: other-folder-2 -``` - -Under `source` the same options can be specified as for loading [dependencies](../../configuration/dependencies/basics.mdx). - - diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/patches.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/patches.mdx deleted file mode 100644 index d238cadc7f..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/patches.mdx +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: "Profiles: Patches" -sidebar_label: patches ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -Patches are a way to perform minor overrides to the configuration without having to create a separate config file. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as implemented by the [yaml-patch](https://github.com/krishicks/yaml-patch) library. - -## Example -Patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {15-25} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config would be patched with 3 patches. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Patches For Profile `production` -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend - - image: john/cache -``` - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `patches` -The `patches` option expects a patch object which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the config (e.g. `images.backend.image`, `deployments.name=backend.helm.values.containers[1]`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `deployments[*].helm.values`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `deployments`), you have two options: - -1. Use the index of the array item you want to patch, e.g. `deployments[0]` -2. Use a property selector matching the array item(s) you want to patch, e.g. `deployments.name=backend` - -Using a property selector is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A property selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -:::note -The `patches` of a profile can modify all parts of the configuration **except** the sections `profiles` and `commands`. -::: - -#### Example: Config Patches -```yaml {15-32} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: images.backend.image - value: john/stagingbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` -**Explanation:** -- The above example defines 2 profiles: `staging`, `production` -- Users can use the flag `-p staging` to use the `staging` profile for a single command execution -- Users can use the flag `-p production` to use the `production` profile for a single command execution -- Users can permanently switch to the `staging` profile using: `devspace use profile staging` -- Users can permanently switch to the `production` profile using: `devspace use profile production` - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/replace.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/replace.mdx deleted file mode 100644 index 21c4a5d99d..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/replace.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Profiles: Replace" -sidebar_label: replace ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `replace` - -The `replace` option expects an object with the following (optional) fields: -- `images` which will replace the entire `images` section of the devspace.yaml -- `deployments` which will replace the entire `deployments` section of the devspace.yaml -- `dev` which will replace the entire `dev` section of the devspace.yaml -- `dependencies` which will replace the entire `dependencies` section of the devspace.yaml -- `hooks` which will replace the entire `hooks` section of the devspace.yaml - -#### Example: Using Config Replace For Profile `production` -```yaml {16-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - replace: - images: - backend: - image: john/prodbackend - patches: - - op: remove - path: deployments[0].helm.values.containers[1] -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config section `images` would be entirely replaced and additionally, 1 patch would be applied. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - -:::tip Combine Replace & Patches -As shown in this example, it is possible to use `replace` and `patch` options in combination. -::: - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.15/configuration/profiles/strategic-merge.mdx b/docs/versioned_docs/version-5.15/configuration/profiles/strategic-merge.mdx deleted file mode 100644 index 91c5d1e287..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/profiles/strategic-merge.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: "Profiles: Strategic Merge" -sidebar_label: strategicMerge ---- - -Strategic Merge patches are a way to perform specific overrides to the configuration without having to create a completely separate config file. -They are very similar to [merge patches](../../configuration/profiles/merge.mdx) and [kubernetes strategic patches](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/#use-strategic-merge-patch-to-update-a-deployment-using-the-retainkeys-strategy) with the distinct difference that special keys will be merged differently as in a standard merge patch. -Especially changes to a single `deployment` are easier to realize with a strategic merge patch. - -### Example - -Strategic Merge patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {25-38} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - service: - ports: - - port: 3000 - containers: - - image: john/devbackend - - image: john/debugger -- name: untouched-deployment - helm: - componentChart: true - values: - containers: - - image: untouched/deployment -profiles: -- name: production - strategicMerge: - images: - # Change the backend image - backend: - image: john/prodbackend - # Delete the backend-debugger image - backend-debugger: null - # Override backend deployment and leave others - deployments: - - name: backend - helm: - values: - containers: - - image: john/prodbackend -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config is merged with the given strategic merge patch at `profiles[0].strategicMerge`. -- Strategic Merge patches follow the same rules as [merge patches](../../configuration/profiles/merge.mdx), but are merged for special keys differently: - - Array items will mostly be merged instead of replaced (depends on the key). For example, if you define an `deployments` array in a strategic merge patch, the array items will be matched by `name` and added to the array instead of replacing the complete `deployments` section. -- The resulting config used in-memory when the profile `production` is used would look like this (you can check via `devspace print -p production`): - -```yaml -# In-Memory Config After Applying Merge Patches For Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend - service: - ports: - - port: 3000 -- name: untouched-deployment - helm: - componentChart: true - values: - containers: - - image: untouched/deployment -``` - diff --git a/docs/versioned_docs/version-5.15/configuration/pullSecrets/basics.mdx b/docs/versioned_docs/version-5.15/configuration/pullSecrets/basics.mdx deleted file mode 100644 index 89a572cefc..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/pullSecrets/basics.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Pull Secrets -sidebar_label: pullSecrets ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to configure additional [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) that should be created in the target namespace. For each configured pull secret in the `devspace.yaml`, DevSpace will create a secret in the target namespace and add the secret to the `imagePullSecrets` field of the service account. - -For [images](../images/basics.mdx), DevSpace will also automatically create a pull secret, if authentication data can be found in the local docker store and creation is [enabled](../images/pull-secrets.mdx) via `createPullSecret`. - -Image Pull Secrets are defined in the `pullSecrets` section of the `devspace.yaml`. - - - - -```yaml -# If you don't want to specify the password and username directly in the config -# you can use variables, .env file or save the credentials in the local docker store -pullSecrets: -- registry: my-registry.com:5000 - username: ${REGISTRY_USER} - password: ${REGISTRY_PASSWORD} -``` - - - - -```yaml -# If you leave out the username & password DevSpace will try -# to get these from the local docker store. Make sure you -# are logged into the registry with `docker login my-registry.com:5000` -pullSecrets: -- registry: my-registry.com:5000 -``` - - - - -```yaml -pullSecrets: -- registry: my-registry.com:5000 - secret: my-pull-secret-name - serviceAccounts: - - default - - my-other-service-account -``` - - - - -## Configuration - -### `registry` -The `registry` option is mandatory and expects a string with the registry name for which a pull secret should be created for. - -### `username` -The `username` option is optional and expects a string with the username to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `password` -The `password` option is optional and expects a string with the password to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `email` -The `email` option is optional and expects a string with the email to login into the registry. This can be left empty usually since username and password are enough to log into a docker registry. If empty, the default value will be `noreply@devspace.cloud`. - -### `secret` -The `secret` option is optional and expects a string how the secret should be named. If empty, DevSpace will automatically create a meaningful name for the secret. - -### `serviceAccounts` -The `serviceAccounts` option is optional and expects an array of strings to which the pull secret should be added. If an image pull secret is added to a service account, the service account is able to pull images from that registry even without specifying the image pull secret in a pod definition. If this is empty, DevSpace will add the pull secret to the `default` serviceaccount. diff --git a/docs/versioned_docs/version-5.15/configuration/reference.mdx b/docs/versioned_docs/version-5.15/configuration/reference.mdx deleted file mode 100644 index f880548654..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/reference.mdx +++ /dev/null @@ -1,411 +0,0 @@ ---- -title: Config Reference -sidebar_label: Config Reference ---- - -import FragmentConfigImages from '../fragments/config-images.mdx'; -import FragmentConfigDeployments from '../fragments/config-deployments.mdx'; -import FragmentConfigDev from '../fragments/config-dev.mdx'; -import FragmentConfigDependencies from '../fragments/config-dependencies.mdx'; -import FragmentConfigVars from '../fragments/config-vars.mdx'; -import FragmentConfigProfiles from '../fragments/config-profiles.mdx'; -import FragmentConfigCommands from '../fragments/config-commands.mdx'; -import FragmentConfigHooks from '../fragments/config-hooks.mdx'; -import WarningBuildToolPriority from '../fragments/warning-build-tool-priority.mdx'; - -## `version` -```yaml -version: v1beta10 # string | Version of the config -``` - -## `images` - - - -[Learn more about how to configure image building.](../configuration/images/basics.mdx) - -### `images[*].build` -```yaml -build: # struct | Build configuration for an image - docker: ... # struct | Build image with docker and set options for docker - kaniko: ... # struct | Build image with kaniko and set options for kaniko - custom: ... # struct | Build image using a custom build script - disabled: false # bool | Disable image building (Default: false) -``` -:::info -Setting the key `docker`, `kaniko`, `custom` or `disabled` will define the build tool for this image. - -- If neither `docker`, `kaniko`, `custom` nor `disabled` is specified, `docker` will be used by default. -- By default, `docker` will use `kaniko` as fallback when DevSpace is unable to reach the Docker host. -::: - - - -### `images[*].build.docker` -```yaml -docker: # struct | Options for building images with Docker - preferMinikube: true # bool | If available, use minikube's in-built docker daemon instaed of local docker daemon (default: true) - skipPush: false # bool | Skip pushing image to registry, enabled automatically for minikube and docker-desktop (Default: false) - disableFallback: false # bool | Disable using kaniko as fallback when Docker is not installed (Default: false) - useCli: false # bool | If true will use the docker cli for building - args: # []string | Additional arguments that should be used for executing the docker cli - - --any-flag - options: ... # struct | Set general build options -``` - -### `images[*].build.buildKit` -```yaml -buildKit: - skipPush: false # bool | If this is true, DevSpace will not push any images - preferMinikube: true # bool | If false, will not try to use the minikube docker daemon to build the image - args: [] # string[] | Additional arguments to call docker buildx build with - command: [] # string[] | Override the base command to create a builder and build images. Defaults to ["docker", "buildx"] - options: ... # struct | Set build general build options - inCluster: # struct | If specified, DevSpace will use BuildKit to build the image within the Kubernetes cluster - name: "" # string | Name is the name of the builder to use. If omitted, DevSpace will try to create - # | or reuse a builder in the form devspace-$NAMESPACE - namespace: "" # string | Namespace where to create the builder deployment in. Defaults to the current active namespace. - rootless: false # bool | If enabled will create a rootless BuildKit deployment. - image: "" # string | The docker image to use for the BuildKit deployment - nodeSelector: "" # string | The node selector to use for the BuildKit deployment - createArgs: [] # string[] | Additional args to create the builder with. - noCreate: false # bool | By default, DevSpace will try to create a new builder if it cannot be found. - # | If this is true, DevSpace will fail if the specified builder cannot be found. - noRecreate: false # bool | By default, DevSpace will try to recreate the builder if the builder configuration - # | in the devspace.yaml differs from the actual builder configuration. If this is - # | true, DevSpace will not try to do that. - noLoad: false # bool | If enabled, DevSpace will not try to load the built image into the local docker - # | daemon if skip push is defined -``` - -### `images[*].build.kaniko` -```yaml -kaniko: # struct | Options for building images with kaniko - cache: true # bool | Use caching for kaniko build process - annotations: {} # map | Extra annotations for the kaniko build pod - labels: {} # map | Extra labels for the kaniko build pod - snapshotMode: "time" # string | Type of snapshotMode for kaniko build process (compresses layers) - insecure: false # bool | Allow working with an insecure registry by not validating the SSL certificate (Default: false) - command: [] # string[] | Array of strings for the kaniko pod - args: [] # string[] | Array of additional args for kaniko build command - image: "" # string | Allows to change the kaniko image or kaniko version / image tag. - initImage: "" # string | Allows to change the init container kaniko image (defaults to alpine) - serviceAccount: "" # string | The service account to use for this build pod - nodeSelector: {} # map | A key value map of node labels to select a node for the build pod - pullSecret: "" # string | Mount this Kubernetes secret instead of creating one to authenticate to the registry (default: "") - additionalMounts: [] # struct[] | Array of mount configurations for Kubernetes Secrets and ConfigMaps that should be mounted into the kaniko build container - namespace: "" # string | Kubernetes namespace to run kaniko build pod in (Default: "" = deployment namespace) - options: ... # struct | Set build general build options - skipPullSecretMount: true # bool | If true devspace will not mount and create any image pull secret for the kaniko pod - env: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.value field) - my-string-env: value - envFrom: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.valueFrom field) - my-env-from-secret: - secretKeyRef: ... - my-env-from-configmap: - configMapKeyRef: ... - initEnv: {} # map | Key value pairs of enviroment variables that should be added to the kaniko init pod -``` - -### `images[*].build.custom` -```yaml -custom: # struct | Options for building images with a custom build script - command: "./scripts/builder" # string | Command to be executed for building (e.g. path to build script or executable) - commands: [] # struct[] | An array of objects with keys command and os to exchange the command for a specific os - args: [] # string[] | Array of arguments for the custom build command - appendArgs: [] # string[] | Args are prepended to the command (before the image tags) and appendArgs are appended - imageFlag: string # string | Name of the flag that DevSpace uses to pass the image name + tag to the build script - imageTagOnly: false # bool | If true devspace will only use the image tag as argument - skipImageArg: false # bool | If true devspace will skip adding image:tag as argument completely - onChange: [] # string[] | Array of paths (glob format) to check for file changes to see if image needs to be rebuilt -``` - -### `images[*].build.disabled` -```yaml -build: # struct | Build configuration for an image - disabled: true # bool | Disable image building (Default: false) -``` - -### `images[*].build.*.options` -```yaml -options: # struct | Options for building images - target: "" # string | Target used for multi-stage builds - network: "" # string | Network mode used for building the image - buildArgs: {} # map[string]string | Key-value map specifying build arguments that will be passed to the build tool (e.g. docker) -``` - - -## `deployments` - - - -:::info -Using the `helm` or `kubectl` key will define the type of deployment and the deployment tool to be used. -::: - -:::warning -You **cannot** use `helm` and `kubectl` in combination. -::: - -### `deployments[*].helm` -```yaml -helm: # struct | Options for deploying with Helm - chart: ... # struct | Relative path - componentChart: false # bool | Use the DevSpace component chart instead of a custom `chart` = deployment is a component (Default: false) - values: {} # struct | Any object with Helm values to override values.yaml during deployment - valuesFiles: # string[] | Array of paths to values files - - ./chart/my-values.yaml # string | Path to a file to override values.yaml with - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - wait: false # bool | Wait for pods to start after deployment (Default: false) - displayOutput: false # bool | Display output from helm install/upgrade (Default: false) - timeout: 180 # int | Timeout to wait for pods to start after deployment (Default: 180) - force: false # bool | Force deleting and re-creating Kubernetes resources during deployment (Default: false) - atomic: false # bool | Rollback deployment if it fails (Default: false) - cleanupOnFail: false # bool | Delete resources if rollback fails (Default: false) - recreate: false # bool | Recreate pods for applicable resources, e.g. deployments (Default: false) - disableHooks: false # bool | Disable hooks (Default: false) - v2: false # bool | Use legacy Helm v2 (Default: false) - tillerNamespace: "" # string | Kubernetes namespace to run Tiller in when using Helm v2 (Default: "" = same a deployment namespace) - deleteArgs: [] # []string | Extra args for the `helm delete` command during devspace purge - templateArgs: [] # []string | Extra args for the `helm template` command during devspace render - upgradeArgs: [] # []string | Extra args for the `helm upgrade` command during devspace deploy/dev - fetchArgs: [] # []string | Extra args for the `helm fetch` command during devspace render -``` -[Learn more about configuring deployments with Helm.](../configuration/deployments/helm-charts.mdx) - -### `deployments[*].helm.componentChart` -```yaml -helm: - componentChart: true # bool | Use Component chart - values: # struct | Options for deploying a component = Deployment/StatefulSet - initContainers: ... # struct[] | Init Containers of this Deployment/StatefulSet - containers: ... # struct[] | Containers of this Deployment/StatefulSet - labels: {} # map[string]string | Map of Kubernetes labels for labeling the pods of this component - annotations: {} # map[string]string | Map of Kubernetes annotations for annotating the pods of this component - volumes: ... # struct | Component volumes - service: ... # struct | Component service - serviceName: my-service # string | Service name for headless service (for StatefulSets) - ingress: ... # struct | Component ingress - replicas: 1 # int | Number of replicas (Default: 1) - autoScaling: ... # struct | AutoScaling configuration - rollingUpdate: ... # struct | RollingUpdate configuration - pullSecrets: ... # string[] | Array of PullSecret names - podManagementPolicy: OrderedReady # enum | "OrderedReady" or "Parallel" (for StatefulSets) - options: ... # struct | Options for deploying this component with helm -``` - -[Learn more about configuring the component chart.](https://devspace.sh/component-chart/docs/introduction) - -### `deployments[*].helm.chart` -```yaml -chart: # struct | Chart to deploy - name: my-chart # string | Path to local chart on filesystem OR chart name for remote chart in helm chart repository - version: v1.0.1 # string | Chart version - repo: "https://my-repo.tld/" # string | Helm chart repository - username: "my-username" # string | Username for Helm chart repository - password: "my-password" # string | Password for Helm chart repository -``` - -### `deployments[*].kubectl` -```yaml -kubectl: # struct | Options for deploying with "kubectl apply" - manifests: [] # string[] | Array containing glob patterns for the Kubernetes manifests to deploy using "kubectl apply" (e.g. kube or manifests/service.yaml) - kustomize: false # bool | Use kustomize when deploying manifests via "kubectl apply" (Default: false) - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - applyArgs: [] # string[] | Array of args for the "kubectl apply" command during deployment - createArgs: [] # string[] | Array of args for the "kubectl create" command during deployment - kustomizeArgs: [] # string[] | Array of args for the "kustomize build" command during deployment - deleteArgs: [] # string[] | Array of args for the "kubectl delete" command when purging deployments - cmdPath: "" # string | Path to the kubectl binary (Default: "" = detect automatically) -``` -[Learn more about configuring deployments with kubectl.](../configuration/deployments/kubernetes-manifests.mdx) - - -## `dev` - - - -[Learn more about configuring development mode.](../configuration/development/basics.mdx) - -### `dev.ports` -```yaml -ports: # struct[] | Array of port forwarding settings for selected pods -- name: somePort # string | Optional string stating the name of this port-forwarding configuration - imageName: someImage # string | Name of an image defined in `images` or in a dependency to select pods with - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - namespace: "" # string | Kubernetes namespace to select pods in - containerName: "" # string | Name of the container to select (only applies if reverseForward is used) - arch: "amd64" # string | Target architecture of the selected container (only applies if reverseForward is used) - forward: # struct[] | Array of ports to be forwarded - - port: 8080 # int | Forward this port on your local computer - remotePort: 3000 # int | Forward traffic to this port exposed by the pod/container selected - bindAddress: "" # string | Address used for binding / use 0.0.0.0 to bind on all interfaces (Default: "localhost" = 127.0.0.1) - reverseForward: # struct[] | Array of ports to reverse forward - - port: 3000 # int | Local port that should be accessible remotely - remotePort: 8080 # int | Port in the container where the local port can be accessed -``` -[Learn more about configuring port forwarding.](../configuration/development/port-forwarding.mdx) - -### `dev.open` -```yaml -open: # struct[] | Array of auto-open settings -- url: "https://localhost:3000/" # string | URL to open after application has started -``` -[Learn more about configuring auto-opening links.](../configuration/development/open-links.mdx) - -### `dev.sync` -```yaml -sync: # struct[] | Array of file sync settings for selected pods -- name: someSync # string | Optional string stating the name of this sync configuration - imageName: someImage # string | Name of an image defined in `images` or in a dependency to select pods with - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - localSubPath: ./ # string | Relative path to a local folder that should be synchronized (Default: "./" = entire project) - disableDownload: false # bool | If true will disable downloading files - disableUpload: false # bool | If true will disable uploading files - containerPath: /app # string | Path in the container that should be synchronized with localSubPath (Default is working directory of container (".")) - excludePaths: [] # string[] | Paths to exclude files/folders from sync in .gitignore syntax - downloadExcludePaths: [] # string[] | Paths to exclude files/folders from download in .gitignore syntax - uploadExcludePaths: [] # string[] | Paths to exclude files/folders from upload in .gitignore syntax - initialSync: mirrorLocal # enum | Specifies the initialSync algorithm: mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll (Default: mirrorLocal) - initialSyncCompareBy: mtime # enum | Specifies how the initialSync determines if a file has changed: mtime / size - waitInitialSync: false # bool | Wait until initial sync is completed before continuing (Default: false) - throttleChangeDetection: 100 # int | If greater zero, describes the amount of milliseconds to wait after each checked 100 files on the remote site - arch: "amd64" # string | Target architecture of the selected container - polling: false # bool | If polling should be used to detect file changes in the container - bandwidthLimits: # struct | Bandwidth limits for the synchronization algorithm - download: 0 # int64 | Max file download speed in kilobytes / second (e.g. 100 means 100 KB/s) - upload: 0 # int64 | Max file upload speed in kilobytes / second (e.g. 100 means 100 KB/s) - onUpload: # struct | After a file/folder has been uploaded to the container... - restartContainer: true # bool | Restart container after uploading files (requires images.*.injectRestartHelper: true) - execRemote: # struct | ...execute the following command inside the container: - command: chmod # string | Command to execute for files and folders - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onFileChange: # struct | Command to execute ONLY for files - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onDirCreate: # struct | Command to execute ONLY for newly created directories - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onBatch: # struct | Command to execute after sync has processed a full batch of files and folders - command: recompile # string | Command - args: # string[] | Argument list (NOTE: {} is NOT available for onBatch) - - assets # string | Arument 1 - - --minify # string | Argument 2 - onDownload: # struct | After a file/folder has been downloaded from the container to the local filesystem... - execLocal: # struct | ...execute the following command on the local machine: - command: chmod # string | Command to execute for files and folders - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onFileChange: # struct | Command to execute ONLY for files - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onDirCreate: # struct | Command to execute ONLY for newly created directories - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder -``` -[Learn more about confguring the file synchronization.](../configuration/development/file-synchronization.mdx) - -### `dev.logs` -```yaml -logs: # struct | Options for multi-container log streaming in development mode - disabled: false # bool | Disable log streaming in development mode (Default: false) - showLast: 200 # int | Number of last log lines to show before starting stream (Default: 50) - sync: true # bool | If the sync log should be merged with container and pod logs - selectors: # struct[] | An array of label or image selectors to select pods to stream logs from - - labelSelector: - other: label - namespace: optional - containerName: optional - - imageSelector: nginx - namespace: optional -``` -[Learn more about configuring multi-container log streaming.](../configuration/development/log-streaming.mdx) - -### `dev.autoReload` -```yaml -autoReload: # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - paths: [] # string[] | Array containing glob patterns of files that are watched for auto-reloading (i.e. reload when a file matching any of the patterns changes) - deployments: [] # string[] | Array containing names of deployments to watch for auto-reloading (i.e. reload when kubectl manifests or files within the Helm chart change) - images: [] # string[] | Array containing names of images to watch for auto-reloading (i.e. reload when the Dockerfile changes) -``` - -### `dev.terminal` -```yaml -terminal: # struct | Options for terminal mode - imageName: someImage # string | Name of an image defined in `images` or in a dependency to select pods with - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - command: [] # string[] | Array defining the shell command to start the terminal with (Default: ["sh", "-c", "command -v bash >/dev/null 2>&1 && exec bash || exec sh"]) - workDir: "" # string | The working directory where to execute the command or open the shell -``` - -[Learn more about terminal config options.](../configuration/development/terminal.mdx) - -### `dev.replacePods` -```yaml -replacePods: # struct[] | Which pods should be replaced -- imageName: someImage # string | Name of an image defined in `images` or in a dependency to select pods with - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - replaceImage: "" # string | The image that should be used for the pod - patches: # struct[] | Other patches that should be applied on the pod - - op: add # enum | Patch operation (replace, add, remove) - path: "spec.containers[0].command" # string | Jsonpath or xpath to config option that should be patched - value: ["sleep"] # arbitrary | Value to use for patch operation -``` - -[Learn more about replacing pods.](../configuration/development/replace-pods.mdx) - -## `dependencies` - - - -[Learn more about configuring dependencies.](./dependencies/basics.mdx) - -:::warning -You **cannot** use `source.git` and `source.path` in combination. You **must** exactly use one of the two. -::: - -## `hooks` - - - - -## `commands` - - - -[Learn more about configuring custom commands.](../configuration/commands/basics.mdx) - - -## `vars` - - - -[Learn more about configuring config variables.](../configuration/variables/basics.mdx) - - -## `profiles` - - - -[Learn more about configuring profiles and patches.](../configuration/profiles/basics.mdx) diff --git a/docs/versioned_docs/version-5.15/configuration/require/basics.mdx b/docs/versioned_docs/version-5.15/configuration/require/basics.mdx deleted file mode 100644 index b21908ec3f..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/require/basics.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Required Versions -sidebar_label: require ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of: - -- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version -- **Installed Plugins** (`require.plugins`): You can define required plugins and their version -- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range - -Requirements are defined in the `require` section of the `devspace.yaml`. - - - - -```yaml -# You can either specify an exact version or a version range or even -# multiple versions. -require: - devspace: '>= 4.0, < 6.0' -``` - - - - -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - - name: loft - version: ">= 1.11.0" -``` - - - - -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` - - - - -## Configuration - -### `devspace` -The `devspace` option can be used to define a version constraint for the DevSpace version that is required to use this config. Constraints can have `=`, `!=`, `<`, `>`, `>=` or `<=` in front of them and can be chained for a logical AND: -- **Exact Version**: `v1.0.0` -- **Newer Versions**: `>= v1.0.0` -- **Older Versions**: `< v1.0.0` -- **Multiple**: `>= v4.0.0, <= v8.0.0, != v5.0.0` - -### `plugins` -The `plugins` option takes an array of required plugins that need to be installed. For each plugin a name (`require.plugins[*].name`) and version constraint (`require.plugins[*].version`) is required. - -For example: -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - # Requires that the plugin loft is installed with at least version v1.11.0 - - name: loft - version: ">= 1.11.0" -``` - -### `commands` -The `commands` option takes an array of required commands that need to be installed. For each command a name (`require.commands[*].name`) and version constraint (`require.commands[*].version`) is required. By default, DevSpace will try to call the command via `NAME version` to figure out its version. DevSpace will use the regex `(v\\d+\\.\\d+\\.\\d+)` to parse the command version and assumes the first matching group contains the version. If no matching group can be found or the command does not exist, DevSpace will fail. - -You can override the arguments used by DevSpace to retrieve the command version via `require.commands[*].versionArgs`. You can also override the regex that is used by DevSpace to parse the command version via `require.commands[*].versionRegEx`. The version regex needs to define a single matching group that specifies the version. The first match of that matching group will be handled as command version by DevSpace. - -For example: -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` diff --git a/docs/versioned_docs/version-5.15/configuration/variables/basics.mdx b/docs/versioned_docs/version-5.15/configuration/variables/basics.mdx deleted file mode 100644 index 02ee654c22..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/variables/basics.mdx +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Config Variables -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to make your configuration dynamic by using variables in `devspace.yaml`. - -While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. Variables are defined within the `vars` section of `devspace.yaml`. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -# Variables defined by value will not -# be asked or overwritten through environment -- name: MYSQL_VERSION - value: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -```yaml {3,5-6} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - command: "echo 5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - - - - -```yaml {3} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: {} -``` - -:::tip -DevSpace allows you to use config variables without explicitly defining them as variables. You can simply reference them via `${MY_ENV_VAR}` anywhere in your `devspace.yaml`. Implicit variables use `source: all`. -::: - - - - -:::info Source -The `source` option of a config variable expects either: -- `all` means to check environment variables **first** and then ask a question if no env variable is defined (**default**) -- [`env`](../../configuration/variables/source-env.mdx) means to check environment variables **only** -- [`input`](../../configuration/variables/source-input.mdx) means to ask the user a question **once** (values will be cached in `.devspace/generated.yaml`) -- [`command`](../../configuration/variables/source-command.mdx) means DevSpace will not ask the user a question and instead execute a command to determine the value of the variable. -::: - -:::warning Pass Variables via CLI -A useful feature in DevSpace is that you can also specify variables as flags, which will override previous values (if there are any): -``` -devspace deploy --var VAR1=VALUE1 --var VAR2=VALUE2 -``` -::: - -:::note Input Caching -If `source` is either `all` or `input` and the variable is not defined, the user will be asked to provide a value either using a generic question or the one provided via the [`question`](../../configuration/variables/source-input.mdx#question) option. The user-provided value will be cached encrypted in `.devspace/generated.yaml` and the user will only be asked again after the cache has been cleared first using: -```bash -devspace reset vars -``` -::: - -To disable this functionality set the field `noCache` to `true`. This will make devspace prompt for the variable on every run. - -## Predefined Variables -DevSpace provides some variables that are filled automatically and can be used within the config. These can be helpful for image tagging and other use cases: - -- **DEVSPACE_RANDOM**: A random 6 character long string -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_GIT_BRANCH**: The current branch name of the local repo -- **DEVSPACE_NAMESPACE**: The default namespace of the current kube-context (= the namespace that you are deploying to) -- **DEVSPACE_CONTEXT**: Name of the current kube-context -- **DEVSPACE_VERSION**: The version of the devspace cli without a leading v (e.g. 5.4.3) -- **DEVSPACE_PROFILE**: The main profile used for DevSpace (value of the --profile flag) -- **DEVSPACE_USER_HOME**: The absolute path to the user's home directory - -#### Example: Using `${DEVSPACE_GIT_COMMIT}` -```yaml -images: - default: - image: myrepo/devspace - tag: ${DEVSPACE_GIT_COMMIT}-${DEVSPACE_TIMESTAMP} -``` -**Explanation:** -This config will tag the image in the form of `myrepo/devspace:d9b4bcd-1559766514`. Many other combinations are possible with this method. - - - -## Useful Commands - -### `devspace list vars` -To get a list of all variables defined in the `devspace.yaml`, you can run this command: -```bash -devspace list vars -``` - -### `devspace reset vars` -Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run: -```bash -devspace reset vars -``` - -DevSpace will fill the variables cache again, once you run the next build or deployment command. - -### `devspace print` -The following command prints the config after all variables have been replaced: -```bash -devspace print -``` -You can optionally add the `-p / --profiles` flag to this command. - -### `export VAR_NAME=value` -The value for a config variable can also be set by defining an environment variable named `[VAR_NAME]`. Setting the value of a config variable with name `${IMAGE_NAME}` would be possible by setting an environment value `IMAGE_NAME`. - - - - - -```powershell -$env:IMAGE_NAME = "some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - diff --git a/docs/versioned_docs/version-5.15/configuration/variables/source-command.mdx b/docs/versioned_docs/version-5.15/configuration/variables/source-command.mdx deleted file mode 100644 index cc991a30f8..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/variables/source-command.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Variables From Commands -sidebar_label: "source: command" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `command`, DevSpace will **not** ask the user a question and instead execute a command to determine the value of the variable. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - # Will execute the command in a Golang Shell (cross plattform compatible) - command: "echo 5.5" -``` - -If you need different commands depending on the operating system you can use `commands`: -```yaml {3,7-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - commands: - - command: bash - args: ["-c", "echo '5.5'"] - os: linux,darwin - command: echo - args: ["5.5"] -``` - -:::info -If not command for the current operating system can be found under `commands`, the `command` and `args` will be used as fallback. -::: - - - -## Configuration - -### `name` - - - - -### `command` & `args` - -The command and arguments to execute to retrieve the value of the variable. The captured stdout of the command will be used as variable value. Whitespaces and newlines will be trimmed from the command output. - -:::tip -You can use other variables in the command or args definition as long as they are either a predefined variable or defined before the variable in the `vars` array. For example: -```yaml -vars: -- name: SECRET_NAME - source: env -- name: SECRET_VALUE - command: ./retrieve-secret-value.sh - args: ["--secret-name=${SECRET_NAME}", "--namespace=${DEVSPACE_NAMESPACE}"] -``` -::: - -### `commands` - -Commands expects an array of objects that define commands for specific operating systems. If no command can be found for the current operating system in `commands`, then `command` will be used as fallback. - -```yaml -vars: -- name: MYSQL_VERSION - source: command - commands: - # Use command on linux - - command: bash - args: ["-c", "echo '5.5'"] - os: linux - # Use command on mac - - command: bash - args: ["-c", "echo '5.6'"] - os: darwin - # Use on all other operating systems - command: echo - args: ["5.5"] -``` - -### `default` - -If the command returns nothing, this is the value that will be used for this variable. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.15/configuration/variables/source-env.mdx b/docs/versioned_docs/version-5.15/configuration/variables/source-env.mdx deleted file mode 100644 index a073063561..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/variables/source-env.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Environment Variables -sidebar_label: "source: env" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `env`, DevSpace will **not** ask the user a question and instead use environment variables to determine the value of the variable. -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - -:::info -If `source` is `env` and the environment variable is **not** defined, DevSpace will use the [`default` value](#default) or terminate with a fatal error, if there is **no** [`default` value](#default) configured. -::: - - - -## Configuration - -### `name` - - - - -### `default` - - diff --git a/docs/versioned_docs/version-5.15/configuration/variables/source-input.mdx b/docs/versioned_docs/version-5.15/configuration/variables/source-input.mdx deleted file mode 100644 index 0cd204053c..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/variables/source-input.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Input-based Variables -sidebar_label: "source: all | input" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If `source: all (default) | input`, DevSpace may ask the user a question to determine the value of a config variable. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -:::tip Ignore Env Variables -If you want DevSpace to ignore environment variables, you can explicitly define `source: input` to make sure only explict user input will be used to set the value of the variable. -::: - - - - -## Configuration - -### `name` - - - - -### `default` - - - - -### `question` -The `question` option expects a string with a question that will be asked when the variable is not defined. DevSpace tries to resolve the variable according to the `source` of the variable and if it is not set via any of the accepted sources, DevSpace will prompt the user to define the value by entering a string. - -:::note Question -- Defining the `question` is optional but often helpful to provide a better usability for other users. -- If [valid `options` for the variable value](#options) are configured, DevSpace will show a picker/selector instead of a regular input field/prompt. -- If a [`default` value](#default) is configured for the variable, DevSpace will use this [`default` value](#default) as default answer for the question that can be easily selected by pressing enter. -::: - -#### Default Value For `question` -```yaml -question: Please enter a value for [VAR_NAME] # using the variable name -``` - - -### `options` -The `options` option expects an array of strings with each string stating a allowed value for the variable. - -#### Example: Define Variable Options -```yaml -vars: -- name: REGISTRY - question: Which registry do you want to push to? - source: input - options: - - hub.docker.com - - my.private-registry.tld - - gcr.io - default: my.private-registry.tld -``` -**Explanation:** -If the variable `REGISTRY` is used for the first time during `devspace deploy`, DevSpace will ask the user to select which value to use by showing this question: -```bash -Which registry do you want to push to? (Default: my.private-registry.tld) -Use the arrows UP/DOWN to select an option and ENTER to choose the selected option. - hub.docker.com -> my.private-registry.tld - gcr.io -``` - -### `noCache` -The `noCache` option expects a boolean that disables the caching behavior for variables. When set to `true`, this will prompt the user on every run and will not save the value. - -#### Default Value For `noCache` -```yaml -noCache: false -``` - -### `password` -The `password` option expects a boolean that defines if DevSpace should hide the user input when the user provides the value for this variable by entering a response to the question asked in the command line. - -#### Default Value For `password` -```yaml -password: false -``` - -#### Example: Hide User Response -```yaml -vars: -- name: REGISTRY_TOKEN - question: "Please enter your registry token:" - source: input - password: true -``` -**Explanation:** -If the variable `REGISTRY_TOKEN` is used for the first time during `devspace deploy`, DevSpace will ask the user to provide a value by showing this question: -```bash -? Please enter your registry token: ******* -``` -The response the user enters will be hidden as `*******` to protect others from seeing the input while the user is typing. - - -### `validationPattern` -The `validationPattern` option expects a string stating a regular expression that validates if the value entered by the user is allowed as a value for this variable. - -:::info -If the provided value does **not** match the regex in `validationPattern`, DevSpace will either show a generic error message or the message provided in [`validationMessage`](#validationmessage). -::: - -### `validationMessage` -The `validationMessage` option expects a string stating an error message that is shown to the user when providing a value for the variable that does not match the regex provided in [`validationPattern`](#validationpattern). diff --git a/docs/versioned_docs/version-5.15/configuration/variables/source-none.mdx b/docs/versioned_docs/version-5.15/configuration/variables/source-none.mdx deleted file mode 100644 index f14ae1345b..0000000000 --- a/docs/versioned_docs/version-5.15/configuration/variables/source-none.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Fixed Variables -sidebar_label: "value" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; - -You can specify fixed variables with the `value` field. This cannot be used together with `default` in a single variable definition. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - value: "5.5" -- name: NAMESPACE - value: ${DEVSPACE_NAMESPACE}-suffix -# If you set 'default: my-value' and 'source: none' will be -# internally converted to 'value: my-value'. -# Both variable definitions below are handled exactly the same -- name: SOURCE_NONE - default: my-value - source: none -- name: SOURCE_NONE - value: my-value -``` - -:::note OVERWRITING -If you want to overwrite a fixed variable, you can use the `--var FIXED=new-value` flag -::: - -## Configuration - -### `name` - - - -### `value` - -The `value` option expects a string, integer or boolean defining the value for the variable. You can also use other variables in a value, with one of the following conditions being true: - -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable diff --git a/docs/versioned_docs/version-5.15/fragments/config-commands.mdx b/docs/versioned_docs/version-5.15/fragments/config-commands.mdx deleted file mode 100644 index acfb938fe8..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-commands.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -commands: # struct[] | Array of custom commands -- name: "debug-backend" # string | Name of the command to run via `devspace run debug-backend` - command: "devspace dev -i backend" # string | Command to be executed when running `devspace run [name]` - appendArgs: true # bool | If true or left out, DevSpace will append all arguments to the command - args: ... # string[] | Args for the command to be executed -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-dependencies.mdx b/docs/versioned_docs/version-5.15/fragments/config-dependencies.mdx deleted file mode 100644 index 67031ce3e7..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-dependencies.mdx +++ /dev/null @@ -1,24 +0,0 @@ -```yaml -dependencies: # struct[] | Array of dependencies (other projects containing a devspace.yaml or devspace-configs.yaml) that need to be deployed before this project -- source: # struct | Defines where to find the dependency (exactly one source is allowed) - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository (recommended method for referencing dependencies, must have the format of the git remote repo as usually checked out via git clone) - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer (not recommended, instead of using git-related options) - profiles: [] # string[] | Profiles used to deploy this dependency (when multiple profiles are defined in the devspace.yaml of the dependency) - skipBuild: false # bool | Do not build images of this dependency (= only start deployments) - ignoreDependencies: false # bool | Do not build and deploy dependencies of this dependency - namespace: "" # string | Kubernetes namespace to deploy dependency to (Default: default namespace of current kube-context) - dev: # struct | Define which dev config should be reused from a dependency - ports: false # bool | Reuse dev.ports config from the dependency - sync: false # bool | Reuse dev.sync config from the dependency - overwriteVars: true # bool | If not defined or true, will overwrite values of variables with the same name in the dependency - vars: # struct[] | Variables in the dependency config that should be overriden with the specified values - - name: NAME - value: value - disableProfileActivation: true # bool | If true will ignore profile activations for this dependency -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-deployments.mdx b/docs/versioned_docs/version-5.15/fragments/config-deployments.mdx deleted file mode 100644 index 9e8c34ce4e..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-deployments.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -deployments: # struct[] | Array of deployments -- name: my-deployment # string | Name of the deployment - namespace: "" # string | Namespace to deploy to (Default: "" = namespace of the active namespace/Space) - helm: ... # struct | Use Helm as deployment tool and set options for Helm - kubectl: ... # struct | Use "kubectl apply" as deployment tool and set options for kubectl -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-hooks.mdx b/docs/versioned_docs/version-5.15/fragments/config-hooks.mdx deleted file mode 100644 index 46ed4a80d9..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-hooks.mdx +++ /dev/null @@ -1,52 +0,0 @@ -```yaml -hooks: # struct[] | Array of hooks to be executed. A hook can only have either one of the following fields defined: - # | - hooks[*].command which will either execute a command locally or remotely in a container - # | - hooks[*].upload which will upload files or folders into a container - # | - hooks[*].download which will download files or folder from a container - # | - hooks[*].wait which will wait for a container to become running or terminate - # | - hooks[*].logs which will print the logs for a certain container -- command: "./scripts/my-hook" # string | Command to be executed when this hook is triggered (if no args a specified, will be executed in a golang shell) - args: [] # string[] | (Optional) Array of arguments for the command of this hook - upload: # struct | If defined will upload files or folders into the container. - localPath: ./test # string | The local path of the file or folder - containerPath: /app # string | The remote path where to upload the file or folder into - download: # struct | If defined will download files or folders from the container. - containerPath: /app # string | The remote path where to download the file or folder from - localPath: ./test # string | The local path where to download the file or folder - logs: # struct | If logs is defined will print the logs of the target container. This is useful for containers - # | that should finish like init containers or job pods. Otherwise this hook will never terminate. - tailLines: /app # int | If set, the number of lines from the end of the logs to show - wait: # struct | If wait is defined the hook will wait until the matched pod or container is running or is terminated - # | with a certain exit code. - running: true # bool | If running is true, will wait until the matched containers are running. Can be used together with terminatedWithCode. - terminatedWithCode: 0 # int | If terminatedWithCode is not nil, will wait until the matched containers are terminated with the given exit code. - # | If the container has exited with a different exit code, the hook will fail. Can be used together with running. - timeout: 150 # int | Timeout of seconds to wait for matched containers to reach the given state until the hook will fail. - os: darwin # string | If specified then this hook is only executed on the given operating system - background: false # bool | If true DevSpace will not wait for the command to finish and directly move on - silent: false # bool | If true DevSpace will not print any command output to the console - where: - container: # struct | If specified, DevSpace will run the command in the container instead of locally - imageName: my-image # string | Name of an image defined in `images` to select pods with - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - when: # struct | Trigger for executing this hook - before: # struct | Run hook before a certain execution step - pullSecrets: "all" # string | "all" for running hook before creating image pull secrets - dependencies: "all" # string | "all" for running hook before deploying dependencies - images: "all" # string | "all" for running hook before building the first image - deployments: "all" # string | Name of the deployment you want to run this hook before deploying OR "all" for running hook before deploying the first deployment - initialSync: "sync-config" # string | Name of the sync configuration you want to execute this hook before merging remote and local file state - after: # struct | Run hook after a certain execution step - pullSecrets: "all" # string | "all" for running hook after creating image pull secrets - dependencies: "all" # string | "all" for running hook after deploying dependencies - images: "all" # string | "all" for running hook after building the last image - deployments: "all" # string | Name of the deployment you want to run this hook after deploying OR "all" for running hook after deploying the last deployment - initialSync: "sync-config" # string | Name of the sync configuration you want to execute this hook after merging remote and local file state - onError: - pullSecrets: "all" # string | "all" for running hook if an error occurs during creating image pull secrets - dependencies: "all" # string | "all" for running hook if an error occurs during deploying dependencies - images: "all" # string | all" for running hook if an error occurs during building images - deployments: "all" # string | Name of the deployment you want to run this hook if an error occurs during deploying OR "all" for running hook if an error occurs during deploying any deployment -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-images.mdx b/docs/versioned_docs/version-5.15/fragments/config-images.mdx deleted file mode 100644 index bbe9866f5a..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-images.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - random-#### # | Each hashtag is replaced with a random character during building - dockerfile: ./Dockerfile # string | Relative path to the Dockerfile used for building (Default: ./Dockerfile) - context: ./ # string | Relative path to the context used for building (Default: ./) - entrypoint: [] # string[] | Override ENTRYPOINT defined in Dockerfile - cmd: [] # string[] | Override CMD defined in Dockerfile - createPullSecret: true # bool | Create a pull secret containing your Docker credentials (Default: false) - rebuildStrategy: '' # string | One of [always, ignoreContextChanges] which determines when DevSpace rebuilds the image - injectRestartHelper: true # bool | If true will inject the restart helper into the container to restart the container automatically - restartHelperPath: ./script.sh # string | If configured devspace will inject this script into the container and wrap the ENTRYPOINT around this - appendDockerfileInstructions: # string[] | Dockerfile instructions that should be appended for the current build - - USER root - build: ... # struct | Build options for this image - image2: ... -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-profiles.mdx b/docs/versioned_docs/version-5.15/fragments/config-profiles.mdx deleted file mode 100644 index ead0965891..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-profiles.mdx +++ /dev/null @@ -1,28 +0,0 @@ -```yaml -profiles: # struct[] | Array of config profiles -- name: profile-name # string | Name of the profile - parents: - - profile: parent-profile # string | Name of the parent of this profile (profile inheritance) - source: # | Optional source where to find the profile - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository to retrieve the profile from - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer or an URL to a devspace.yaml - merge: {} # struct | Merge the provided object into the config - strategicMerge: {} # struct | Strategic Merge the provided object into the config - patches: # struct[] | Array of config patches - - op: "replace" # enum | Patch operation (replace, add, remove) - path: "images.backend.cmd" # string | Jsonpath or xpath to config option that should be patched - value: "" # arbitrary | Value to use for patch operation - from: "" # string | Jsonpath or xpath to config option which should be used as value for operation - replace: # struct | Array of replacements for entire config sections - images: {} # struct | Replacement for entire `images` section - deployments: {} # struct | Replacement for entire `deployments` section - dev: {} # struct | Replacement for entire `dev` section - dependencies: {} # struct | Replacement for entire `dependencies` section - hooks: {} # struct | Replacement for entire `hooks` section -``` diff --git a/docs/versioned_docs/version-5.15/fragments/config-vars.mdx b/docs/versioned_docs/version-5.15/fragments/config-vars.mdx deleted file mode 100644 index 4de01ec20c..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/config-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -```yaml -vars: # struct[] | Array of config variables -- name: CONFIG_VAR # string | Name of the config variable - value: my-value # any | The fixed value of the config variable - question: "What is CONFIG_VAR?" # string | Question to ask the user if no value is found for variable - options: [] # string[] | Options for picker (selector) to show to user (to choose a value for variable) - noCache: false # bool | Disable caching and prompt for value on every run. - password: false # bool | Hide user input when providing value via command-line, i.e. replaces input with `*****` (Default: false) - validationPattern: "" # string | Regexp to validate user input - validationMessage: "" # string | Message to show to user for input validation - default: "" # any | Default value for variable - source: "all" # enum | Source for variable (all = default, env, input, command) - command: "" # string | If specified will retrieve the variable from the command - args: [] # string[] | The arguments for the command to retrieve the variable from - commands: - - command: "" # string | Os specified command to retrieve the variable from - args: [] # string[] | The arguments for the os specific command - os: darwin # string | The os to execute this command on -``` diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-dev.mdx b/docs/versioned_docs/version-5.15/fragments/dependency-dev.mdx deleted file mode 100644 index 18c24044ac..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/dependency-dev.mdx +++ /dev/null @@ -1,24 +0,0 @@ -The `dev` option allows you to reuse certain parts of a dependencies `dev` configuration. - -:::note -If `dev` configuration is reused this will be merged into the top-level `devspace.yaml` and executed after image building and deployment -::: - -#### Example: Override Config Vars for Dependency -```yaml -# This will use the dev.ports configuration of the dependency -# component-1 -dependencies: -- source: - path: component-1 - dev: - ports: true -``` - -### `dev.ports` - -If enabled will reuse the dependency's `dev.ports` configuration. - -### `dev.sync` - -If enabled will reuse the dependency's `dev.sync` configuration. **The base path of the sync configurations reused from a dependency is the folder where the dependency is saved in and not the current working directory.** diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-overwrite-vars.mdx b/docs/versioned_docs/version-5.15/fragments/dependency-overwrite-vars.mdx deleted file mode 100644 index c35ea49649..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/dependency-overwrite-vars.mdx +++ /dev/null @@ -1,53 +0,0 @@ -The `overwriteVars` option is optional and expects a boolean. By default, this option is enabled and overwrites all defined variables within the dependency config with the values of the variables defined in the base config. Variables that are not used or not defined within the base config aren't overwritten in the dependency config. - -For example: -```yaml -# devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-base-value -- name: DEFINED_AND_NOT_USED - value: my-other-base-value -dependencies: -- name: dep1 - source: - path: dep1 - # If overwriteVars is not defined or true, all variables that are used within this - # config are passed to the dependency and will overwrite the values of variables with - # the same name there. In this case only the variable DEFINED_AND_USED - # will be passed to the dependency, as DEFINED_AND_NOT_USED is not used within the config. - # overwriteVars: true - # - # If you want to pass the variable DEFINED_AND_NOT_USED to the dependency as well, - # you can either use it somewhere within the config or explicitly pass it to the dependency with vars. - # vars: - # - name: DEFINED_AND_NOT_USED - # value: ${DEFINED_AND_NOT_USED} -deployments: -- name: deployment - helm: - componentChart: true - values: - containers: - - image: ${DEFINED_AND_USED} -``` - -and - -```yaml -# dep1/devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-dep-value -- name: DEFINED_AND_NOT_USED - value: my-other-dep-value -deployments: - # This will be my-other-dep-value -- name: ${DEFINED_AND_NOT_USED} - helm: - componentChart: true - values: - containers: - # This will be my-base-value - - image: ${DEFINED_AND_USED} -``` diff --git a/docs/versioned_docs/version-5.15/fragments/info-component-chart.mdx b/docs/versioned_docs/version-5.15/fragments/info-component-chart.mdx deleted file mode 100644 index 298ca4cdf0..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/info-component-chart.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::info Component Chart Docs -The component chart is a flexible Helm chart for deploying custom applications in a standardized manner. Learn more in the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. -::: diff --git a/docs/versioned_docs/version-5.15/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-5.15/fragments/kubectl-kustomize.mdx deleted file mode 100644 index a70dde2e5e..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/kubectl-kustomize.mdx +++ /dev/null @@ -1,21 +0,0 @@ -The `kustomize` option expects a boolean stating if DevSpace should deploy using `kustomize` (or alternatively: `kubectl apply -k`). - -:::warning -If you set `kustomize = true`, all of your `manifests` must be paths to Kustomizations. If you want to deploy some plain manifests and some Kustomizations, create multiple deployments for each of them. -::: - -#### Default Value for `kustomize` -```yaml -kustomize: false -``` - -#### Example: Kustomize -```yaml {4} -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - kustomization1/ - - glob/path/to/more/kustomizations/ -``` diff --git a/docs/versioned_docs/version-5.15/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-5.15/fragments/kubectl-options-applyArgs.mdx deleted file mode 100644 index b1ba2ed738..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/kubectl-options-applyArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `applyArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl apply`. - -:::info Apply for Kustomize Deployments -Even if you set `kustomize: true`, DevSpace only renders the manifest templates using kustomize but the actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `applyArgs` -```yaml -applyArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - applyArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl apply --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.15/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-5.15/fragments/kubectl-options-cmdPath.mdx deleted file mode 100644 index 337bdb4e2a..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/kubectl-options-cmdPath.mdx +++ /dev/null @@ -1,20 +0,0 @@ -The `cmdPath` option expects an array of strings stating additional flags and flag values that should be used when calling `kubectl apply`. - -:::warning -Setting `cmdPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kubectl` to your `$PATH` environment variable instead. -::: - -#### Example: Setting Path To Kubectl Binary -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - cmdPath: /path/to/kubectl -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -/path/to/kubectl apply -f backend/ -``` diff --git a/docs/versioned_docs/version-5.15/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-5.15/fragments/kubectl-options-deleteArgs.mdx deleted file mode 100644 index 70a473533c..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/kubectl-options-deleteArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `deleteArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl delete`. - -:::info Purging Deployments -For plain manifests or Kustomizations, DevSpace uses `kubectl delete` to remote deployments when you run the command `devspace purge`. -::: - -#### Default Value for `deleteArgs` -```yaml -deleteArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - deleteArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl delete --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.15/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-5.15/fragments/kubectl-replaceImageTags.mdx deleted file mode 100644 index aae897a71a..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/kubectl-replaceImageTags.mdx +++ /dev/null @@ -1,22 +0,0 @@ -The `replaceImageTags` option expects a boolean stating if DevSpace should replace/update all image tags before deploying the project. - -By default, DevSpace searches all your manifests for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml {4} -deployments: -- name: backend - kubectl: - replaceImageTags: false - manifests: - - backend/ -``` diff --git a/docs/versioned_docs/version-5.15/fragments/selector-image-name.mdx b/docs/versioned_docs/version-5.15/fragments/selector-image-name.mdx deleted file mode 100644 index 0777aeef90..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/selector-image-name.mdx +++ /dev/null @@ -1,13 +0,0 @@ -The `imageName` option expects a string with the name of an image from the `images` section of the `devspace.yaml`. Using `imageName` tells DevSpace to select the container based on the referenced image that was last built using DevSpace. - -:::info -You can convert a value in `imageName` to `imageSelector` by converting the value of `imageName` to `image(my-image):tag(my-image)`. For example, the image name `imageName: my-image` would be equal to the image selector: `imageSelector: image(my-image):tag(my-image)`. We encourage people to prefer `imageSelector` instead of `imageName`, because `imageSelector` is a lot more flexible and you can also select images that are not defined in `images`. -::: - -:::note -When you want to select a container with an image that is not defined in your `devspace.yaml`, you generally want to select the right pod using the [`imageSelector`](#imageselector) or [`labelSelector`](#labelselector). -::: - -:::note -You can also select an image from a dependency with `dependency1.image1` -::: \ No newline at end of file diff --git a/docs/versioned_docs/version-5.15/fragments/selector-image-selector.mdx b/docs/versioned_docs/version-5.15/fragments/selector-image-selector.mdx deleted file mode 100644 index 1241bb350c..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/selector-image-selector.mdx +++ /dev/null @@ -1,35 +0,0 @@ -The `imageSelector` option expects a string that specifies an image (e.g. `my-registry.com/lib/my-image:tag`) to select a target pod and container with. The newest running pod that has a container which matches this image will be selected by DevSpace. - -In addition, you can also reference images from the `images` section in the `imageSelector` with: -- If the image in `imageSelector` matches a `images.*.image`, DevSpace will automatically append the latest built tag during runtime to the `imageSelector`. -- You can also let DevSpace resolve the target image and tag by using the helpers `image()` or `tag()` - -For example: -```yaml -images: - app: - image: my-registry.com/lib/my-image -dev: - ... - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/other-image:latest - - imageSelector: my-registry.com/lib/other-image:latest - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: my-registry.com/lib/my-image - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(my-registry.com/lib/my-image):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(app):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: image(app):tag(app) - # DevSpace will search for the newest pod with a container that - # uses the image of app of dependency dep1 with the latest built tag by DevSpace - - imageSelector: image(dep1.app):tag(dep1.app) -``` - - - diff --git a/docs/versioned_docs/version-5.15/fragments/start-app.mdx b/docs/versioned_docs/version-5.15/fragments/start-app.mdx deleted file mode 100644 index 0e557ffb5e..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/start-app.mdx +++ /dev/null @@ -1,85 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - - -```bash -npm start -# or: npm run dev -# or: yarn start -``` - - - - -```bash -python main.py -``` - - - - -```bash -bundle exec rails server -p 3000 -b 0.0.0.0 -``` - - - - -```bash -go run main.go -``` - - - - -```bash -mvn package -T 1C -U -Dmaven.test.skip=true # or: gradle build - -java -jar target/quickstart-1.0.jar -``` - - - - -```bash -# Your application may already be running -# Try to open the browser on localhost to access it - -# You can also run other commands now: -php ... -composer ... -ps aux -``` - - - - -```bash -dotnet run -``` - - - - -```bash -# Whatever command is needed to start your application -``` - - - diff --git a/docs/versioned_docs/version-5.15/fragments/vars-default.mdx b/docs/versioned_docs/version-5.15/fragments/vars-default.mdx deleted file mode 100644 index ccff61b813..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/vars-default.mdx +++ /dev/null @@ -1,27 +0,0 @@ -The `default` option expects a string, integer or boolean defining the default value for the variable. You can also use other variables in a default value, with one of the following conditions being true: -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable - -:::note Type Casting -If a default value is specified, DevSpace will assume the type of the default value as the type for the variable, i.e. when `default: "123"` is defined and a value of `123` (int) is provided it would be casted to `"123"` (string). To explicitly use the value of a variable as a string within `devspace.yaml`, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: - -Example: -```yaml -images: - default: - image: ${IMAGE} -vars: - - name: IMAGE_REPOSITORY - default: myrepository - source: none - - name: IMAGE_NAME - default: devspace - source: none - - name: IMAGE - default: ${IMAGE_REPOSITORY}/${IMAGE_NAME} - source: none - - name: NAMESPACE - default: ${DEVSPACE_NAMESPACE} - source: none -``` diff --git a/docs/versioned_docs/version-5.15/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-5.15/fragments/warning-multiple-dev.mdx deleted file mode 100644 index 652cdbedd9..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/warning-multiple-dev.mdx +++ /dev/null @@ -1,8 +0,0 @@ -:::warning -It is highly discouraged to run `devspace dev` multiple times in parallel because multiple instances of port forwarding and file synchronization will disturb each other. Instead: - -- Run `devspace enter` to open additional terminal sessions without port forwarding and file sync -- Run `devspace logs` to start log streaming without port forwarding and file sync -- Run `devspace sync` to sync files on-demand without starting port forwarding etc. -- Run `devspace ui` to open the localhost development UI in the browser -::: diff --git a/docs/versioned_docs/version-5.15/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-5.15/fragments/workflow-open-links.mdx deleted file mode 100644 index cb54a95ec2..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/workflow-open-links.mdx +++ /dev/null @@ -1,4 +0,0 @@ - -1. DevSpace starts to periodically send `HTTP GET` requests to the URLs provideded via `dev.open[*].url`. -2. As soon as the first HTTP response has a status code which is neither 502 (Bad Gateway) nor 503 (Service Unavailable), DevSpace assumes that the application is now started, stops sending any further requests and opens the provided URL in the browser. -3. If the URL is still returning status code 502 or 503 after 4min, DevSpace will stop trying to open it. To not disturb the log streaming or the interactive terminal session, DevSpace will not show an error when hitting the 4min timeout. diff --git a/docs/versioned_docs/version-5.15/fragments/workflow-replace-tags.mdx b/docs/versioned_docs/version-5.15/fragments/workflow-replace-tags.mdx deleted file mode 100644 index 7c5a7300d2..0000000000 --- a/docs/versioned_docs/version-5.15/fragments/workflow-replace-tags.mdx +++ /dev/null @@ -1,13 +0,0 @@ -After finishing the image building process, DevSpace searches your deployments for references to the images that are specified in the `images` section of the `devspace.yaml`. If DevSpace finds that an image is used by one of your deployments and the deployment does not explicitly define a tag for the image, DevSpace will append the tag that has been auto-generated as part of the automated image tagging during the image building process. - -:::warning Prevent Hard-Coded Tags -To use automated tag replacement, make sure you do **not** specify image tags in the deployment configuration. -::: - -Replacing or appending tags to images that are used in your deployments makes sure that your deployments are always started using the most recently pushed image tag. This automated process saves a lot of time compared to manually replacing image tags each time before you deploy something. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - diff --git a/docs/versioned_docs/version-5.15/getting-started/deployment.mdx b/docs/versioned_docs/version-5.15/getting-started/deployment.mdx deleted file mode 100644 index 4995196d3c..0000000000 --- a/docs/versioned_docs/version-5.15/getting-started/deployment.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Deployment ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; - - -Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. - -
- -
DevSpace CLI - Deployment
-
- - -## Kube-Context & Namespace -For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. - - - - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -p production -``` - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -Running `devspace deploy -p production` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Understand Profiles -As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. - -Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). - -By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: -```yaml -profiles: -- name: production - patches: - - op: remove - path: images.app.build.disabled -``` - -You can print the config after a profile has been applied to see what the profile actually changes: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: -```bash -devspace dev -p start-debugger -``` diff --git a/docs/versioned_docs/version-5.15/getting-started/development.mdx b/docs/versioned_docs/version-5.15/getting-started/development.mdx deleted file mode 100644 index a44cbdc581..0000000000 --- a/docs/versioned_docs/version-5.15/getting-started/development.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Development with DevSpace -sidebar_label: 3. Development ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; -import StartAppFragment from '../fragments/start-app.mdx'; -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; - -DevSpace allows you to develop applications directly inside a Kubernetes cluster. - -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. - -
- -
DevSpace - Development Mode
-
- - -## Kube-Context & Namespace -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. - - - - -## Start Development Mode -Run the following command to start the development mode: -```bash -devspace dev -``` - - -Running `devspace dev` will do the following: - -1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) -2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) -3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) -4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) -5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container - -Once the terminal session starts, run the command to start your application: - - - - - -
- -## Workflows - -### 1. File Sync -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. - -**Try it and just edit a file!** - - -### 2. DevSpace UI -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) - -
- -
DevSpace - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: - - -## Notes - - diff --git a/docs/versioned_docs/version-5.15/guides/basics.mdx b/docs/versioned_docs/version-5.15/guides/basics.mdx deleted file mode 100644 index 49055f2690..0000000000 --- a/docs/versioned_docs/version-5.15/guides/basics.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Onboarding Guide -sidebar_label: Onboarding ---- - -## View Help & Flags -To see help information and a list of all flags for any command, simply use the `-h` flag: -```bash -devspace -h # Shows all major commands and flags -devspace dev -h # Shows sub-commands and specific flags for this command -``` - -
- ---- - - -## Project-Specific Commands - -:::note devspace.yaml required -The project-specific commands require that your project is already [initialized](../getting-started/initialize-project.mdx), i.e. there is a `devspace.yaml` config file. -::: - - -### Start Development -This command deploys the project and then starts the development mode: -```bash -devspace dev -``` - - -### Deploy Project -This command deploys the project to Kubernetes: -```bash -devspace deploy # -p / --profile production => see: devspace list profiles -``` - -Run this command to just build, tag and push all images to a registry without deploying the project: -```bash -devspace build -``` - - -### Port Forwarding -To get a list of all ports that are being forwarded as defined in `devspace.yaml`, run: -```bash -devspace list ports -``` - - -### Commands -This command lists all available command: -```bash -devspace list commands -``` - -Use this command to run one of the custom commands: -```bash -devspace run command [command-name] -- --some-flag --another-flag=value -``` - - -### Profiles -This command lists all available profiles: -```bash -devspace list profiles -``` - -Use this command to switch to a different profile: -```bash -devspace use profile [optional:profile-name] -``` - -Use the `-p` flag to just run a single command with a different profile without switching it permanently: -```bash -devspace deploy -p [profile-name] -``` - -Use this command to print the config after a profile has been applied: -```bash -devspace print -p [profile-name] -``` - - -### Variables -This command lists all variables as well as their values: -```bash -devspace list vars -``` - -To change the value of a variable, run: -```bash -devspace set var VAR_NAME=value # VAR_NAME_2=value2 VAR_NAME_3=value3 -``` - -Use this command to reset all variables, i.e. delete variable values from the variable cache: -```bash -devspace reset vars -``` - -Use this command to print the config after all variables have been replaced: -```bash -devspace print -``` - - -### Dependencies -Use this command to update git-based dependencies: -```bash -devspace update dependencies -``` -This command performs a `git fetch && git pull` for all git-based dependencies. - -Use this command to clear the dependencies cache: -```bash -devspace reset dependencies -``` - - -### Open Project -This command opens the current project in the browser: -```bash -devspace open -``` - -:::note Must be deployed -This command requires that the project has already been deployed. -::: - -
- ---- - -## General Purpose Commands - -### Open UI -This command opens the localhost development UI: -```bash -devspace ui -``` -:::note Development Mode -The localhost development UI starts automatically in the background when running: `devspace dev` -::: - - -### Stream Logs -This command streams logs of a container: -```bash -devspace logs -``` - - -### Terminal & Commands -This command opens an interactive terminal session for a container: -```bash -devspace enter -``` - -To run just a single command inside a container, use: -```bash -devspace enter -- my-command --my-flag=my-value ... -``` - - -### File Sync -This command starts an on-demand file synchronization between localhost and a container: -```bash -devspace sync -``` - -:::note Development Mode -If file sync is configured in your project, it automatically starts when running: `devspace dev` -::: - - - -
- ---- - - -## Clusters & Namespaces -This command sets a different namespace as default namespace for the current kube-context/cluster: -```bash -devspace use namespace [optional:namespace] -``` - -:::info Not for Spaces -The command `devspace use namespace` does **not** work for Loft spaces. Use `devspace use space` instead. -::: - -This command creates a new space using Loft: -```bash -devspace create space [space-name] -``` - -This command switches to a different spaces: -```bash -devspace use space [optional:space-name] -``` - -This command switches to a different kube-context/cluster: -```bash -devspace use context [optional:context-name] -``` - - - -
- -## Advanced - -### Clean up Images -When using Docker for image building, disk space on your local computer can get sparse after a lot of Docker builds. DevSpace provides a convenient command to clean up all images that were built with your local Docker daemon using DevSpace. This command does not remove any pushed images remotely and just clears local images and space. - -In order to clean up all created images locally, simply run the following command in your project folder: -```bash -devspace cleanup images -``` - -### Clean up Docker -In addition, it also makes sense to prune your Docker environment to free additional space with the following command: - -```bash -docker system prune -``` - -This command will remove: -- all stopped containers -- all networks not used by at least one container -- all dangling images -- all build cache - -These commands should free up a lot of space for new image builds to come. diff --git a/docs/versioned_docs/version-5.15/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-5.15/guides/ci-cd-integration.mdx deleted file mode 100644 index 099c3b5799..0000000000 --- a/docs/versioned_docs/version-5.15/guides/ci-cd-integration.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: CI/CD Integration -sidebar_label: CI/CD Integration ---- - -DevSpace is designed to work in non-interactive environments the same way it does in interactive environments. To use DevSpace inside a CI/CD pipeline, simply install it as part of your pipeline or start the pipeline with a VM or container image that already contains DevSpace and run any of the DevSpace commands. - -## Docker Image -DevSpace provides an official Docker image that [can be found on Docker Hub](https://hub.docker.com/r/devspacesh/devspace). The Dockerfile for this image is [available on GitHub](https://github.com/loft-sh/devspace/blob/master/Dockerfile). - -Use this image as shown here: -```bash -docker run devspacesh/devspace devspace [command] [args] -``` - -#### Example: Get Version -```bash -docker run devspacesh/devspace devspace --version -``` - -#### Example: Deployment -```bash -docker run -v ${PWD}:/project -w /project devspacesh/devspace devspace deploy -``` -1. Mounts current working directory into `/project` within the container -2. Sets `/project` as working dir -3. Runs `devspace deploy` inside working dir - -#### Example: Start Interactive Terminal Session -```bash -docker run -it -v ${PWD}:/project -w /project devspacesh/devspace -``` - -
- - -## Deployment Tips - -### Avoid Pickers -If you want to run commands such as `devspace enter`, make sure you specify a label selector using `-l`, a container using `-c` etc. to make sure DevSpace can find the right pod/container without having to ask you to select one (which would lead to your pipeline getting stuck). - -### `--wait` Flag -DevSpace is configured to deploy and terminate when you run `devspace deploy`. In CI/CD pipelines, it is common to wait until the deployment is actually up and running before continuing the pipeline. You can achieve this by using `--wait`: -```bash -devspace deploy --wait --timeout=120 -``` -The above command will wait until the desired number of pods is created for all ReplicaSets and until none of the pods are failing anymore. If this is not achieved within the number of seconds specified in `--timeout`, DevSpace will exit with a fatal error. - -### Define Profiles -It is often useful to [define profiles in `devspace.yaml`](../configuration/profiles/basics.mdx) for staging, review or production deployments using CI/CD. You can deploy a project using such a profile using the `-p / --profile` flag: -```bash -devspace deploy -p production -``` - -### Separate Build & Deploy -DevSpace allows you to split up the build and deployment process into two separate commands: -```bash -devspace build # Build, tag and push images -devspace deploy --skip-build # Deploy project without rebuilding images -``` - -### Run Tests -To run unit or integration tests in your CI/CD pipeline, you have multiple options: -- [Split up build and deployment command](#separate-build--deploy) and run tests before after or in between the commands -- [Define hooks](../configuration/hooks/basics.mdx) that execute commands before/after certain image builds or deployments - -
diff --git a/docs/versioned_docs/version-5.15/guides/community-projects.mdx b/docs/versioned_docs/version-5.15/guides/community-projects.mdx deleted file mode 100644 index 3f1d93fc49..0000000000 --- a/docs/versioned_docs/version-5.15/guides/community-projects.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Community Projects -sidebar_label: Community Projects ---- - -:::note Submit Your Project -To submit a project: - -1. Make sure the project has a `LICENSE` file containing an **MIT** or **Apache 2.0** license. -2. Make sure to add a `README.md` file to your project describing what the project does and how to use it. -3. Click on the "**Edit this page**" button or follow **[this link](https://github.com/loft-sh/devspace/edit/master/docs/pages/guides/community-projects.mdx)**. -4. Add your project to the list **in alphabetical order**. -5. **Submit a pull request** containing your changes. - -❤️ Thank you! -::: - -The following projects are contributed and maintained by community members. - -|Project|Description|Maintainer| -|-|-|-| -|[nginx-auth-jwt](https://github.com/FactFiber/devspace-nginx-auth-jwt)|Auth requests through NGINX with JWT tokens|[shaunc](https://github.com/shaunc)| -|[nginx-s3](https://github.com/FactFiber/devspace-nginx-s3)|Serves static files from private S3 bucket using NGINX|[shaunc](https://github.com/shaunc)| -|[trilium](https://github.com/Addono/trilium-devspace)|Host a [trilium](https://github.com/zadam/trilium) server|[Addono](https://github.com/Addono)| diff --git a/docs/versioned_docs/version-5.15/guides/dev-staging-production.mdx b/docs/versioned_docs/version-5.15/guides/dev-staging-production.mdx deleted file mode 100644 index 3eaeaac13f..0000000000 --- a/docs/versioned_docs/version-5.15/guides/dev-staging-production.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Dev vs Staging vs Production -sidebar_label: Dev vs Staging vs Prod ---- - -To configure the differences between development, staging and production environments, there are several techniques which may be used separately or combined in certain use cases: -- For image building: - 1. Using [different Dockerfiles](../configuration/images/dockerfile-context.mdx) for each environment - 2. Using the same Dockerfile and: - - [overriding the `ENTRYPOINT` or the `CMD` of the Dockerfile](../configuration/images/entrypoint-cmd.mdx) for each environment - - using multi-stage builds and [setting the `target`](../configuration/images/docker.mdx#target) during the build process - - using [different `buildArgs`](../configuration/images/docker.mdx#buildargs) for different environments -- For deployments: - 1. Using a different `cmd` and/or `args` for your containers depending on the environment - 2. Using a different `image` name or `image` tag for your containers depending on the environment - 3. Setting different `env` variables for your containers depending on the environment - -No matter which options are working for your use case, the following DevSpace features will allow you to set up the desired differences: -- [Config Profiles & Patches](../configuration/profiles/basics.mdx) -- [Config Variables](../configuration/variables/basics.mdx) -- [Hooks](../configuration/hooks/basics.mdx) diff --git a/docs/versioned_docs/version-5.15/guides/file-synchronization.mdx b/docs/versioned_docs/version-5.15/guides/file-synchronization.mdx deleted file mode 100644 index 959848e35f..0000000000 --- a/docs/versioned_docs/version-5.15/guides/file-synchronization.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: File Synchronization -sidebar_label: File Synchronization ---- - -There are two types of file synchronzation processes: -- on-demand file sync using `devspace sync` and -- file synchronization during development mode using `devspace dev`. - - -## Start On-Demand File Sync -To establish an on-demand file synchronization between your local computer and the containers running inside Kubernetes, use the following command: -```bash -devspace sync # common flags: --local-path=./ --container-path=/app --no-watch --config=./devspace.yaml -``` -[Learn more about the `devspace sync` command.](https://devspace.cloud/blog/2019/10/18/release-devspace-v4.1.0-kubectl-cp-file-synchronization) - - -## Configure File Sync -If you want to start file synchronization every time you run `devspace dev`, you can configure it within `devspace.yaml`. - -[Learn more about configuring file synchronization using `devspace.yaml`.](../configuration/development/file-synchronization.mdx) - -
- - -## Troubleshooting - -### Check `sync.log` -DevSpace logs all sync activity in `.devspace/logs/sync.log`. Check this file to get more detailed error information. - -### Verbose Sync -DevSpace provides the flag `--verbose-sync` to print additional information while running `devspace dev`: -```bash -devspace dev --verbose-sync -``` - -For an even cleaner output (sync-only logs, without container logs), deploy your application using `devspace dev` once, then abort the dev mode and start a standalone sync process using the `--verbose` flag: -```bash -devspace sync --config=devspace.yaml --verbose -``` - -### Ignore `.git/` -The sync can fail when files are constantly being changed while they are being synchronized. DevSpace will retry failing sync attempts but for folder such as `.git/` which contain continuously changing information and files which may be locked by the IDE, we recommmend to [ignore them via the `excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) in `devspace.yaml`. - -### File Permissions -Without file write permission, the sync will not be able to work. If you start your containers (in production) using a different user than `root` and this user does not have sufficient permissions to read and write certain files, you can: -- exclude these files using the [`excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) -- exclude these files using the [`uploadExcludePaths` option](../configuration/development/file-synchronization.mdx#uploadexcludepaths) -- run the containers using a different user during development\* - -\* You can achieve this by: -- Adding a `USER` statement in your Dockerfile: This is especially recommended when you are using multi-stage builds because you can add the `USER` statement for your development/build stage and add another `USER` statement to your production stage. Then, control the build target using the [`options.target` option](../configuration/images/docker.mdx#target) for Docker and kaniko builds and define a profile for removing the build stage for production deployments. -- Setting `runAsUser` and `runAsGroup` to `0` within the `securityContext` of your Kubernetes pods. diff --git a/docs/versioned_docs/version-5.15/guides/image-building.mdx b/docs/versioned_docs/version-5.15/guides/image-building.mdx deleted file mode 100644 index 5ebad20b8f..0000000000 --- a/docs/versioned_docs/version-5.15/guides/image-building.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Image Building -sidebar_label: Image Building ---- - -Take a look at the following best practices to speed up image building and to set up DevSpace for an ideal workflow. - -## Optimize Dockerfiles -You can drastically speed up image building by optimizing your Dockerfiles with the following tips: -- Use a small base image (e.g. alpine version) -- Use layer caching for dependencies: Add dependency file, install dependencies, then add the rest of your source code as shown in the example snippet below - -```Dockerfile -FROM 8.16.1-alpine - -# Set working dir -WORKDIR /app - -# Copy dependency file to WORKDIR -ADD package.json - -# Install dependencies -RUN npm install - -# Copy remaining source code from local WORKDIR to image WORKDIR -COPY . . -``` - -## `.dockerignore` For Better Caching -DevSpace respects the `.dockerignore` file when defined on the root level of your context directory. This file follows a similar syntax as the `.gitignore` file but instead of excluding files from git, the `.dockerignore` file defines files and folders which should not be included in the context for building an image. - -:::info Skip Image Building -Adding paths to the `.dockerignore` file makes sure that DevSpace is not forced to rebuild images when files belonging to these paths change. -::: - -It can often be useful to: -- Add `devspace.yaml` to `.dockerignore` to prevent config changes from triggering image rebuilding (`devspace init` does this by default) -- Add temporary files (e.g. `.DS_Store`) to `.dockerignore` (DevSpace ALWAYS ignores `.devspace/` temp folder even if not specified in `.dockerignore`) -- Add dependency folders to `.dockerignore`, here are a few examples of dependency folders for different languages: - -### Recommended Paths for `.dockerignore` -| Language / Dependency Tool | `.dockerignore` statements | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| All Languages | `devspace.yaml` | -| PHP / composer | `composer.phar`
`vendor/` | -| Node.js / npm | `node_modules/`
`npm-debug.log*`
`report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json`
`pids`
`*.pid*`
`*.seed*`
`*.pid.lock*` | -| Python / pip | `__pycache__/`
`wheels/`
`pip-log.txt`
`pip-wheel-metadata/` | - - -## Different Images for Development vs. Staging vs. Production -Generally, there are several options to achieve this: -- using multiple Dockerfiles (e.g. `Dockerfile`, `Dockerfile_production`) -- using one Dockerfile in combination with `BUILD_ARGS` and `ENTRYPOINT` overrides for each environment -- using one Dockerfile in combination with multi-stage builds with targets for each environment - -All options have their benefits and caveats. Which one is the best for your project depends on your use case and your priorities. diff --git a/docs/versioned_docs/version-5.15/guides/localhost-ui.mdx b/docs/versioned_docs/version-5.15/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/versioned_docs/version-5.15/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/versioned_docs/version-5.15/guides/networking-domains.mdx b/docs/versioned_docs/version-5.15/guides/networking-domains.mdx deleted file mode 100644 index c2388aa259..0000000000 --- a/docs/versioned_docs/version-5.15/guides/networking-domains.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Services, Ingresses & Domains -sidebar_label: Networking & Domains ---- - -import FragmentInfoComponentChart from '../fragments/info-component-chart.mdx'; - -The easiest way to connect a domain to your deployment is to run the following command within your project directory: -```bash -devspace open -``` -Choose **via domain** to connect a domain or choose **via localhost** to use port-forwarding. - -
- -## Component Chart -If you are looking for the documentation of the component chart values that let you configure the ingress and service for a component in `devspace.yaml`, please look into the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. - - - -
- -## Troubleshooting -Here are some steps to debug issues with your application when your domain is not able to reach your application. - -### Listen On All Interfaces -Make sure your application is running on `0.0.0.0` and not on `localhost`. If you see a log message in your container logs such as `Listening on localhost:PORT` or `Listening on 127.0.0.1:PORT`, you need to change the configuration of your application, so that it starts listening on `0.0.0.0` instead of `localhost`/`127.0.0.1`. - -:::info Only Localhost Works -This is often the problem when you are able to use `devspace open` with `via localhost` but not with the `via domain` option. -::: - -### Check For Failing Containers -Make sure none of your containers is constantly restarting (`Restarts` > 0) or unable to starting (`Status` != Running): -```bash -kubectl get po -``` - -### Check Services and Endpoints -Make sure you have at least one service for your main application configured: -```bash -kubectl get svc -``` - -And make sure all your services have at least one endpoint: -```bash -kubectl get ep -``` diff --git a/docs/versioned_docs/version-5.15/guides/plugins.mdx b/docs/versioned_docs/version-5.15/guides/plugins.mdx deleted file mode 100644 index 27251a058f..0000000000 --- a/docs/versioned_docs/version-5.15/guides/plugins.mdx +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: DevSpace Plugins -sidebar_label: Plugins ---- - -The functionality of DevSpace can be extended and changed via plugins. Plugins are managed through DevSpace and are contained in a single binary or shell script. Plugins are able to extend DevSpace in the following ways: -- Add new commands to DevSpace (e.g. `devspace login` or `devspace list users`) -- Add new [predefined variables](../configuration/variables/basics.mdx) -- Execute hooks at specific events (like a command execution) - -## Installing a plugin - -Plugins can be installed from an URL, Git Repository or local file. To install a plugin run: -``` -# Add a plugin from a git repository -devspace add plugin https://github.com/my-organization/my-repo - -# Add a plugin from an URL -devspace add plugin https://myorg.com/path/to/plugin.yaml - -# Add a plugin from a local path -devspace add plugin ./plugin.yaml -``` - -After installing a plugin you can check all your existing plugins via: -``` -devspace list plugins -``` - -## Updating a plugin - -To update a DevSpace plugin run the following command: - -``` -# Enter the name and not the path -devspace update plugin PLUGIN_NAME - -# This only works for GIT plugins -devspace update plugin PLUGIN_NAME --version GIT_TAG -``` - -## Removing a plugin - -To remove a plugin via the DevSpace command line: -``` -# Enter the name and not the path -devspace remove plugin PLUGIN_NAME -``` - -If the plugin cannot be removed because a certain hook fails (or any other reason), you can also delete the plugin manually. DevSpace saves all plugin data in `$HOME/.devspace/plugins`. You will have to check each folders `plugin.yaml` to see which plugin is stored in the folder. To remove a plugin, simply delete the complete plugin folder. - -## Developing a custom DevSpace plugin - -Creating an own DevSpace plugin is quite easy. You only need a `plugin.yaml` that specifies where DevSpace can find the plugin binary and how DevSpace should execute it. You can also take a look at the [devspace-plugin-example](https://github.com/loft-sh/devspace-plugin-loft) project for a complete example. -For each installed plugin, DevSpace will create a folder in `$HOME/.devspace/plugins` with a `plugin.yaml` and a downloaded or copied `binary` that will be executed. - -### plugin.yaml - -The `plugin.yaml` specifies how the plugin is installed and integrates into DevSpace and consists of the following parts. - -#### `name` - -Name of the plugin as shown in devspace list plugins and used for devspace update plugin and devspace remove plugin. (e.g. `my-devspace-plugin`) - -#### `version` - -The semantic current version of the plugin (e.g. `0.0.1`) - -#### `binaries` - -This section states where DevSpace can retrieve the plugin binary for the current operating system and architecture. If devspace cannot find a binary for the current [runtime.GOOS](https://golang.org/pkg/runtime/#pkg-constants) and [runtime.GOARCH](https://golang.org/pkg/runtime/#pkg-constants) it will not install the plugin. -The `binaries` section expects an array with objects that can have the following properties: -* `os` is the runtime.GOOS name of the operating system (e.g. darwin, windows, linux etc.) -* `arch` is the runtime.GOARCH name of the system (e.g. amd64, 386 etc.) -* `path` is the URL to the binary to download or the local path to the binary to copy - -#### `commands` - -This section specifies which commands should be added to DevSpace. It expects an array with objects that can have the following properties: -* `name` of the command that should be added to devspace (e.g. `login` will add `devspace login`) -* `baseArgs` these args are prepended to the plugin binary, so when a user will call 'devspace login other --flag 123', devspace will call the plugin binary with 'plugin-binary baseArgs... other --flag 123' -* `usage` the usage of the command to print in `devspace --help` -* `description` the description of the command to print in `devspace --help` -* `subCommand` (Optional) the subcommand to append the command to (e.g. `add` will add the command to `devspace add`) - -DevSpace will forward all passed arguments and flags to the plugin command. - -#### `vars` - -This section specifies which [predefined variables](../configuration/variables/basics.mdx) are added to DevSpace. These variable values will be retrieved from the plugin binary instead of asking the user. It expects an array with objects that can have the following properties: -* `name` of the predefined variable to add (e.g. `EXAMPLE_VARIABLE` which can then be used in a `devspace.yaml` as `${EXAMPLE_VARIABLE}`) -* `baseArgs` these args are appended to the plugin binary (e.g. `["print", "var", "test"]` will cause devspace to call the plugin binary with: `plugin-binary print var test`) - -DevSpace expects the plugin binary to either fail (exit code unequal zero) or print the variable value to the stdout stream. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables: -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the value of `--namespace` if set (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the value of `--kube-context` if set (e.g. `my-kube-context`) - -#### `hooks` - -This section specifies certain plugin commands that should be executed at certain DevSpace events. It expects an array with objects that can have the following properties: -* `event` name of the event when to execute the command. The following events exist: - * `after_install` executed after the plugin was installed - * `before_update` executed before the plugin will be updated - * `after_update` executed after the plugin was updated - * `before_remove` executed before the plugin will be removed - * `build.beforeBuild`, `build.afterBuild`, `build.errorBuild` executed when DevSpace will build an image. The environment variables `DEVSPACE_PLUGIN_IMAGE_CONFIG_NAME`, `DEVSPACE_PLUGIN_IMAGE_NAME`, `DEVSPACE_PLUGIN_IMAGE_TAGS` and `DEVSPACE_PLUGIN_IMAGE_CONFIG` will be available in the hook - * `deploy.beforeRender`, `deploy.beforeDeploy`, `deploy.beforePurge`, `deploy.afterRender`, `deploy.afterDeploy`, `deploy.afterPurge`, `deploy.errorRender`, `deploy.errorDeploy`, `deploy.errorPurge` executed when DevSpace will deploy a defined deployment. The environment variables `DEVSPACE_PLUGIN_DEPLOY_CONFIG` will be available in the hook - * `dependencies.beforeResolve`, `dependencies.beforeBuild`, `dependencies.beforeDeploy`, `dependencies.beforeRender`, `dependencies.beforePurge`, `dependencies.afterResolve`, `dependencies.afterBuild`, `dependencies.afterDeploy`, `dependencies.afterRender`, `dependencies.afterPurge`, `dependencies.errorResolve`, `dependencies.errorBuild`, `dependencies.errorDeploy`, `dependencies.errorRender`, `dependencies.errorPurge` executed before, after or onError during dependency handling. The environment variables `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG`, `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG_PATH`and `DEVSPACE_PLUGIN_DEPENDENCY_NAME` will be available in the hook - * `config.beforeLoad`, `config.afterLoad`, `config.errorLoad` executed when DevSpace tries to load a `devspace.yaml`. The environment variables `DEVSPACE_PLUGIN_LOAD_PATH`, `DEVSPACE_PLUGIN_LOADED_RAW`, `DEVSPACE_PLUGIN_LOADED_VARS` and `DEVSPACE_PLUGIN_LOADED_CONFIG` (only in `config.afterLoad`) will be available in the hook - * `sync.start`, `sync.restart`, `sync.error`, `sync.stop` executed when DevSpace will start syncing a new sync config, closing a running one or restarting/stopping because of an error. The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `sync.beforeInitialSync`, `sync.afterInitialSync`, `sync.errorInitialSync` executed right before DevSpace will do an initial sync and afterwards (if successful). The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `portForwarding.start`, `portForwarding.restart`, `portForwarding.error`, `portForwarding.stop` executed when DevSpace will start, restart, stop port forwarding. The environment variables `DEVSPACE_PLUGIN_PORT_FORWARDING_CONFIG` will be available in the hook - * `reversePortForwarding.start`, `reversePortForwarding.restart`, `reversePortForwarding.error`, `reversePortForwarding.stop` executed when DevSpace will start, restart, stop reverse port forwarding. The environment variables `DEVSPACE_PLUGIN_REVERSE_PORT_FORWARDING_CONFIG` will be available in the hook - * `dev.beforePipeline`, `dev.afterPipeline`, `dev.beforeDependencies`, `dev.afterDependencies`, `dev.beforeBuild`, `dev.afterBuild`, `dev.beforeDeploy`, `dev.afterDeploy`, `dev.beforeSync`, `dev.afterSync`, `dev.beforePortForwarding`, `dev.afterPortForwarding`, `dev.beforeReplacePods`, `dev.afterReplacePods` executed at different checkpoints when `devspace dev` is executed - * `root`, `root.beforeExecution`, `root.afterExecution`, `root.errorExecution` executed at the beginning, ending or if an error occurs during a devspace command execution - * `analyze`, `attach`, `build`, `deploy`, `dev`, `enter`, `init`, `logs`, `open`, `print`, `purge`, `render`, `restart`, `run`, `sync`, `ui`, `upgrade` are executed after the corresponding devspace command has loaded the config and created a kubernetes client (if there is a config to load or a kubernetes client to create) -* `baseArgs` these args are appended to the plugin binary (e.g. `["run", "my", "command"]` will cause devspace to call the plugin binary with: `plugin-binary run my command`) -* `background` if true will execute the hook in the background and continue DevSpace command execution - -If a non-background hook fails (exit code unequals zero) DevSpace will stop command execution and the complete DevSpace command fails. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables (if they apply for the event): -- `DEVSPACE_PLUGIN_SESSION` a unique identifier that stays the complete duration of a command but will change each time DevSpace is re-executed -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_CONFIG` the config that was loaded for the command as yaml encoded (all profiles and variables are resolved at this point) -- `DEVSPACE_PLUGIN_COMMAND` the name of the DevSpace command that was executed (e.g. `dev`) -- `DEVSPACE_PLUGIN_COMMAND_LINE` the complete name of the DevSpace command that was executed (e.g. `devspace dev [FLAGS]`) -- `DEVSPACE_PLUGIN_COMMAND_FLAGS` the flags that were passed to the DevSpace command encoded as JSON (e.g. `["--namespace", "test", "--skip-build", "true"]`) -- `DEVSPACE_PLUGIN_COMMAND_ARGS` the arguments that were passed to the DevSpace command encoded as JSON (without any flags) (e.g. `["arg1"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the kubernetes namespace where DevSpace will operate in (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the kubernetes context where DevSpace will operate in (e.g. `my-kube-context`) -- `DEVSPACE_PLUGIN_ERROR` the error that occurred at a certain event (usually only supplied in the `error` or `restart` events) - -### Example - -An example `plugin.yaml` could look like this: -```yaml -name: devspace-plugin-example -version: 0.0.1 -commands: - # This will add the command devspace login - - name: "login" - # these args are prepended to the plugin binary, so when a user will call 'devspace login test test2 --flag 123' - # devspace will call the plugin binary with 'plugin-binary other command test test2 --flag 123' - baseArgs: ["other", "command"] - usage: "short description of command" - description: "long description of command" - # You can also add commands under already existing devspace subcommands - # This will add the devspace command: devspace list env - - name: "env" - baseArgs: ["list", "env"] - subCommand: "list" -# Hooks are called before certain already existing commands are executed -# in devspace, for example devspace dev -hooks: - # will be executed when devspace print is run by the user - - event: print - # this will call the plugin binary before devspace print is called with: 'plugin-binary list env' - baseArgs: ["list", "env"] - # root is executed before any other event and command execution except for other plugin commands - - event: root - baseArgs: ["login"] -# You can also add predefined variables for the config via plugins -vars: - # the name of the predefined variable - # that can be used within any devspace.yaml - - name: EXAMPLE_USER - # this will call the plugin binary when resolving this variable and expects the variable - # output on stdout. - baseArgs: ["print", "env", "USER"] - - name: EXAMPLE_HOME - baseArgs: [ "print", "env", "HOME" ] -# In this section the plugin binaries (or scripts) and their locations are defined -# if devspace cannot find a binary for the current runtime.GOOS and runtime.GOARCH -# it will not install the plugin -binaries: - - os: darwin - arch: amd64 - # can be either an URL or local path - path: ./main - - os: linux - arch: amd64 - path: main - - os: linux - arch: "386" - path: main - - os: windows - arch: amd64 - path: path/to/main.exe - - os: windows - arch: "386" - path: https://my-domain.url/path/to/windows.exe -``` diff --git a/docs/versioned_docs/version-5.15/guides/remote-debugging.mdx b/docs/versioned_docs/version-5.15/guides/remote-debugging.mdx deleted file mode 100644 index d2be954168..0000000000 --- a/docs/versioned_docs/version-5.15/guides/remote-debugging.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Remote Debugging -sidebar_label: Remote Debugging ---- - -DevSpace lets you easily [start applications in development mode](../getting-started/development.mdx) and connect remote debuggers for your application using the following steps: - -1. Configure DevSpace to use a development Dockerfile that: - - ships with the appropriate tools for debugging your application - - starts your application together with the debugger, e.g. setting the `ENTRYPOINT` of your Dockerfile to `node --inspect=0.0.0.0:9229 index.js` would start the Node.js remote debugger on port `9229` -2. Define port-forwarding for the port of your remote debugger (e.g. `9229`) within the `dev.ports` section of your `devspace.yaml` -3. Connect your IDE to the remote debugger (see the docs of your IDE for help) -4. Set breakpoints and debug your application directly inside Kubernetes diff --git a/docs/versioned_docs/version-5.15/introduction.mdx b/docs/versioned_docs/version-5.15/introduction.mdx deleted file mode 100644 index b474f724bd..0000000000 --- a/docs/versioned_docs/version-5.15/introduction.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: What is DevSpace? -sidebar_label: Introduction ---- - -DevSpace is a client-only, open-source developer tool for Kubernetes: -- **Build, test and debug applications directly inside Kubernetes** -- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers -- **Unify deployment workflows** within your team and across dev, staging and production -- **Automate repetitive tasks** for image building and deployment - -## How does it work? -DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - - - - -## Why DevSpace? -Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. - - -### Declarative Workflows -DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` -- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. -- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) -- **Share your workflows** with your team mates - - -### Made For Teams -DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. -- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git -- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project -- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) - - -### Hot Reloading -Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: -- Simply edit your files with your IDE and see how your application reloads within the running container. -- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes -- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. - - -### Automation -Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: -- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command -- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. - - -### Compatibility -DevSpace is battle tested with many Kubernetes distributions including: -- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind -- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) -- **Self-managed Kubernetes clusters** (e.g. created with Rancher) - -
- diff --git a/docs/versioned_docs/version-5.15/quickstart.mdx b/docs/versioned_docs/version-5.15/quickstart.mdx deleted file mode 100644 index e1508c12a3..0000000000 --- a/docs/versioned_docs/version-5.15/quickstart.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Quickstart -sidebar_label: Quickstart ---- - -import InstallFragment from './fragments/install-cli.mdx'; -import ChooseProjectFragment from './fragments/choose-project.mdx'; -import StartAppFragment from './fragments/start-app.mdx'; - -This is a 2-minute quickstart guide. For additional details and explanations, see the [Getting Started Guide](./getting-started/installation.mdx). - -## 1. Download CLI - - -## 2. Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - -## 3. Initialize Project -```bash -devspace init -``` -Choose `Component Chart` and `Based on this existing Dockerfile` for quickstart projects. - - -## 4. Start Development -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace dev -``` - -As soon as the terminal opens up, you can start your application: - - - -**Hot Reloading**: Now, change a file on your local computer and re-run the application inside the container terminal. - -**Port Forwarding**: You can access your application via `localhost:PORT` if your port is specified in `dev.ports` within `devspace.yaml`. - -When you're done testing development, type `exit` or hit `Ctrl-d` to exit the container terminal. - -## 5. Deploy Project -To build your container image and deploy a clean version of this project, run: -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace deploy -p production -``` - -## 6. Cleanup -To purge your deployment from the cluster, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.16/commands/devspace.md b/docs/versioned_docs/version-5.16/commands/devspace.md deleted file mode 100644 index 77355f7887..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Command - devspace" -sidebar_label: devspace ---- - -## devspace - -Welcome to the DevSpace! - -### Synopsis - -DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes. Get started by running the init command in one of your projects: - - devspace init - -### Options - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - -h, --help help for devspace - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - -``` - -``` - - -## Flags -## Global & Inherited Flags \ No newline at end of file diff --git a/docs/versioned_docs/version-5.16/commands/devspace_add.md b/docs/versioned_docs/version-5.16/commands/devspace_add.md deleted file mode 100644 index 93dd2af1d8..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_add.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Command - devspace add" -sidebar_label: devspace add ---- - - -Convenience command: adds something to devspace.yaml - -## Synopsis - - -``` -####################################################### -#################### devspace add ##################### -####################################################### -Adds config sections to devspace.yaml -``` - - -## Flags - -``` - -h, --help help for add -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_add_plugin.md b/docs/versioned_docs/version-5.16/commands/devspace_add_plugin.md deleted file mode 100644 index 75d19eb6d8..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_add_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace add plugin" -sidebar_label: devspace add plugin ---- - - -Add a plugin to devspace - -## Synopsis - - -``` -devspace add plugin [flags] -``` - -``` -####################################################### -############### devspace add plugin ################### -####################################################### -Adds a new plugin to devspace - -devspace add plugin https://github.com/my-plugin/plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_analyze.md b/docs/versioned_docs/version-5.16/commands/devspace_analyze.md deleted file mode 100644 index 4210991039..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_analyze.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace analyze" -sidebar_label: devspace analyze ---- - - -Analyzes a kubernetes namespace and checks for potential problems - -## Synopsis - - -``` -devspace analyze [flags] -``` - -``` -####################################################### -################## devspace analyze ################### -####################################################### -Analyze checks a namespaces events, replicasets, services -and pods for potential problems - -Example: -devspace analyze -devspace analyze --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for analyze - --ignore-pod-restarts If true, analyze will ignore the restart events of running pods - --patient If true, analyze will ignore failing pods and events until every deployment, statefulset, replicaset and pods are ready or the timeout is reached - --timeout int Timeout until analyze should stop waiting (default 120) - --wait Wait for pods to get ready if they are just starting (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_attach.md b/docs/versioned_docs/version-5.16/commands/devspace_attach.md deleted file mode 100644 index 1a83ebc447..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_attach.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Command - devspace attach" -sidebar_label: devspace attach ---- - - -Attaches to a container - -## Synopsis - - -``` -devspace attach [flags] -``` - -``` -####################################################### -################# devspace attach ##################### -####################################################### -Attaches to a running container - -devspace attach -devspace attach --pick # Select pod to enter -devspace attach -c my-container -devspace attach -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for attach - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to open a shell to -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_build.md b/docs/versioned_docs/version-5.16/commands/devspace_build.md deleted file mode 100644 index 1df6012752..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_build.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace build" -sidebar_label: devspace build ---- - - -Builds all defined images and pushes them - -## Synopsis - - -``` -devspace build [flags] -``` - -``` -####################################################### -################## devspace build ##################### -####################################################### -Builds all defined images and pushes them -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Builds only the specific named dependencies - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -h, --help help for build - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-dependency strings Skips building the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_cleanup.md b/docs/versioned_docs/version-5.16/commands/devspace_cleanup.md deleted file mode 100644 index 553b048918..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_cleanup.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace cleanup" -sidebar_label: devspace cleanup ---- - - -Cleans up resources - -## Synopsis - - -``` -####################################################### -################## devspace cleanup ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for cleanup -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-5.16/commands/devspace_cleanup_images.md deleted file mode 100644 index 833487d134..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_cleanup_images.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace cleanup images" -sidebar_label: devspace cleanup images ---- - - -Deletes all locally created images from docker - -## Synopsis - - -``` -devspace cleanup images [flags] -``` - -``` -####################################################### -############# devspace cleanup images ################# -####################################################### -Deletes all locally created docker images from docker -####################################################### -``` - - -## Flags - -``` - -h, --help help for images -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_deploy.md b/docs/versioned_docs/version-5.16/commands/devspace_deploy.md deleted file mode 100644 index 748ce6e054..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_deploy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace deploy" -sidebar_label: devspace deploy ---- - - -Deploy the project - -## Synopsis - - -``` -devspace deploy [flags] -``` - -``` -####################################################### -################## devspace deploy #################### -####################################################### -Deploys the current project to a Space or namespace: - -devspace deploy -devspace deploy -n some-namespace -devspace deploy --kube-context=deploy-context -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to (re-)build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to (re-)deploy every deployment - -h, --help help for deploy - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips building of images - --skip-dependency strings Skips deploying the following dependencies - --skip-deploy Skips deploying and only builds images - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --timeout int Timeout until deploy should stop waiting (default 120) - --verbose-dependencies Deploys the dependencies verbosely (default true) - --wait If true will wait for pods to be running or fails after given timeout -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_dev.md b/docs/versioned_docs/version-5.16/commands/devspace_dev.md deleted file mode 100644 index a2f5c6eaf8..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_dev.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: "Command - devspace dev" -sidebar_label: devspace dev ---- - - -Starts the development mode - -## Synopsis - - -``` -devspace dev [flags] -``` - -``` -####################################################### -################### devspace dev ###################### -####################################################### -Starts your project in development mode: -1. Builds your Docker images and override entrypoints if specified -2. Deploys the deployments via helm or kubectl -3. Forwards container ports to the local computer -4. Starts the sync client -5. Streams the logs of deployed containers - -Open terminal instead of logs: -- Use "devspace dev -t" for opening a terminal -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specified named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - --exit-after-deploy Exits the command after building the images and deploying the project - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to deploy every deployment - -h, --help help for dev - -i, --interactive DEPRECATED: DO NOT USE ANYMORE - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --open Open defined URLs in the browser, if defined (default true) - --portforwarding Enable port forwarding (default true) - --print-sync If enabled will print the sync log to the terminal - --skip-build Skips building of images - --skip-dependency strings Skips the following dependencies for deployment - -x, --skip-pipeline Skips build & deployment and only starts sync, portforwarding & terminal - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --sync Enable code synchronization (default true) - -t, --terminal Open a terminal instead of showing logs - --terminal-reconnect Will try to reconnect the terminal if an unexpected exit code was encountered (default true) - --timeout int Timeout until dev should stop waiting and fail (default 120) - --ui Start the ui server (default true) - --ui-port int The port to use when opening the ui server - --verbose-dependencies Deploys the dependencies verbosely (default true) - --verbose-sync When enabled the sync will log every file change - --wait If true will wait first for pods to be running or fails after given timeout - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_enter.md b/docs/versioned_docs/version-5.16/commands/devspace_enter.md deleted file mode 100644 index 8c331d309b..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_enter.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace enter" -sidebar_label: devspace enter ---- - - -Open a shell to a container - -## Synopsis - - -``` -devspace enter [flags] -``` - -``` -####################################################### -################## devspace enter ##################### -####################################################### -Execute a command or start a new terminal in your -devspace: - -devspace enter -devspace enter --pick # Select pod to enter -devspace enter bash -devspace enter -c my-container -devspace enter bash -n my-namespace -devspace enter bash -l release=test -devspace enter bash --image-selector nginx:latest -devspace enter bash --image-selector "image(app):tag(app)" -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for enter - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod / container if multiple are found (default true) - --pod string Pod to open a shell to - --reconnect Will reconnect the terminal if an unexpected return code is encountered - --wait Wait for the pod(s) to start if they are not running - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_init.md b/docs/versioned_docs/version-5.16/commands/devspace_init.md deleted file mode 100644 index 3590599258..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_init.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace init" -sidebar_label: devspace init ---- - - -Initializes DevSpace in the current folder - -## Synopsis - - -``` -devspace init [flags] -``` - -``` -####################################################### -#################### devspace init #################### -####################################################### -Initializes a new devspace project within the current -folder. Creates a devspace.yaml with all configuration. -####################################################### -``` - - -## Flags - -``` - --context string Context path to use for intialization - --dockerfile string Dockerfile to use for initialization (default "./Dockerfile") - -h, --help help for init - --provider string The cloud provider to use - -r, --reconfigure Change existing configuration -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list.md b/docs/versioned_docs/version-5.16/commands/devspace_list.md deleted file mode 100644 index d10b138b1e..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace list" -sidebar_label: devspace list ---- - - -Lists configuration - -## Synopsis - - -``` -####################################################### -#################### devspace list #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for list -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_commands.md b/docs/versioned_docs/version-5.16/commands/devspace_list_commands.md deleted file mode 100644 index 64fb860ad8..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_commands.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace list commands" -sidebar_label: devspace list commands ---- - - -Lists all custom DevSpace commands - -## Synopsis - - -``` -devspace list commands [flags] -``` - -``` -####################################################### -############## devspace list commands ################# -####################################################### -Lists all DevSpace custom commands defined in the -devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for commands -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_contexts.md b/docs/versioned_docs/version-5.16/commands/devspace_list_contexts.md deleted file mode 100644 index 51f8bdf4de..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_contexts.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace list contexts" -sidebar_label: devspace list contexts ---- - - -Lists all kube contexts - -## Synopsis - - -``` -devspace list contexts [flags] -``` - -``` -####################################################### -############## devspace list contexts ################# -####################################################### -Lists all available kube contexts - -Example: -devspace list contexts -####################################################### -``` - - -## Flags - -``` - -h, --help help for contexts -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_deployments.md b/docs/versioned_docs/version-5.16/commands/devspace_list_deployments.md deleted file mode 100644 index f0dddddde8..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_deployments.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list deployments" -sidebar_label: devspace list deployments ---- - - -Lists and shows the status of all deployments - -## Synopsis - - -``` -devspace list deployments [flags] -``` - -``` -####################################################### -############# devspace list deployments ############### -####################################################### -Shows the status of all deployments -####################################################### -``` - - -## Flags - -``` - -h, --help help for deployments -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-5.16/commands/devspace_list_namespaces.md deleted file mode 100644 index 1ebfa230b6..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_namespaces.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list namespaces" -sidebar_label: devspace list namespaces ---- - - -Lists all namespaces in the current context - -## Synopsis - - -``` -devspace list namespaces [flags] -``` - -``` -####################################################### -############ devspace list namespaces ################# -####################################################### -Lists all namespaces in the selected kube context -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespaces -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_plugins.md b/docs/versioned_docs/version-5.16/commands/devspace_list_plugins.md deleted file mode 100644 index cb5bc0d884..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_plugins.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list plugins" -sidebar_label: devspace list plugins ---- - - -Lists all installed devspace plugins - -## Synopsis - - -``` -devspace list plugins [flags] -``` - -``` -####################################################### -############# devspace list plugins ################## -####################################################### -Lists all installed plugins - -devspace list plugins -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugins -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_ports.md b/docs/versioned_docs/version-5.16/commands/devspace_list_ports.md deleted file mode 100644 index e1fde513b4..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_ports.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list ports" -sidebar_label: devspace list ports ---- - - -Lists port forwarding configurations - -## Synopsis - - -``` -devspace list ports [flags] -``` - -``` -####################################################### -############### devspace list ports ################### -####################################################### -Lists the port forwarding configurations -####################################################### -``` - - -## Flags - -``` - -h, --help help for ports -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_profiles.md b/docs/versioned_docs/version-5.16/commands/devspace_list_profiles.md deleted file mode 100644 index c048b8cf8e..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_profiles.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list profiles" -sidebar_label: devspace list profiles ---- - - -Lists all DevSpace profiles - -## Synopsis - - -``` -devspace list profiles [flags] -``` - -``` -####################################################### -############## devspace list profiles ################# -####################################################### -Lists all DevSpace configurations for this project -####################################################### -``` - - -## Flags - -``` - -h, --help help for profiles -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_sync.md b/docs/versioned_docs/version-5.16/commands/devspace_list_sync.md deleted file mode 100644 index 69e6fd706b..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_sync.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list sync" -sidebar_label: devspace list sync ---- - - -Lists sync configuration - -## Synopsis - - -``` -devspace list sync [flags] -``` - -``` -####################################################### -################# devspace list sync ################## -####################################################### -Lists the sync configuration -####################################################### -``` - - -## Flags - -``` - -h, --help help for sync -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_list_vars.md b/docs/versioned_docs/version-5.16/commands/devspace_list_vars.md deleted file mode 100644 index cc32ef92c0..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_list_vars.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list vars" -sidebar_label: devspace list vars ---- - - -Lists the vars in the active config - -## Synopsis - - -``` -devspace list vars [flags] -``` - -``` -####################################################### -############### devspace list vars #################### -####################################################### -Lists the defined vars in the devspace config with their -values -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars - -o, --output string The output format of the command. Can be either empty, keyvalue or json -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_logs.md b/docs/versioned_docs/version-5.16/commands/devspace_logs.md deleted file mode 100644 index f2d7157c94..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_logs.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace logs" -sidebar_label: devspace logs ---- - - -Prints the logs of a pod and attaches to it - -## Synopsis - - -``` -devspace logs [flags] -``` - -``` -####################################################### -#################### devspace logs #################### -####################################################### -Logs prints the last log of a pod container and attachs -to it - -Example: -devspace logs -devspace logs --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -f, --follow Attach to logs afterwards - -h, --help help for logs - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --lines int Max amount of lines to print from the last log (default 200) - --pick Select a pod (default true) - --pod string Pod to print the logs of - --wait Wait for the pod(s) to start if they are not running -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_open.md b/docs/versioned_docs/version-5.16/commands/devspace_open.md deleted file mode 100644 index 955d0566bf..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_open.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace open" -sidebar_label: devspace open ---- - - -Opens the space in the browser - -## Synopsis - - -``` -devspace open [flags] -``` - -``` -####################################################### -#################### devspace open #################### -####################################################### -Opens the space domain in the browser - -Example: -devspace open -####################################################### -``` - - -## Flags - -``` - -h, --help help for open - --port int The port on the localhost to listen on - --provider string The cloud provider to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_print.md b/docs/versioned_docs/version-5.16/commands/devspace_print.md deleted file mode 100644 index a9601ce337..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_print.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace print" -sidebar_label: devspace print ---- - - -Print displays the configuration - -## Synopsis - - -``` -devspace print [flags] -``` - -``` -####################################################### -################## devspace print ##################### -####################################################### -Prints the configuration for the current or given -profile after all patching and variable substitution -####################################################### -``` - - -## Flags - -``` - -h, --help help for print - --skip-info When enabled, only prints the configuration without additional information -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_purge.md b/docs/versioned_docs/version-5.16/commands/devspace_purge.md deleted file mode 100644 index fe7f236a63..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_purge.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace purge" -sidebar_label: devspace purge ---- - - -Delete deployed resources - -## Synopsis - - -``` -devspace purge [flags] -``` - -``` -####################################################### -################### devspace purge #################### -####################################################### -Deletes the deployed kuberenetes resources: - -devspace purge -devspace purge --dependencies -devspace purge -d my-deployment -####################################################### -``` - - -## Flags - -``` - -a, --all When enabled purges the dependencies as well - --dependencies DEPRECATED: Please use --all instead - --dependency strings Purges only the specific named dependencies - -d, --deployments string The deployment to delete (You can specify multiple deployments comma-separated, e.g. devspace-default,devspace-database etc.) - -h, --help help for purge - --skip-dependency strings Skips the following dependencies from purging - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_remove.md b/docs/versioned_docs/version-5.16/commands/devspace_remove.md deleted file mode 100644 index a6c5e71bef..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_remove.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace remove" -sidebar_label: devspace remove ---- - - -Changes devspace configuration - -## Synopsis - - -``` -####################################################### -################## devspace remove #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for remove -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_remove_context.md b/docs/versioned_docs/version-5.16/commands/devspace_remove_context.md deleted file mode 100644 index 41f1c2013b..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_remove_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace remove context" -sidebar_label: devspace remove context ---- - - -Removes a kubectl-context - -## Synopsis - - -``` -devspace remove context [flags] -``` - -``` -####################################################### -############# devspace remove context ################# -####################################################### -Removes a kubectl-context - -Example: -devspace remove context myspace -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_remove_plugin.md b/docs/versioned_docs/version-5.16/commands/devspace_remove_plugin.md deleted file mode 100644 index 91f9b76b86..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_remove_plugin.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace remove plugin" -sidebar_label: devspace remove plugin ---- - - -Removes a devspace plugin - -## Synopsis - - -``` -devspace remove plugin [flags] -``` - -``` -####################################################### -############# devspace remove plugin ################## -####################################################### -Removes a plugin - -devspace remove plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_render.md b/docs/versioned_docs/version-5.16/commands/devspace_render.md deleted file mode 100644 index d8744a1159..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_render.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace render" -sidebar_label: devspace render ---- - - -Render builds all defined images and shows the yamls that would be deployed - -## Synopsis - - -``` -devspace render [flags] -``` - -``` -####################################################### -################## devspace render ##################### -####################################################### -Builds all defined images and shows the yamls that would -be deployed via helm and kubectl, but skips actual -deployment. -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Renders only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to build every image - -h, --help help for render - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips image building - --skip-dependencies Skips rendering the dependencies - --skip-dependency strings Skips rendering the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_reset.md b/docs/versioned_docs/version-5.16/commands/devspace_reset.md deleted file mode 100644 index 6e4d8ceb1a..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_reset.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace reset" -sidebar_label: devspace reset ---- - - -Resets an cluster token - -## Synopsis - - -``` -####################################################### -################## devspace reset ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for reset -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-5.16/commands/devspace_reset_dependencies.md deleted file mode 100644 index 9ac4018f4a..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_reset_dependencies.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset dependencies" -sidebar_label: devspace reset dependencies ---- - - -Resets the dependencies cache - -## Synopsis - - -``` -devspace reset dependencies [flags] -``` - -``` -####################################################### -############ devspace reset dependencies ############## -####################################################### -Deletes the complete dependency cache - -Examples: -devspace reset dependencies -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_reset_pods.md b/docs/versioned_docs/version-5.16/commands/devspace_reset_pods.md deleted file mode 100644 index afea2011ca..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_reset_pods.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset pods" -sidebar_label: devspace reset pods ---- - - -Resets the replaced pods - -## Synopsis - - -``` -devspace reset pods [flags] -``` - -``` -####################################################### -############### devspace reset pods ################### -####################################################### -Resets the replaced pods to its original state - -Examples: -devspace reset pods -####################################################### -``` - - -## Flags - -``` - -h, --help help for pods -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_reset_vars.md b/docs/versioned_docs/version-5.16/commands/devspace_reset_vars.md deleted file mode 100644 index 9b18a646d1..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_reset_vars.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset vars" -sidebar_label: devspace reset vars ---- - - -Resets the current config vars - -## Synopsis - - -``` -devspace reset vars [flags] -``` - -``` -####################################################### -############### devspace reset vars ################### -####################################################### -Resets the saved variables of the current config - -Examples: -devspace reset vars -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_restart.md b/docs/versioned_docs/version-5.16/commands/devspace_restart.md deleted file mode 100644 index f55e9997d4..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_restart.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Command - devspace restart" -sidebar_label: devspace restart ---- - - -Restarts containers where the sync restart helper is injected - -## Synopsis - - -``` -devspace restart [flags] -``` - -``` -####################################################### -################## devspace restart ################### -####################################################### -Restarts containers where the sync restart helper -is injected: - -devspace restart -devspace restart -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod to restart - -h, --help help for restart - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to restart -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_restore.md b/docs/versioned_docs/version-5.16/commands/devspace_restore.md deleted file mode 100644 index 279d29b0af..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_restore.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace restore" -sidebar_label: devspace restore ---- - - -Restore configuration - -## Synopsis - - -``` -####################################################### -################## devspace restore ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for restore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_restore_vars.md b/docs/versioned_docs/version-5.16/commands/devspace_restore_vars.md deleted file mode 100644 index 86ce4d55f9..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_restore_vars.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace restore vars" -sidebar_label: devspace restore vars ---- - - -Restores variable values from kubernetes - -## Synopsis - - -``` -devspace restore vars [flags] -``` - -``` -####################################################### -############### devspace restore vars ################# -####################################################### -Restores devspace config variable values from a kubernetes -secret. - -Examples: -devspace restore vars -devspace restore vars --namespace test -devspace restore vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_run.md b/docs/versioned_docs/version-5.16/commands/devspace_run.md deleted file mode 100644 index 0addeec7f1..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_run.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace run" -sidebar_label: devspace run ---- - - -Run executes a predefined command - -## Synopsis - - -``` -devspace run [flags] -``` - -``` -####################################################### -##################### devspace run #################### -####################################################### -Run executes a predefined command from the devspace.yaml - -Examples: -devspace run mycommand --myarg 123 -devspace run mycommand2 1 2 3 -devspace --dependency my-dependency run any-command --any-command-flag -####################################################### -``` - - -## Flags - -``` - --dependency string Run a command from a specific dependency - -h, --help help for run -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_save.md b/docs/versioned_docs/version-5.16/commands/devspace_save.md deleted file mode 100644 index 6eb1fe6b87..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_save.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace save" -sidebar_label: devspace save ---- - - -Save configuration - -## Synopsis - - -``` -####################################################### -#################### devspace save #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for save -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_save_vars.md b/docs/versioned_docs/version-5.16/commands/devspace_save_vars.md deleted file mode 100644 index db54e3dcdc..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_save_vars.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Command - devspace save vars" -sidebar_label: devspace save vars ---- - - -Saves variable values to kubernetes - -## Synopsis - - -``` -devspace save vars [flags] -``` - -``` -####################################################### -################ devspace save vars ################### -####################################################### -Saves devspace config variable values into a kubernetes -secret. Variable values can be shared or restored via -devspace restore vars. - -Examples: -devspace save vars -devspace save vars --namespace test -devspace save vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_set.md b/docs/versioned_docs/version-5.16/commands/devspace_set.md deleted file mode 100644 index 96298bc808..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_set.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace set" -sidebar_label: devspace set ---- - - -Make global configuration changes - -## Synopsis - - -``` -####################################################### -#################### devspace set ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for set -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_set_var.md b/docs/versioned_docs/version-5.16/commands/devspace_set_var.md deleted file mode 100644 index 38842faab4..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_set_var.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace set var" -sidebar_label: devspace set var ---- - - -Sets a variable - -## Synopsis - - -``` -devspace set var [flags] -``` - -``` -####################################################### -################# devspace set var #################### -####################################################### -Sets a specific variable - -Examples: -devspace set var key=value -devspace set var key=value key2=value2 -####################################################### -``` - - -## Flags - -``` - -h, --help help for var - --overwrite If true will overwrite the variables value even if its set already (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_sync.md b/docs/versioned_docs/version-5.16/commands/devspace_sync.md deleted file mode 100644 index b4802709a1..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_sync.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Command - devspace sync" -sidebar_label: devspace sync ---- - - -Starts a bi-directional sync between the target container and the local path - -## Synopsis - - -``` -devspace sync [flags] -``` - -``` -####################################################### -################### devspace sync ##################### -####################################################### -Starts a bi-directionaly sync between the target container -and the current path: - -devspace sync -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -devspace sync --container-path=/my-path -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to sync to - --container-path string Container path to use (Default is working directory) - --download-on-initial-sync DEPRECATED: Downloads all locally non existing remote files in the beginning (default true) - --download-only If set DevSpace will only download files - -e, --exclude strings Exclude directory from sync - -h, --help help for sync - --initial-sync string The initial sync strategy to use (mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --local-path string Local path to use (Default is current directory - --no-watch Synchronizes local and remote and then stops - --pick Select a pod (default true) - --pod string Pod to sync to - --upload-only If set DevSpace will only upload files - --verbose Shows every file that is synced -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_ui.md b/docs/versioned_docs/version-5.16/commands/devspace_ui.md deleted file mode 100644 index a96da5bf09..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_ui.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace ui" -sidebar_label: devspace ui ---- - - -Opens the localhost UI in the browser - -## Synopsis - - -``` -devspace ui [flags] -``` - -``` -####################################################### -##################### devspace ui ##################### -####################################################### -Opens the localhost UI in the browser -####################################################### -``` - - -## Flags - -``` - --dev Ignore errors when downloading UI - -h, --help help for ui - --host string The host to use when opening the ui server (default "localhost") - --port int The port to use when opening the ui server - --server If enabled will force start a server (otherwise an existing UI server is searched) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_update.md b/docs/versioned_docs/version-5.16/commands/devspace_update.md deleted file mode 100644 index d2f87e33f1..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_update.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace update" -sidebar_label: devspace update ---- - - -Updates the current config - -## Synopsis - - -``` -####################################################### -################## devspace update #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for update -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-5.16/commands/devspace_update_dependencies.md deleted file mode 100644 index fb3b98f886..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_update_dependencies.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace update dependencies" -sidebar_label: devspace update dependencies ---- - - -Updates the git repositories of the dependencies defined in the devspace.yaml - -## Synopsis - - -``` -devspace update dependencies [flags] -``` - -``` -####################################################### -############ devspace update dependencies ############# -####################################################### -Updates the git repositories of the dependencies defined -in the devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_update_plugin.md b/docs/versioned_docs/version-5.16/commands/devspace_update_plugin.md deleted file mode 100644 index e234901371..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_update_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace update plugin" -sidebar_label: devspace update plugin ---- - - -Updates a devspace plugin - -## Synopsis - - -``` -devspace update plugin [flags] -``` - -``` -####################################################### -############# devspace update plugin ################## -####################################################### -Updates a plugin - -devspace update plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_upgrade.md b/docs/versioned_docs/version-5.16/commands/devspace_upgrade.md deleted file mode 100644 index eba126f39f..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_upgrade.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace upgrade" -sidebar_label: devspace upgrade ---- - - -Upgrade the DevSpace CLI to the newest version - -## Synopsis - - -``` -devspace upgrade [flags] -``` - -``` -####################################################### -################## devspace upgrade ################### -####################################################### -Upgrades the DevSpace CLI to the newest version -####################################################### -``` - - -## Flags - -``` - -h, --help help for upgrade - --version string The version to update devspace to. Defaults to the latest stable version available -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_use.md b/docs/versioned_docs/version-5.16/commands/devspace_use.md deleted file mode 100644 index 096ad1ebdc..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_use.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace use" -sidebar_label: devspace use ---- - - -Use specific config - -## Synopsis - - -``` -####################################################### -#################### devspace use ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_use_context.md b/docs/versioned_docs/version-5.16/commands/devspace_use_context.md deleted file mode 100644 index 3b4cb52d5f..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_use_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace use context" -sidebar_label: devspace use context ---- - - -Tells DevSpace which kube context to use - -## Synopsis - - -``` -devspace use context [flags] -``` - -``` -####################################################### -############### devspace use context ################## -####################################################### -Switch the current kube context - -Example: -devspace use context my-context -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_use_namespace.md b/docs/versioned_docs/version-5.16/commands/devspace_use_namespace.md deleted file mode 100644 index ee11acc7f9..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_use_namespace.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace use namespace" -sidebar_label: devspace use namespace ---- - - -Tells DevSpace which namespace to use - -## Synopsis - - -``` -devspace use namespace [flags] -``` - -``` -####################################################### -############## devspace use namespace ################# -####################################################### -Set the default namespace to deploy to - -Example: -devspace use namespace my-namespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespace - --reset Resets the default namespace of the current kube-context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/commands/devspace_use_profile.md b/docs/versioned_docs/version-5.16/commands/devspace_use_profile.md deleted file mode 100644 index 2e531b7836..0000000000 --- a/docs/versioned_docs/version-5.16/commands/devspace_use_profile.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace use profile" -sidebar_label: devspace use profile ---- - - -Use a specific DevSpace profile - -## Synopsis - - -``` -devspace use profile [flags] -``` - -``` -####################################################### -################ devspace use profile ################# -####################################################### -Use a specific DevSpace profile - -Example: -devspace use profile production -devspace use profile staging -devspace use profile --reset -####################################################### -``` - - -## Flags - -``` - -h, --help help for profile - --reset Don't use a profile anymore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.16/configuration/commands/basics.mdx b/docs/versioned_docs/version-5.16/configuration/commands/basics.mdx deleted file mode 100644 index a01e314f4e..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/commands/basics.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Custom Commands -sidebar_label: commands ---- - -The idea of custom commands is that someone on a team defines a set of useful commands and stores them in the `devspace.yaml`, then commits and pushes this config to the code repository. Now, others can run these custom commands without having to remember all the details or having to read through endless pages of documentation. - -Custom commands are being shared in the `commands` section of `devspace.yaml`: -```yaml -# File: devspace.yaml -images: - default: - image: john/backend -commands: -- name: debug-backend - command: "devspace dev --profile=debug-backend $@" -profiles: -- name: debug-backend - patches: - - op: replace - path: images.default.entrypoint - value: ["npm", "run", "debug"] -``` - -:::note -Custom commands can be used for more than just running `devspace` commands, e.g. they can run any other script or command, set environment variables etc. If you are familiar with the `scripts` section of the `package.json` for Node.js, you will find that `devspace run [name]` works pretty much the same way as `npm run [name]` -::: - -The above example configuration would allow everyone to run the custom command `debug-backend` like this: -```bash -devspace run debug-backend -devspace run debug-backend --verbose-dependencies -devspace run debug-backend -- --verbose-dependencies -s -``` - -And `devspace run` would execute the following commands internally: -```bash -devspace dev --profile=debug-backend -devspace dev --profile=debug-backend --verbose-dependencies -devspace dev --profile=debug-backend --verbose-dependencies -s -``` - -:::note `--` End of Options Separator -The `--` between the command name and the additional flags for the command tells your terminal that the arguments and flags that follow after the `--` do not belong to `devspace run` and should not be parsed. It is not required but often helpful to use `--` when executing commands using `devspace run`. -::: - -:::info Interactive Commands -Custom commands proxy input and output streams, so you can even share interactive commands such as `devspace enter`. -::: - - -## Configuration - -### `name` -The `name` option is mandatory and expects a string with name that serves as an alias for the command provided in the `command` option. - - -### `command` -The `command` option is mandatory and expects a string with an arbitrary terminal command. - -While you can run any `devspace` command, you can also run other commands (if installed), set environment variables or use `bash` style expressions such as `&&`, `||` or `;`. To ensure that many of your team mates can run the command on any platform, it is highly recommended to keep your command expressions as simple as possible. - -:::info Cross-Platform -Write all commands in `bash` style. DevSpace is using a library to make them cross-platform executable. -::: - -### `appendArgs` -The `appendArgs` option expects either true or false and will append given arguments to the command. If not specified, this option defaults to false. - -Example: -```yaml -commands: -# Running 'devspace run append my-value' will print 'my-value' -- name: append - command: echo $@ -# Running 'devspace run no-append my-value' will print '' -- name: no-append - command: echo -# Running 'devspace run append-option my-value' will print 'my-value' -- name: append-option - appendArgs: true - command: echo -``` - -### `description` -The `description` option is optional and expects a string with a description of what this command does and when it should be used. This is only used for helping other users to understand the meaning of a command and will be shown when the user runs: `devspace list commands` - - -
- -## Useful Commands - -### `devspace list commands` -Run this command to list all custom commands that are configured: -```bash -devspace list commands -``` - - -### `devspace run dependency1.command` -You can run a command defined in one of the dependencies of the current project like this: -```bash -devspace run [dependency].[command] [command-flags-and-args] -``` - -:::note Working Directory -When running a command of a dependency, DevSpace will use the root folder of the dependency as current working directory when executing the command. -::: diff --git a/docs/versioned_docs/version-5.16/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-5.16/configuration/dependencies/basics.mdx deleted file mode 100644 index 360731a33b..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/dependencies/basics.mdx +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Dependencies -sidebar_label: "Basics" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: - -- You want to reuse an already existing `devspace.yaml` of another project -- You want to define a more complex pipeline with multiple build, hook and deploy steps -- You want to define a common build / deploy step for other projects - -Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. - - - - -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - ports: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - vars: - - name: ROOT_PASSWORD - value: ${ROOT_PASSWORD} -``` - - - - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - - - - -## Dependency Source -DevSpace is able to work with dependencies from the following sources: -- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration -- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) - - -## Execution Order - -Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 - dev: - sync: true -- name: dep2 - source: - path: dep2 - dev: - ports: true -images: - image1: - image: myimage/image -deployments: -- name: deployment1 - helm: - ... -dev: - ports: ... - sync: ... -``` - -### Explanation -In the above `devspace.yaml`, execution order would be as followed: -* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) -* Execute dependency dep2's pull secrets, image building & deployments -* Build image `image1` -* Deploy deployment `deployment1` -* Start merged portforwarding from `dep2` and `dev.ports` -* Start sync from `dep1` and `dev.sync` - -## Referencing Dependencies - -### Reference Image Names -You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageName: dep1.image1 -``` - -With `dep1/devspace.yaml`: -```yaml -images: - image1: - image: myusername/devspace -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: myusername/devspace -``` - -### Referencing Nested Dependencies - -You can also reference nested dependencies (dependencies of dependencies) via: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep2 that is a dependency of dep1 - terminal: - imageName: dep1.dep2.image1 -``` - -### Referencing Dependencies in Deployment Values / Manifests - -It is also possible to reference a dependency's image with the helpers `image()` or `tag()` in a deployment: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: image(dep1.image1):tag(dep1.image1) # -> replaced with 'myusername/devspace:xxxx' -``` - -With a dependency `dep1/devspace.yaml` that looks like: -```yaml -images: - image1: - image: myusername/devspace -``` - -## Dependency Resolution -When a DevSpace project has dependencies, DevSpace will: - -1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository -2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) -3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets -4. Remove the leave node from the tree and repeat step 3 until everything has been deployed - -The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. - -### Redundant Dependencies -If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. - -### Circular Dependencies -If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. - -## Useful Commands - -### `devspace update dependencies` -If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.16/configuration/dependencies/git-repository.mdx b/docs/versioned_docs/version-5.16/configuration/dependencies/git-repository.mdx deleted file mode 100644 index 07f33635c0..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/dependencies/git-repository.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Deploy Git-based Dependencies -sidebar_label: "source.git" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - sync: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - dev: - ports: true -dev: - terminal: - imageName: api-server.server-image -``` - -:::info Authentication -DevSpace is using the git credential store. So, if you are able to clone or pull from the specified repository, DevSpace will also be able clone or pull this repository. -::: - -## `source` - -### `source.git` -The `source.git` option expects a string with the URL of a git repository. DevSpace will use the `master` branch by default and assumes that the `devspace.yaml` is located at the root directory of the git repository. To customize this behavior, use the following, complementary config options: -- [`branch` for a different git branch](#sourcebranch) -- [`tag` for a specific git tag or release](#sourcetag) -- [`revision` for a specific git commit hash](#sourcerevision) -- [`subPath` for custom location of `devspace.yaml` within the repository](#sourcesubpath) - -:::note Caching -DevSpace will clone the git repository which is defined as a dependency and cache the project in the global cache folder (i.e. `$HOME/.devspace`). DevSpace will also pull new commits before deploying the dependency. -::: - -#### Example: Git Projects as Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable -- source: - git: https://github.com/my-auth-server - revision: c967392 -- source: - git: https://github.com/my-auth-server - tag: v3.0.1 -``` -**Explanation:** -- When you run `devspace deploy` or `devspace dev` for the first time after defining the dependencies, DevSpace will check out all git projects into the global cache folder `$HOME/.devspace`. -- Whenever you run `devspace deploy` or `devspace dev` (even the first time), DevSpace will: - - Run a `git pull` for all cached repositories. - - Load the `devspace.yaml` files of the dependency projects and resolve their dependencies respectively. - - Deploy all dependency projects according to their `devspace.yaml` files. - -### `source.branch` -The `source.branch` option expects a string stating the branch of the git repository referenced via `source.git` that should be used when deploying this dependency. - -#### Default Value For `source.branch` -```yaml -branch: master -``` - -### `source.tag` -The `source.tag` option expects a string stating a tag of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.revision` -The `source.revision` option expects a string stating a commit hash of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.subPath` -The `source.subPath` option expects a string stating a folder within the git repository referenced via `source.git` that contains the `devspace.yaml` for this dependency. - -#### Default Value For `source.subPath` -```yaml -subPath: / -``` - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name within the git repository's `source.subPath` folder. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file dev.yaml for the dependency's DevSpace configuration -# at the root folder of the repository's "stable" branch -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable - configName: dev.yaml -``` - - -## Git Options - -### `source.disableShallow` -The `source.disableShallow` option expects a boolean that prevents DevSpace from using shallow clones (git flag `--depth 1`) when retrieving a dependency via git clone. - -:::info Shallow Clone By Default -DevSpace uses shallow clones of git dependencies which reduces the time to retrieve the dependency. -::: - -#### Default Value For `source.disableShallow` -```yaml -disableShallow: false -``` - -### `source.cloneArgs` -The `source.cloneArgs` option expects an array of additional arguments that DevSpace will pass when cloning a git dependency using the `git clone` command. - -#### Default Value For `source.cloneArgs` -```yaml -cloneArgs: [] -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.16/configuration/dependencies/local-folder.mdx b/docs/versioned_docs/version-5.16/configuration/dependencies/local-folder.mdx deleted file mode 100644 index 8e4f935dd8..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/dependencies/local-folder.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Deploy Path-Based Local Dependencies -sidebar_label: "source.path" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: component-1 - source: - path: ./different/component-1 -- name: component-2 - source: - path: ./different/component-2 -deployments: -- name: use-dependency-image - helm: - componentChart: true - values: - containers: - - image: image(component-1.image1):tag(component-1.image1) -``` - -## `source` - -### `source.path` -The `source.path` option expects a string with a relative path to a folder that contains a `devspace.yaml` which marks a project that is a dependency of the project referencing it. - -#### Example: Local Project as Dependency -```yaml -dependencies: -- source: - path: ../other-project -- source: - path: ./different/subproject -``` -**Explanation:** -- Whenever you run `devspace deploy` or `devspace dev`, DevSpace will: - - Load the `devspace.yaml` files of both dependencies and resolve their dependencies respectively. - - Deploy both projects according to their `devspace.yaml` files. - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name. If not provided, `devspace.yaml` at the dependency `source.path` will be used. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file component-1/dev.yaml -# for the dependency's DevSpace configuration -dependencies: -- source: - path: component-1 - configName: dev.yaml -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.16/configuration/deployments/basics.mdx b/docs/versioned_docs/version-5.16/configuration/deployments/basics.mdx deleted file mode 100644 index bc80d1e7af..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/deployments/basics.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Deployments -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; - -Deployments are configured within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction - -- name: "deployment-2" # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml - -- name: "deployment-3" # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... - -- name: "deployment-4" # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction -``` - - - - -```yaml -deployments: -- name: database # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... -- name: backend # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - kustomize: true - manifests: - - app/kustomization/ -``` - - - - -:::info Sequential Deployment -Unlike images which are build in parallel, deployments will be deployed sequentially following the order in which they are specified in the `devspace.yaml`. -::: - -## Run Deployments -When you run one of the following commands, DevSpace will run the deployment process: -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger the deployment process: -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - -## Deployment Process -DevSpace loads the `deployments` configuration from `devspace.yaml` and builds one deployment after another in the order that they are specified in the `deployments` array. Additionally, DevSpace also deploys related projects speficied in `dependencies`. - - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - -
- ---- - -## Useful Commands - -### `devspace list deployments` -This command lists all deployments and their status: -```bash -devspace list deployments -``` - -### `devspace render` -This command prints all Kubernetes manifests that would be created when running `devspace deploy` or `devspace dev` but without actually deploying them to the cluster: -```bash -devspace render -``` -In case of Helm deployments, this command behaves similar to `helm install --dry-run --debug` - -:::info Image Building & Tag Replacement -This command will build images (if necessary) and update the tags within manifests and Helm chart values. -::: diff --git a/docs/versioned_docs/version-5.16/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-5.16/configuration/deployments/helm-charts.mdx deleted file mode 100644 index c1d554e150..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/deployments/helm-charts.mdx +++ /dev/null @@ -1,554 +0,0 @@ ---- -title: Deploy Helm Charts -sidebar_label: helm ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentInfoComponentChart from '../../fragments/info-component-chart.mdx'; - -To deploy Helm charts, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - - - - - - -```yaml {5,6} -deployments: -- name: backend - helm: - chart: - name: chart-name - repo: https://my-charts.company.tld/ - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - -```yaml {5} -deployments: -- name: backend - helm: - chart: - name: ./path/to/chart - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - - -## Chart - -### `componentChart` -The `componentChart` option expects a boolean which states if the Component Helm Chart should be used for deployment. - - - -:::warning -If `componentChart: true` is configured, all options under `chart` will be ignored. -::: - -#### Default Value for `componentChart` -```yaml -componentChart: false -``` - -#### Example: Component Chart Deployment -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - -### `chart.name` -The `name` option is mandatory and expects a string stating either: -- **a path to a local chart** that is stored on the filesystem -- **or the name of a remote chart** that is stored in a repository (one specified via [`repo` option](#chartrepo)) or in the form of `repo/name`, where `repo` was added via `helm repo add repo https://repo.url` beforehand - -DevSpace follows the same behavior as `helm install` and first checks if the path specified in `name` exists on the file system and is a valid chart. If not, DevSpace will assume that the `name` is not a path but the name of a remote chart located in a chart repository. - -#### Example: Simple Helm Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -``` - -### `chart.version` -The `version` option expects a string stating the version of the chart that should be used. - -#### Default Value for `version` -```yaml -version: "" -``` - -:::note Latest Version -If no version is specified, Helm will by default use the latest version of the chart. -::: - -#### Example: Custom Chart Version -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - version: "1.3.1" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --version="1.3.1" -``` - -### `chart.repo` -The `repo` option expects a string with a URL to a [Helm Chart Repository](https://helm.sh/docs/chart_repository/). This is equivalent of using the `--repo` flag in `helm install` - -#### Example: Custom Chart Repository -```yaml -deployments: -- name: database - helm: - chart: - name: custom-chart - repo: https://my-repo.tld/ -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database custom-chart --repo "https://my-repo.tld/" -``` - -### `chart.username` -The `username` option expects a string that specifies the user that should be used to access `chart.repo`. Will be used as value for the helm flag `--username` - -### `chart.password` -The `password` option expects a string that specifies the password that should be used to access `chart.repo`. Will be used as value for the helm flag `--password` - -## Values -Helm charts can be configured by overriding the default values of the chart. - -### `values` -The `values` option expects an object with values that should be overriding the default values of this Helm chart. - -Compared to the `valuesFiles` option, using `values` has the following advantages: -- It is easier to comprehend and faster to find (no references) -- It allows you to use [dynamic config variables](../../configuration/variables/basics.mdx) - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `values` -```yaml -values: {} -``` - -#### Example: Using Values in devspace.yaml -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - values: - mysqlRootPassword: ${MYSQL_ROOT_PASSWORD} - mysqlUser: db_user - mysqlDatabase: app_database -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --set mysqlRootPassword="$MYSQL_ROOT_PASSWORD" --set mysqlUser="db_user" --set mysqlDatabase="app_database" -``` - -### `valuesFiles` -The `valuesFiles` option expects an array of paths to yaml files which specify values for overriding the values.yaml of the Helm chart. - -Compared to the `values` option, using `valuesFiles` has the following advantages: -- It reduces the size of your `devspace.yaml` especially when setting many values for a chart -- It allows you to run Helm commands directly without DevSpace, e.g. `helm upgrade [NAME] -f mysql/values.yaml` - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `valuesFiles` -```yaml -valuesFiles: [] -``` - -#### Example: Using Values Files -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - valuesFiles: - - mysql/values.yaml - - mysql/values.production.yaml -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -f mysql/values.yaml -f mysql/values.production.yaml -``` - - -### `replaceImageTags` -The `replaceImageTags` option expects a boolean stating if DevSpace should do [Image Tag Replacement](../../configuration/deployments/basics.mdx#3-tag-replacement). - -By default, DevSpace searches all your values (specified via `values` or `valuesFiles`) for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - replaceImageTags: false -``` - - -## Helm Options - -### `upgradeArgs` -The `upgradeArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm upgrade` during deployment. - -### `templateArgs` -The `templateArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm template` during `devspace render`. - -### `deleteArgs` -The `deleteArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm delete` during `devspace purge`. - -### `wait` -The `wait` option expects a boolean that will be used for the [helm flag `--wait`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `wait` -```yaml -wait: false -``` - -#### Example: Helm Flag Wait -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - wait: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --wait -``` - -### `displayOutput` - -The `displayOutput` option expects a boolean and allows helm output to be printed to the console after `helm install` and `helm upgrade`. This can be used to display `notes.txt` from your helm charts. - -#### Default Value for `displayOutput` -```yaml -displayOutput: false -``` - -#### Example: displayOutput -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - displayOutput: true -``` - -**Explanation:** -Deploying the above example would print the helm output and the `notes.txt` from the bitnami/mysql chart. - - -### `timeout` -The `timeout` option expects an integer representing a number of seconds that will be used for the [helm flag `--timeout`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `timeout` -```yaml -timeout: 180 -``` - -#### Example: Helm Flag Timeout -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - timeout: 300 -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --timeout=300 -``` - -### `force` -The `force` option expects a boolean that will be used for the [helm flag `--force`](https://helm.sh/docs/helm/helm_upgrade). - -#### Default Value for `force` -```yaml -force: false -``` - -#### Example: Helm Flag Force -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - force: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --force -``` - -### `recreate` -The `recreate` option expects a boolean that states if DevSpace should set the Helm flag `--recreate-pods`. It tells Helm to restart all pods for applicable resources (e.g. Deployments). - -#### Default Value for `recreate` -```yaml -recreate: false -``` - -#### Example: Enable Recreate Pods -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - recreate: true -``` - -### `atomic` -The `atomic` option expects a boolean that states if DevSpace should pass the `--atomic` flag to Helm. If set, the upgrade process rolls back all changes in case the upgrade fails. This flag also sets the [`--wait` option](#wait). - -#### Default Value for `atomic` -```yaml -atomic: false -``` - -#### Example: Enable Atomic Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - atomic: true -``` - -### `cleanupOnFail` -The `cleanupOnFail` option expects a boolean that states if DevSpace should set the Helm flag `--cleanup-on-fail`. It allows that Helm deletes newly created resources during a rollback in case the rollback fails. - -#### Default Value for `cleanupOnFail` -```yaml -cleanupOnFail: false -``` - -#### Example: Enable Cleanup On Fail -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - cleanupOnFail: true -``` - -### `disableHooks` -The `disableHooks` option expects a boolean that tells DevSpace to disable hooks when executing Helm commands. - -#### Default Value for `disableHooks` -```yaml -disableHooks: false -``` - -#### Example: Disable Hooks -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - disableHooks: true -``` - -### `v2` -The `v2` option expects a boolean that tells DevSpace to use the legacy version 2 of Helm instead of Helm v3. - -#### Default Value for `v2` -```yaml -v2: false -``` - -### `tillerNamespace` -The `tillerNamespace` option expects a string that will be used for the [helm flag `--tiller-namespace`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning Deprecated -This config option is deprecated because Tiller is not necessary anymore since DevSpace supports Helm v3. -::: - -#### Default Value for `tillerNamespace` -```yaml -tillerNamespace: "" # defaults to default namespace of current context -``` - -#### Example: Change Tiller Namespace -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - tillerNamespace: my-tiller-ns - v2: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -# Helm v2 CLI -helm install --name database bitnami/mysql --tiller-namespace=my-tiller-ns -``` - - -### `path` -The `path` option is optional and expects a string with the path of an Helm v2 binary / executable file which should be used for Helm v2 deployments. - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning -Setting `path` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `helm` to your `$PATH` environment variable instead. -::: - - -## General Options - -### `name` -The `name` option is required and expects a string with the name of the release used to deploy this Helm chart. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the Helm chart to. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: database - namespace: some-namespace - helm: - chart: - name: bitnami/mysql -``` diff --git a/docs/versioned_docs/version-5.16/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-5.16/configuration/deployments/kubernetes-manifests.mdx deleted file mode 100644 index 033550ece8..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/deployments/kubernetes-manifests.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kubernetes Manifests -sidebar_label: kubectl (manifests) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kubernetes manifests with `kubectl apply`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -- name: frontend - kubectl: - manifests: - - frontend/manifest.yaml -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -f backend/ -kubectl apply -f backend-extra/ -kubectl apply -f frontend/manifest.yaml -``` - -:::note Kubectl -Deployments with `kubectl` require `kubectl` to be installed. If the `kubectl` binary cannot be found within the `$PATH` variable and it is not specified by specifying the [`cmdPath` option](#cmdpath), DevSpace will download the `kubectl` binary into the `$HOME/.devspace/bin` folder. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths or path globs that point to Kubernetes manifest files (yaml or json files) or to folders containing Kubernetes manifests or Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ - - glob/path/to/manifests/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `createArgs` -The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize create` to render the manifests using the default flags `--dry-run --output yaml --validate=false`. The actual deployment will be executed using `kubectl apply` after DevSpace has replaced the image tags within the rendered manifests in memory. -::: - -#### Default Value for `createArgs` -```yaml -createArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - createArgs: - - "--recursive" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.16/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-5.16/configuration/deployments/kustomizations.mdx deleted file mode 100644 index 74d10d7539..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/deployments/kustomizations.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kustomizations -sidebar_label: kubectl (kustomize) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kustomizations using `kustomize` / `kubectl apply -k`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml {4} -deployments: -- name: my-deployment - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -k my-kustomization/ -kubectl apply -k another-kustomization/ -``` - -:::warning Kubectl or Kustomize Required -Kustomization deployments require `kubectl` or `kustomize` to be installed. If both are available, DevSpace will use the `kustomize` binary by default. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths that point to directories containing Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `kustomizeArgs` -The `kustomizeArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kustomize build`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize build` to render the manifest templates. The actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `kustomizeArgs` -```yaml -kustomizeArgs: [] -``` - -#### Example: Custom Kustomize Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - kustomize: true - kustomizeArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kustomize build --timeout=10s --grace-period=30 -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.16/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-5.16/configuration/development/auto-reloading.mdx deleted file mode 100644 index cfb89112b9..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/auto-reloading.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Configure Auto-Reloading -sidebar_label: autoReload ---- - -There are certain use cases where you want to rebuild and redeploy the whole application instead of using the file synchronization and hot reloading. DevSpace provides you the options to specify special paths that are watched during `devspace dev` and any change to such a path will trigger a redeploy. - -Auto-reloading can be configured in the `dev.autoReload` section of `devspace.yaml`. -```yaml {19-26} -images: - backend: - image: john/devbackend - database: - image: john/database -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -- name: custom-manifests - kubectl: - manifests: - - manifests/ - - more/manifests/ -dev: - autoReload: - paths: - - ./package.json - - ./important-config-files/* - images: - - database - deployments: - - custom-manifests -``` - -Take a look at the [redeploy-instead-of-hot-reload exmaple](https://github.com/loft-sh/devspace/tree/master/examples/redeploy-instead-of-hot-reload) to see how to disable hot reloading at all and enable redeployment on every file change instead. - - -## Configuration - -### `paths` -The `paths` option expects an array of strings with paths that should be watched for changes. If a change occurs in any of the specified paths, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `images` -The `images` option expects an array of strings with image names from the `images` section of the `devspace.yaml`. If a change occurs to the `dockerfile` or to one of the files within the `context` of this image (if its context has changed), DevSpace will stop the development mode, rebuild the images, redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `deployments` -The `deployments` option expects an array of strings with names of deployments from the `deployments` section of the `devspace.yaml`. If a change occurs to any of the files that belong to this deployment, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -:::note Manifest Deployments -For `kubectl` deployments, DevSpace watches for all paths configured under `manifests`. -::: - -:::note Helm Chart Deployments -For `helm` deployments, DevSpace watches for changes in the `valuesFiles` or changes in the chart path of a local chart (configured as `chart.name`). -::: diff --git a/docs/versioned_docs/version-5.16/configuration/development/basics.mdx b/docs/versioned_docs/version-5.16/configuration/development/basics.mdx deleted file mode 100644 index b0116b8e6a..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/basics.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Development Mode -sidebar_label: Basics ---- - -import FragmentWarningMultipleDev from '../../fragments/warning-multiple-dev.mdx'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; -import FragmentNoteGeneralPurposeCommand from '../../fragments/note-general-purpose-command.mdx'; -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -## Why? -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. - -Kubernetes-based development can be useful in the following cases: -- Your applications needs to access cluster-internal services (e.g. Cluster DNS) -- You want to test your application in a production-like environment -- You want to debug issues that are hard to reproduce on your local machine - -The development experience is very similar to using `docker-compose`, so if you are already familiar on how to develop with `docker-compose`, DevSpace will behave very similar. One of the major benefits of DevSpace versus docker-compose is that DevSpace allows you to develop in any Kubernetes cluster, either locally using minikube, Docker Kubernetes etc. or in any remote Kubernetes cluster. - - -## Start Development Mode -Start the development mode using this command: -```bash -devspace dev -``` - - - -### Important Flags for `devspace dev` -The following flags are available for all commands that trigger image building: -- `-t / --terminal` starts a terminal to a container -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - - -## Development Process -The development process first runs the [deployment process](../../configuration/deployments/basics.mdx) (1. - 4.) and then continues with starting the development-specific features. - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - - -### 5. Start Port-Forwarding -DevSpace iterates over every item in the `dev.ports` array defined in the `devspace.yaml` and starts port-forwarding for each of the entries and the port mappings they define in the `forward` section. - -:::note -Before starting the actual port-forwarding threads, DevSpace waits until the containers and services are ready. -::: - -:::info -Port-Fowarding allows you to access your containers and Kubernetes services via localhost. -::: - -For detailed logs about the port-forwarding, take a look at `.devspace/logs/portforwarding.log`. - - -### 6. Start File Synchronization -DevSpace iterates over every item in the `dev.sync` array defined in the `devspace.yaml` and starts a bi-directional, real-time code synchronization for each of the entries and the path mappings they define. - -:::note Initial Sync -Right after starting the file synchronization, DevSpace runs the so-called initial sync which quickly computes the differences between your local folders and the remote container filesystems. If DevSpace detects changes, it synchronizes them first to get a clean state before starting the real-time synchronization which is invoked every time a file changes. -::: - -For detailed logs about the file synchronzation, take a look at `.devspace/logs/sync.log` for the current session and `.devspace/logs/sync.log.old` for previous logs. - - -### 7. Stream Logs or Open Terminal -DevSpace provides two options to develop applications in Kubernetes: -- using multi-container log streaming (default) -- using an interactive terminal session (run `devspace dev -i`) - -:::note Multi-Container Log Streaming (default) -The first option starts your application as defined in your Dockerfile or in your Kubernetes pod definition. After the pods are started, DevSpace streams the logs of all containers that are started with an image that was built during the image building process. Each log line is prefixed with the image name or alternatively with the pod name of the container. Before starting the actual log streaming, DevSpace prints the last 50 log lines of each container by default. - -Learn how to [customize which containers should be included in the log stream and how many log lines should be shown in the beginning](../../configuration/development/log-streaming.mdx). -::: - -:::note Terminal Session -To start a terminal mode, run: -```bash -devspace dev -t -``` -Instead of starting the multi-container log streaming, you can also start development mode using a terminal session. - -Terminal is configurable by [using the `dev.terminal` configuration section](../../configuration/development/terminal.mdx). -::: - -### 8. Open Links (optional) -DevSpace iterates over every item in the `dev.open` array defined in the `devspace.yaml` and tries to open the URL you provide for each item using the following method: - - - -Learn more about [configuring auto-opening links](../../configuration/development/open-links.mdx). - - - -## Useful Commands - -### `devspace enter` -The command `devspace dev -t` starts a terminal but it also starts port-forwarding and file synchronization which can only be opened once. However, you often need additional terminal sessions. To open a simple terminal session without starting port-forwarding and file sync, run the following command: -```bash -devspace enter -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace logs [-f]` -If you want to print or stream the logs of a single container, run: -```bash -# Print logs -devspace logs - -# Stream logs -devspace logs -f -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace sync` -If you want to start code synchronization on-demand (and even outside a DevSpace project), you can run commands like the ones shown here: -```bash -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace open` -To view your project in the browser either via port-forwarding or via ingress (domain), run the following command: -```bash -devspace open -``` -When DevSpace asks you how to open your application, you have two options as shown here: -```bash -? How do you want to open your application? - [Use arrows to move, space to select, type to filter] -> via localhost (provides private access only on your computer via port-forwarding) - via domain (makes your application publicly available via ingress) -``` -To use the second option, you need to make sure that the DNS of your domain points to your Kubernetes cluster and that you have an ingress-controller running in your cluster. - -:::info Automatic Error Analytics -If your application does not open as exepected, run [`devspace analyze` and DevSpace will try to identify the issue](#devspace-analyze). -::: - - -### `devspace analyze` -If your application is not starting as expected or there seems to be some kind of networking issue, you can let DevSpace run an automated analysis of your namespace using the following command: -```bash -devspace analyze -``` -After analyzing your namespace, DevSpace compiles a report with potential issues, which is a good starting point for debugging and fixing issues with your deployments. - - -### `devspace list commands` -DevSpace allows you to share commands for common development tasks which can be executed with `devspace run [command-name]`. To get a list of available commands, run: -```bash -devspace list commands -``` -Learn how to [configure shared commands for `devspace run`](../../configuration/commands/basics.mdx). - - -### `devspace list deployments` -To get a list of all deployments as well as their status and other information, run the following command: -```bash -devspace list deployments -``` - - -### `devspace purge` -If you want to delete a deployment from Kubernetes you can run: -```bash -# Removes all deployments remotely -devspace purge -# Removes deployment with given name -devspace purge --deployments=my-deployment-1,my-deployment-2 -``` - -:::warning -Purging a deployment does not remove it from the `deployments` section in the `devspace.yaml`. It just removes the deployment from the Kubernetes cluster. To remove a deployment from `devspace.yaml`, run `devspace remove deployment [NAME]`. -::: - -### `devspace update dependencies` -If you are using dependencies from other git repositories, use the following command to update the cached git repositories of dependencies: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.16/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-5.16/configuration/development/file-synchronization.mdx deleted file mode 100644 index f9a3ede49f..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/file-synchronization.mdx +++ /dev/null @@ -1,793 +0,0 @@ ---- -title: Configure File Synchronization -sidebar_label: sync ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -The code synchronization feature of DevSpace allows you to use hot reloading during development. Especially when using programming languages and frameworks that support hot reloading with tools like nodemon, re-building and re-deploying containers is very annoying and time consuming. Therefore, DevSpace uses a smart syncing mechanism that is able to sync local file changes to remote containers directly without the need of rebuilding or restarting the container. - -When starting the development mode, DevSpace starts the file sync as configured in the `dev.sync` section of the `devspace.yaml`. -```yaml {15-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - sync: - - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -``` - -:::info Start Sync Only -To only start the file sync without the other functions of the development mode, use `devspace sync` or `devspace sync --config=devspace.yaml` (to load the config). -::: - -Every sync configuration consists of two essential parts: -- [Pod/Container Selection](#podcontainer-selection) -- [Sync Path Mapping via `localSubPath` and `containerPath`](#sync-path-mapping) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this sync configuration. This can be used as a steady identifier when using profile patches or when targeting this sync configuration with the before or after initial sync hook. - -For example: -```yaml {3} -dev: - sync: - - name: devbackend - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -hooks: -- command: | - /app/rebuild.sh - when: - after: - initialSync: devbackend - where: - container: - imageSelector: john/devbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which the file synchronization should be established to: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Auto Reconnect -If the sync is unable to establish a connection to the selected container or loses it after starting the sync, DevSpace will try to restart the sync several times. -::: - -### `imageSelector` - - -#### Example: Select Container by Image -```yaml -vars: - - name: backend-image - value: john/devbackend - - name: backend-debugger-image - value: john/debugger -images: - backend: - image: ${backend-image} - backend-debugger: - image: ${backend-debugger-image} -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: ${backend-image} - - name: container-1 - image: ${backend-debugger-image} -dev: - sync: - - imageSelector: ${backend-image} - excludePaths: - - node_modules/ - - logs/ - - imageSelector: ${backend-debugger-image} - localSubPath: ./debug-logs - containerPath: /logs -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` or `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first sync configuration in the `dev.sync` section references the same image as `images.backend`. That means DevSpace would select the first container for file synchronization, that would match `john/devbackend:tag(backend)`, where `tag(backend)` is the last built tag of `images.backend` -- The first sync configuration does not define `localSubPath`, so it defaults to the project's root directory (location of `devspace.yaml`). -- The first sync configuration does not define `containerPath`, so it defaults to the container's working directory (i.e. `WORKDIR`). -- The `imageSelector` option of the second sync configuration in the `dev.sync` section references the same image as `images.backend-debugger`. That means DevSpace would select the second container for file synchronization, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following sync processes would be started when using the above config example assuming the local project root directoy `/my/project/`: - -1. `localhost:/my/project/` forwards to `container-0:$WORKDIR` **\*** -2. `localhost:/my/project/debug-logs/` forwards to `container-1:/logs` - -**\* Changes on either side (local and container filesystem) that occur within the sub-folders `node_modules/` and `logs/` would be ingored.** - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - sync: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - containerName: container-0 - localSubPath: ./src - containerPath: /app/src -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because the selected pod has two containers, we also need to specify the `containerName` option which defines the container that should be used for the file synchronization. - - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -#### Example -**See "[Example: Select Container by Label](#example-select-container-by-label)"** - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - - -
- -## Sync Path Mapping - -### `localSubPath` -The `localSubPath` option expects a string with a path that is relative to the location of `devspace.yaml`. - -#### Default Value For `localSubPath` -```yaml -localSubPath: ./ # Project root directory (folder containing devspace.yaml) -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -### `containerPath` -The `containerPath` option expects a string with an absolute path on the container filesystem. - -#### Default Value For `containerPath` -```yaml -containerPath: $WORKDIR # working directory, set as WORKDIR in the Dockerfile -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -
- -## Exclude Paths -The config options for excluding paths use the same syntax as `.gitignore`. - -:::note -An exclude path that matches a folder recursively excludes all files and sub-folders within this folder. -::: - -### `excludePaths` -The `excludePaths` option expects an array of strings with paths that should not be synchronized between the local filesystem and the remote container filesystem. - -#### Default Value For `excludePaths` -```yaml -excludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example: Exclude Paths from Synchronization -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ - downloadExcludePaths: - - tmp/ -``` -**Explanation:** -- Files in `logs/` and in `more/logs/` would not be synchronized at all. -- Files in `node_modules/` would only be synchronized from the container to the local filesystem but not the other way around. -- Files in `tmp/` would only be synchroniyed from the local to the container filesystem but not the other way around. - -#### Example: Only Sync Specific Folders -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - '**' - - '!/my-folder-1/' - - '!/my-folder-2/' -``` -**Explanation:** -- All files will be excluded except those in folders `./my-folder-1/` and `./my-folder-2/` - -### `excludeFile` -The `excludeFile` option expects a path to a file from which the exclude paths can be loaded. Once loaded, the behavior is identical to the `excludePaths` option. This is useful for sharing a common list of exclude paths between many components. The earlier example, [Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization), can be converted to files as follows: - -#### Example: Exclude Paths from Synchronization using files -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludeFile: .gitignore - uploadExcludeFile: upload.gitignore - downloadExcludeFile: download.gitignore -``` - -#### Example: `.gitignore` -``` -log/ -more/logs/ -``` - -#### Example: `upload.gitignore` -``` -node_modules/ -``` - -#### Example: `download.gitignore` -``` -tmp/ -``` - -### `downloadExcludePaths` -The `downloadExcludePaths` option expects an array of strings with paths that should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludePaths` -```yaml -downloadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `downloadExcludeFile` -The `downloadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludeFile` -```yaml -downloadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -### `uploadExcludePaths` -The `uploadExcludePaths` option expects an array of strings with paths that should not be synchronized from the local filesystem to the remote container filesystem. - -:::info -This option is often useful if you want to download a dependency folder (e.g. `node_modules/`) for code completion but you never want to upload anything from there because of compiled binaries that are not portable between local filesystem and container filesystem (e.g. when your local system is Windows but your containers run Linux). -::: - -#### Default Value For `uploadExcludePaths` -```yaml -uploadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `uploadExcludeFile` -The `uploadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the local filesystem to the remote container filesystem. - -#### Default Value For `uploadExcludeFile` -```yaml -uploadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -
- -## Post-Sync Commands -Sometimes it is useful to execute commands after the sync downloads or uploads files/directories between container and local filesystem. - -:::warning -Make sure that post-sync commands will **not** trigger a new sync process which could lead to an **endless loop**. -::: - -### `onUpload.restartContainer` -The `restartContainer` option expects a boolean which defines if DevSpace should restart the container every time either a single file or even a batch of files have been uploaded to the container using file sync. - -:::caution Restart Helper Required -Setting `restartContainer: true` requires to set `injectRestartHelper: true` for the image that is used to run the affected container. Otherwise, this option does not have any effect. -::: - -:::note When not to use this option -Using `restartContainer: true` is most useful if your application runs based on a compiled language and you are **not** using a framework or language specific tool which provides hot reloading capabilities. If you are using tools like nodemon or frameworks like React, Rails or Flask, they allow you to enable hot reloading which may be much faster than restarting the entire container. In this case you should disable `restartContainer`. -::: - -#### Example: Enable Container Restart -```yaml {4,16} -images: - backend: - image: john/devbackend - injectRestartHelper: true -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - restartContainer: true -``` - - -### `onUpload` -The `onUpload` option defines command(s) that should be executed after a file/directory was uploaded from the local filesystem to the container. - -#### Example: Post-Upload Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - execRemote: # These post-sync commands will be executed inside the affected container - command: chmod # Command to execute for files and folders - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onFileChange: # Command to execute ONLY for files - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onDirCreate: # Command to execute ONLY for newly created directories - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onBatch: # Command to execute after sync has processed a full batch of files and folders - command: recompile - args: # NOTE: {} is NOT available for onBatch - - assets - - --minify -``` - -### `onDownload` -The `onDownload` option defines command(s) that should be executed after a file/directory was downloaded from the container to the local filesystem. - -#### Example: Post-Download Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onDownload: - execLocal: # These post-sync commands will be executed on the local dev machine - command: chmod # Command to execute for files and folders - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onFileChange: # Command to execute ONLY for files - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory - onDirCreate: # Command to execute ONLY for newly created directories - command: chmod - args: - - +x - - {} # {} will be replaced with the path of the synced file/directory -``` - - -
- -## One-Directional Sync -These flags allow for local or remote container filesystems to be ignored during synchronization. - -### `disableDownload` -The `disableDownload` option expects a boolean which enables/disables all synchronization from the remote container filesystem to the local filesystem. - -#### Default Value For `disableDownload` -```yaml -disableDownload: false # Do not ignore remote container files during synchronization -``` - -#### Example: Synchronize Local Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableDownload: true - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ -``` - -### `disableUpload` -The `disableUpload` option expects a boolean which enables/disables all synchronization from the local filesystem to the remote container filesystem. - -#### Default Value For `disableUpload` -```yaml -disableUpload: false # Do not ignore local files during synchronization -``` - -#### Example: Synchronize Remote Container Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableUpload: true - excludePaths: - - logs/ - - more/logs/ - downloadExcludePaths: - - tmp/ -``` - - -
- -## Initial Sync - -### `initialSync` -The `initialSync` option expects a string with an initial sync strategy. The following strategies are available: - -#### • `mirrorLocal` mirrors the local filesystem inside the container (default) - -1. deletes all files inside the conainer that are not existing on the local filesystem -2. uploads all files which are existing on the local filesystem but are missing within the container -3. resolves all file conflicts (different content on local filesystem than in inside the container) by preferring the file on the local filesystem (i.e. all files in the container will be replaced if they are different than on the local filesystem) - -#### • `preferLocal` is like `mirrorLocal` but skips step 1. - -#### • `mirrorRemote` mirrors the container files to the local filesystem: - -1. deletes all files on the local filesystem that are not existing inside the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the file within the container (i.e. all files on the local filesystem will be replaced if they are different than inside the container) - -#### • `preferRemote` is like `mirrorRemote` but skips step 1. - -#### • `preferNewest` merges local and remote filesystem while resolving all conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the newest file (i.e. compares last modified timestamps and replaces all outdated files) - -#### • `keepAll` merges local and remote filesystem without resolving any conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem - -#### Default Value For `initialSync` -```yaml -initialSync: mirrorLocal -``` - -#### Example: Configuring Initial Sync -```yaml {19} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - node_modules/* - - imageSelector: john/devbackend - localSubPath: ./node_modules/ - containerPath: /app/node_modules/ - initialSync: preferRemote -``` -**Explanation:** -With this configuration, `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- The first sync config section would synchronize all files except files within `node_modules/`. This means that during initial sync, all remote files that are not existing locally would be deleted and other files would be updated to the most recent version. -- The second sync config section would only synchronize files within `node_modules/` and because of `initialSync: preferRemote`, DevSpace would download all remote files which are not present on the local filesystem and override all local files which are different than the files within the container. - - -### `waitInitialSync` -The `waitInitialSync` option expects a boolean which defines if DevSpace should wait until the initial sync process has terminated before opening the container terminal or the multi-container log streaming. - -#### Default Value For `waitInitialSync` -```yaml -waitInitialSync: false # Start container terminal or log streaming before initial sync is completed -``` - -#### Example: Wait For Initial Sync To Complete -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - waitInitialSync: true -``` -**Explanation:** -With the configuration `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- After the initial sync process is finished, DevSpace starts the multi-container log streaming. - - -
- -## Network Bandwidth Limits -Sometimes it is useful to throttle the file synchronization, especially when large files or a large number of files are expected to change during development. The following config options provide these capabilities: - -### `bandwidthLimits.download` -The `bandwidthLimits.download` option expects an integer representing the max file download speed in KB/s, e.g. `download: 100` would limit the file sync to a download speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example: Limiting Network Bandwidth -```yaml {14-16} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - bandwidthLimits: - download: 200 - upload: 100 -``` -**Explanation:** -- Downloading files from the container to the local filesystem would be limited to a transfer speed of `200 KB/s`. -- Upload files from the local filesystem to the container would be limited to a transfer speed of `100 KB/s`. - -### `bandwidthLimits.upload` -The `bandwidthLimits.upload` option expects an integer representing the max file upload speed in KB/s, e.g. `upload: 100` would limit the file sync to a upload speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example -**See "[Example: Limiting Network Bandwidth](#example-limiting-network-bandwidth)"** - -## Advanced Options - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. - -### `polling` - -Polling specifies if the DevSpace helper should traverse over all watched files and folders periodically in the container to identify file changes. By default, DevSpace will use [inotify](https://man7.org/linux/man-pages/man7/inotify.7.html) to detect changes which is more efficient, however sometimes it might be unsupported or not feasible in certain situations, in which polling might be preferred. - -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - polling: true -``` - -:::info -Polling might increase CPU consumption of the container drastically, depending on the amount of files and folders watched -::: - -:::info -If you are using a DevSpace config version below `v1beta10`, polling will be enabled by default, as it was the default syncing method in older DevSpace versions -::: - -## Useful Commands - -### `devspace sync` -If you want to start file synchronzation on-demand without having to configure it in `devspace.yaml` and without starting port-forwarding or log streaming etc, you can use the `devspace sync` command as shown in the examples below: -```bash -# Select pod with a picker -devspace sync --local-path=subfolder --container-path=/app - -# Select pod and container by name and use current working directory as local-path -devspace sync --pod=my-pod --container=my-container --container-path=/app -``` - - - -## FAQ - -
-How does the sync work? - -
- -DevSpace establishes a bi-directional code synchronization between the specified local folders and the remote container folders. It automatically recognizes any changes within the specified folders during the session and will update the corresponding files locally and remotely in the background. It uses a small helper binary that is injected into the target container to accomplish this. - -The algorithm roughly works like this: - -1. Inject a small helper binary via `kubectl cp` into the target container -2. Run initial sync accoring to the [`initialSync` config option](#initial-sync) -3. Watch for file changes on both sides (local and remote) and sync them according to the [sync path mappings](#sync-path-mapping) -4. After every sync process, [restart the container](#onuploadrestartcontainer) or run other custom [post-sync commands](#post-sync-commands) (optional) - -
- -
- -
-Are there any requirements for the sync to work? - -
- -The `tar` command has to be present in the container otherwise `kubectl cp` does not work and the helper binary cannot be injected into the container. - -Other than that, no server-side component or special container privileges for code synchronization are required, as the sync algorithm runs completely client-only within DevSpace. The synchronization mechanism works with any container filesystem and no special binaries have to be installed into the containers. File watchers running within the containers like nodemon will also recognize changes made by the synchronization mechanism. - -
- -
- -
-What is the performance impact on using the file sync? - -
- -The sync mechanism is normally very reliable and fast. Syncing several thousand files is usually not a problem. Changes are packed together and compressed during synchronization, which improves performance especially for transferring text files. Transferring large compressed binary files is possible, but can affect performance negatively. Remote changes can sometimes have a delay of 1-2 seconds till they are downloaded, depending on how big the synchronized folder is. It should be generally avoided to sync the complete container filesystem. - -
- -
diff --git a/docs/versioned_docs/version-5.16/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-5.16/configuration/development/log-streaming.mdx deleted file mode 100644 index a8725c3b02..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/log-streaming.mdx +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Configure Log Streaming -sidebar_label: logs ---- - -By default, DevSpace streams the logs of all containers that use one of the images defined in the `images` section of the `devspace.yaml`. - -To control which container logs should be streamed, you can configure the `dev.logs` section in the `devspace.yaml`. -```yaml {9-17} -images: - frontend: - image: gcr.io/my-org/appfrontend - backend: - image: john/appbackend - database: - image: john/database -dev: - logs: - showLast: 200 - # To display the sync log as well - sync: true - selectors: - - imageSelector: john/appbackend - - imageSelector: john/database -``` - -DevSpace will continously check what pods match the given selectors and start or end log streaming accordingly. - -## Configuration - -### `selectors` - -DevSpaces allows log streaming from pods and containers based on label or image selectors. You can configure them under the option `selectors`. - -```yaml -dev: - logs: - selectors: - # Selects all pods with the given label selectors and streams the logs to the console - - labelSelector: - abc: def - containerName: optional - namespace: optional - - labelSelector: - other: selector - - imageSelector: nginx - namespace: optional -``` - -### `sync` -The `sync` option expects an boolean which defines if the sync log should be merged with the pod and container logs. By default this option is true. - -### `showLast` -The `showLast` option expects an integer which defines how many log lines DevSpace will print for each container before starting to stream the container's logs in real-time. - -#### Default Value For `showLast` -```yaml -showLast: 50 -``` - -#### Example: Show Last 200 Log Lines -```yaml {22} -images: - frontend: - image: john/appfrontend - backend: - image: john/appbackend -deployments: -- name: app-frontend - helm: - componentChart: true - values: - containers: - - image: john/appfrontend -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - showLast: 200 -``` -**Explanation:** -- The above example defines 2 images and 2 deployments. -- DevSpace would stream the logs of: - - The container of deployment `app-frontend` because the image is `john/appfrontend` = `images.frontend.image` - - Only the first container of deployment `app-backend` because the image is `john/appbackend` = `images.backend.image` -- For each of the two containers, DevSpace would print the last 200 log lines before starting to stream the logs - - -### `disabled` -The `disabled` option expects a boolean which defines if DevSpace should start multi-container log streaming when running `devspace dev` or if DevSpace should just start other services (e.g. port-forwarding and sync) without starting the log stream. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disable Log Streaming -```yaml {14} -images: - backend: - image: john/appbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - disabled: true -``` diff --git a/docs/versioned_docs/version-5.16/configuration/development/open-links.mdx b/docs/versioned_docs/version-5.16/configuration/development/open-links.mdx deleted file mode 100644 index 41c1af1852..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/open-links.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Open Links in Browser -sidebar_label: open ---- - -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -DevSpace allows you to define URLs that should open after deploying an application in development mode, i.e. using `devspace dev`. - -The configuration for automatically opening URLs can be found in the `dev.open` section of `devspace.yaml`. -```yaml -dev: - open: - - url: http://localhost:3000/ - - url: http://localhost:8089/ # DevSpace UI -``` - -:::note -Setting `dev.open` only affects `devspace dev`. To open your application after running `devspace deploy`, run `devspace open`. -::: - - -## Workflow - - - -## Configuration - -### `open` -The `open` option expects an array of auto-open configurations with exactly one of the following properties: -- `url` to open a URL in the default browser - -#### Default Value For `open` -```yaml -open: [] -``` - -#### Example: Open URL when Starting Dev Mode -```yaml -dev: - open: - - url: http://localhost:3000/login -``` -**Explanation:** -Running `devspace dev` using the above configuration would do the following: -- Build images and deploy the application -- Start port-forwarding and code-synchronization -- DevSpace opens the browser with URL `http://localhost:3000/login` diff --git a/docs/versioned_docs/version-5.16/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-5.16/configuration/development/port-forwarding.mdx deleted file mode 100644 index 544462d6c3..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/port-forwarding.mdx +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: Configure Port-Forwarding -sidebar_label: ports[].forward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -Port-forwarding allows you to access your application on `localhost:[PORT]` by forwarding the network traffic from a localhost port to a specified port of a container. - -When starting the development mode, DevSpace starts port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {15-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -``` - -:::warning Unique Local Port -The `port` option must be unique across your entire `ports` section, e.g. you can only use the value `8080` once for the `port` option in your `ports` section. -::: - -Every port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-forward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this port-forwarding configuration. This can be used as a steady identifier when using profile patches. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod Selection -The following config options are needed to determine the pod to which the traffic should be forwarded: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a port-forwarding connection to the selected pod or loses it after starting the port-forwarding, DevSpace will try to restart port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - forward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageName` option of the second port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following port-forwarding processes would be started when using the above config example: -- `localhost:8080` forwards to `container-0:80` -- `localhost:3000` forwards to `container-1:3000` - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - forward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `forward` -The `forward` section defines which localhost `port` should be forwarded to the `remotePort` of the selected container. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` diff --git a/docs/versioned_docs/version-5.16/configuration/development/replace-pods.mdx b/docs/versioned_docs/version-5.16/configuration/development/replace-pods.mdx deleted file mode 100644 index fc8c8e76a2..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/replace-pods.mdx +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Replacing Pods for Development -sidebar_label: replacePods ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -`replacePods` gives you the option to exchange an already running or just deployed pod with a modified version. This is especially useful if you: - -- Need to configure or disable an option on a pod which is not configurable via your helm chart or manifests -- Do not want to use DevSpace for your pipeline and instead only want to use DevSpace for development -- Want to debug a setup in an already deployed app by exchanging a single pod temporarily with modifications - -For example: -```yaml -vars: -- name: IMAGE - value: idonotexist:neverexisted -deployments: -- name: my-app - helm: - componentChart: true - values: - containers: - - image: ${IMAGE} -dev: - # DevSpace will try to find a pod with the given image selector. If found (even if its currently in a failed state) - # DevSpace will copy the pod, scale down the owning ReplicaSet, Deployment or StatefulSet - # and create the new modified pod in the cluster. - replacePods: - - imageSelector: ${IMAGE} - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - # This will create a terminal to the replaced pod - terminal: - imageSelector: ${IMAGE} - # This will sync to the replaced pod's working directory - sync: - - imageSelector: ${IMAGE} -``` - -## How does it work? - -Each entry that you specify under `dev.replacePods` will tell DevSpace to search for a pod that should be replaced with the given configuration. If DevSpace finds a pod to replace, it does the following things: -- Copy the pod.metadata and pod.spec of the already running pod -- Scale down the owning ReplicaSet, Deployment or StatefulSet replicas to 0 -- Apply the patches to the copied pod -- Create the copied pod in the cluster - -Within the `dev` part of DevSpace, replacing pods is the first step that is executed, which means that all other services such as port-forwarding, sync, log streaming or terminal forwarding will wait until DevSpace has either replaced the pods or already found replaced pods. The services will then target the newly created patched pod instead of the old one. - -:::note -DevSpace will automatically recognize changes to the parent Deployment, ReplicaSet or StatefulSet and apply them to the replaced pod automatically in the next run. -::: - -## Pod/Container Selection -The following config options are needed to determine the container which should be replaced: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -### `imageSelector` - - -#### Example: Select Container by Image Selector -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend -dev: - replacePods: - - imageSelector: john/devbackend - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - terminal: - imageSelector: john/devbackend -``` - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: idontexist -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - sync: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Pod Modifications - -### `replaceImage` - -`replaceImage` expects a string with the new image name (inclusive tag) that should be used for the selected pod. For example: `replaceImage: my-repo/my-debug-image:1.0`. In addition, DevSpace will also replace the following things: - -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `xApsTn` - -### `patches` - -`patches` define more generic patches that should be applied to the pod. You can basically modify anything in the pod here. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as implemented by the [yaml-patch](https://github.com/krishicks/yaml-patch) library. - -The `patches` option expects a patch object which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the pod (e.g. `metadata.annotations`, `spec.containers.name=backend.env`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `metadata.annotations`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `spec.containers`), you have two options: - -1. Use the index of the array item you want to patch, e.g. `spec.containers[0]` -2. Use a property selector matching the array item(s) you want to patch, e.g. `spec.containers.name=backend` - -Using a property selector is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A property selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -#### Example: Overwrite command and args of a pod -```yaml -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] -``` - -## Reset replaced pods - -If you want to reset replaced pods and revert the cluster state to before, you can run -``` -devspace reset pods -``` diff --git a/docs/versioned_docs/version-5.16/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-5.16/configuration/development/reverse-port-forwarding.mdx deleted file mode 100644 index fb4cade42e..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/development/reverse-port-forwarding.mdx +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Configure Reverse Port-Forwarding -sidebar_label: ports[].reverseForward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -Reverse port-forwarding allows you to forward traffic from within your containers to your local machine. This can be useful when: -- using certain remote debuggers that connect to your IDE instead of the other way around -- developing a service on localhost which should be accessed from other services that run within the cluster, i.e. using the [Telepresence development model](https://www.telepresence.io/discussion/why-telepresence) but with DevSpace to get better performance and cross-platform support - -With reverse port-forwarding, you can access `localhost:[PORT]` inside the container and it will redirect to a program that runs on your local dev machine. - -When starting the development mode, DevSpace starts reverse port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {20-23} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - reverseForward: - - port: 5678 - remotePort: 5678 - - port: 3303 -``` - -:::warning Unique Remote Port -The `remotePort` option must be unique across your entire `ports` section for all selectors that match the same pods, e.g. you can only use the value `8080` once for the `remotePort` option in your `ports` section unless multiple port mappings target different pods. -::: - -Every reverse port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-reverseforward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this reverse port-forwarding configuration. This can be used as a steady identifier when using profile patches. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - - -## Pod Selection -The following config options are needed to determine the pod from which the traffic should be forwarded to localhost: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a reverse port-forwarding connection to the selected pod or loses it after starting the reverse port-forwarding, DevSpace will try to restart reverse port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - reverseForward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first reverse port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for reverse port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageSelector` option of the second reverse port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for reverse port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following reverse port-forwarding processes would be started when using the above config example: -- `localhost:80` inside the container will forward to `localhost:8080` on your local machine -- `localhost:3000` inside the container will forward to `localhost:3000` on your local machine - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - reverseForward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `containerName` -The `containerName` option expects a string with the name of the container to use within the pod selected by `labelSelector`. This option is not required if `imageName` is used or there is only one container inside the selected pod. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `reverseForward` -The `reverseForward` section defines which `remotePort` inside the selected container should be forwarded to the `port` on your local machine. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` - -## Container Architecture - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. diff --git a/docs/versioned_docs/version-5.16/configuration/env-file.mdx b/docs/versioned_docs/version-5.16/configuration/env-file.mdx deleted file mode 100644 index d196a4fc62..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/env-file.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Environment Variable File -sidebar_label: .env ---- - -Besides reading environment variables available in your terminal session, DevSpace also reads environment variables from the `.env` file inside your project. The syntax of the `.env` file is the [same as for docker-compose](https://docs.docker.com/compose/env-file/): - -- Each line should have the format `VAR_NAME=VAR_VALUE`. -- **There is *no* special handling of quotation marks. This means that they are part of the `VAR_VALUE`.** -- Lines beginning with # are processed as comments and ignored. - -## Precedence -- Environment variables defined in your terminal session (including system variables) always take precendence over the variables in your `.env` file. -- Variables defined in your `.env` file take precende over the default values defined for config variables (configured in the `vars` section of `devspace.yaml`). - -## Define Default Flags -A common use case for the `.env` file is to set default flags for the `devspace` commands such as `devspace dev` or `devspace deploy`. You can define the following environment variables to set default flags: -- `DEVSPACE_FLAGS` for global flags that should be added to each commands (e.g. `DEVSPACE_FLAGS=-s -p dev`) -- `DEVSPACE_[COMMAND]_FLAGS` to add default flags for single commands (e.g. `DEVSPACE_DEV_FLAGS=-s --verbose-dependencies`) - -:::note Overriding Default Flags -Specifying flags for a command will override the default flags, e.g. if `DEVSPACE_FLAGS=-s -p dev` is configured and you run `devspace dev -p production`, the following command would be executed: `devspace dev -s -p production` -::: - -#### Example: Setting Default Flags for DevSpace -```bash -# File: .env -DEVSPACE_FLAGS=-s -p dev -DEVSPACE_DEV_FLAGS=-s --verbose-dependencies -``` diff --git a/docs/versioned_docs/version-5.16/configuration/expressions.mdx b/docs/versioned_docs/version-5.16/configuration/expressions.mdx deleted file mode 100644 index 85f5f7e61f..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/expressions.mdx +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Config Expressions -sidebar_label: $(expression) ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Config expressions are a powerful feature to load the `devspace.yaml` in a more dynamic way. A config expression works by specifying `$( my bash expression )` instead of a field and the stdout of the bash expression is taken as value for the option or complete section. Config expressions are evaluated after variables and profiles are applied to the config and can change parts of the config. - - - - -Load a deployment specification from file: -```yaml -deployments: - - $(cat deployment.yaml) -``` - - - - -You can use either inline or multi-line if else: -```yaml -deployments: - -# Inline If-Else -- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" ) - -# Multi-Line If-Else -- |- - $( - if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then - cat minikube.yaml - else - echo "" - fi - ) -``` - - - - -Disable image building during `devspace dev`: -```yaml -images: - deploy: - build: - disabled: $( [ $1 == "dev" ] && echo "true" || echo "false" ) -``` - - - - -Add sync path if profile is "debug" - -```yaml -dev: - sync: - - |- - $( - if [ "${DEVSPACE_PROFILE}" == "debug" ]; then - syncConfig=" - imageSelector: test - excludePaths: - - test - - test2 - " - - echo "$syncConfig" - else - echo "" - fi - ) -``` - - - - -Generate a whole section through a script: -```yaml -dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE}) -``` - - - - -Since json is a subset of yaml, you can also return regular json in a expression: -```yaml -images: - test: - image: my-image/image - build: '$( echo {"disabled": true} )' -``` - - - - -By default, DevSpace will try to convert the stdout to a number, bool or yaml value, however you can also force the return value to be a string by using `$!()`: -```yaml -deployments: - - name: quickstart - helm: - componentChart: true - values: - labels: - test: '$!(echo true)' -``` - - - - -:::info -Expressions are run in a golang shell that is syntax compatible to a regular POSIX shell and works on all operating systems. Check the [github repository](https://github.com/mvdan/sh/blob/master/interp/builtin.go#L23) for a complete list of available commands -::: - -:::info -Variables are resolved before and after applying expressions, which means that you can load a section from file within an expression that contains a variable which will still be resolved afterwards. -::: - -### Testing Config Expressions - -The command `devspace print` can be used to test your config expressions and shows the config after all profiles, variables and expressions were applied. diff --git a/docs/versioned_docs/version-5.16/configuration/hooks/basics.mdx b/docs/versioned_docs/version-5.16/configuration/hooks/basics.mdx deleted file mode 100644 index 655e0349cb..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/hooks/basics.mdx +++ /dev/null @@ -1,266 +0,0 @@ ---- -title: Hooks -sidebar_label: hooks ---- - -DevSpace allows you to define certain actions that should be executed during the pipeline. This makes it possible to customize the deployment and development process with DevSpace. The following actions can be executed with hooks: -- Execute a command on the local machine (in a golang shell or directly on the system) -- Execute a command in a container -- Upload a file or folder into a container -- Download a file or folder from a container -- Wait for a container to start or terminate -- Print the logs of container - -Hooks can be defined in the `hooks` section of `devspace.yaml`: -```yaml -hooks: -# Execute the hook in a golang shell (cross operating system compatible) -- command: "echo before image building" - events: ["before:build"] -# Execute the hook in a golang shell (cross operating system compatible) -- command: | - echo Built Image image(image-1):tag(image-1) - events: ["after:build:image-1"] -# Execute the hook directly on the system (echo binary must exist) -- command: "echo" - args: ["before image building"] - events: ["before:build:image-1", "before:build:image-2"] -# Execute the hook only on windows -- command: "echo before each image" - os: windows - events: ["before:build:*"] -``` - -This tells DevSpace to execute the command `echo before image building` before any image will be built. - -## Lifecycle Events - -You are able to define hooks for the following lifecycle events: -- `before:deploy`, `after:deploy`, `before:deploy:[name]`, `after:deploy:[name]`, `error:deploy:[name]`, `skip:deploy:[name]`: executed while DevSpace deploys `deployments`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:render`, `after:render`, `before:render:[name]`, `after:render:[name]`, `error:render:[name]`: executed while DevSpace renders `deployments` during `devspace render`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:purge`, `after:purge`, `before:purge:[name]`, `after:purge:[name]`, `error:purge:[name]`: executed while DevSpace purges `deployments` during `devspace purge`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:build`, `after:build`, `before:build:[name]`, `after:build:[name]`, `error:build:[name]`, `skip:build:[name]`: executed while DevSpace builds `images`. `[name]` can be replaced with the config name of an image or `*` to match all. -- `start:sync:[name]`, `stop:sync:[name]`, `error:sync:[name]`, `restart:sync:[name]`, `before:initialSync:[name]`, `after:initialSync:[name]`, `error:initialSync:[name]`: executed while DevSpace syncs files with `dev.sync`. `[name]` can be replaced with the config name of a sync configuration or `*` to match all. -- `start:portForwarding:[name]`, `restart:portForwarding:[name]`, `error:portForwarding:[name]`, `stop:portForwarding:[name]`: executed while DevSpace port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `start:reversePortForwarding:[name]`, `restart:reversePortForwarding:[name]`, `error:reversePortForwarding:[name]`, `stop:reversePortForwarding:[name]`: executed while DevSpace reverse port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` -- `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:error`, `devCommand:interrupt`, `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`: executed at certain lifecycle events during the `devspace dev` command -- `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed -- `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed -- `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed - -:::info Errors in Hooks -If any hook returns a non zero exit code, DevSpace will abort and print an error message. -::: - -For `error:` events the actual error will be passed to the hook via the environment variable `DEVSPACE_HOOK_ERROR`. For example: -```yaml -# This will print the error to the console that has occured during a deployment -hooks: -- events: ["error:deploy:*"] - command: "echo The following error has occurred during deploying $DEVSPACE_HOOK_DEPLOY_NAME: $DEVSPACE_HOOK_ERROR" - os: darwin,windows -``` - -## Execute hooks in a container - -DevSpace allows you to execute commands directly in a container instead of the local system. You can specify this in the `container` section of the hook: - -```yaml -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - events: ["after:deploy:my-deployment"] -... -``` - -By default, DevSpace will wait for all pods / containers that were selected with the given selector to come up. As soon as all targets are running, DevSpace will execute the hook and wait for it to finish. You can define if DevSpace should wait and how long it should wait with `wait` and `timeout`: - -```yaml -... -hooks: -- command: "echo" - args: ["Hello from within the container!"] - container: - imageSelector: image(app):tag(app) - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - wait: true # This is the default - timeout: 300 # Timeout in seconds - events: ["after:deploy:my-deployment"] -... -``` - -## Upload or Download files from a container - -Hooks can be used to upload or download files from a container. In the background, DevSpace will basically do a `kubectl cp` to the specified container. Example: -```yaml -hooks: -# Upload the complete local bin folder to the container path ./bin -- upload: - localPath: bin - containerPath: bin - container: - imageSelector: image(test):tag(test) - events: ["after:deploy:my-deployment"] -# Download a single file from the container to the local path -- download: - localPath: build/artifact.jar - containerPath: /abs/path/build/artifact-test.jar - container: - imageSelector: image(java):tag(java) - events: ["after:deploy:my-deployment-2"] -``` - -## Wait for a pod to be running - -This hook action can be useful if you want to ensure a certain pod is running before you continue with the pipeline. An example configuration could look like this: -```yaml -... -deployments: -- name: my-database - helm: - componentChart: true - values: - ... -hooks: -# This hook will ensure that everytime the deployment -# my-database is deployed that DevSpace will wait until -# all pods and containers that match the labelSelector -# app.kubernetes.io/component: my-database are running -- wait: - # DevSpace will wait for all containers that match the label selector below to become running. - # If there are init containers, make sure to set terminatedWithCode as well. - running: true - # This can be needed if there are for example init containers - # that terminate instead of become running. - terminatedWithCode: 0 - container: - labelSelector: - app.kubernetes.io/component: my-database - # You could also select just a specific container with - # containerName: database-container - events: ["after:deploy:my-database"] -... -``` - -## Print the logs of a container - -This action can be useful to print logs of jobs or print the logs of init containers that would not be printed otherwise during `devspace dev`. An example configuration could look like this: - -`job.yaml`: -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: my-pod - labels: - app.kubernetes.io/component: my-job -spec: - restartPolicy: Never - containers: - - command: ["sh"] - args: ["-c", "echo 'Job Start' && sleep 5 && echo 'Doing Things...' && sleep 5 && echo 'Job End'"] - image: alpine - name: job -``` - -`devspace.yaml`: -```yaml -version: ... -deployments: -- name: my-job - kubectl: - manifests: - - job.yaml -hooks: -# This hook will wait until the selected container is either running or already -# terminated and then print the logs of it until it terminates. -- logs: {} - container: - labelSelector: - app.kubernetes.io/component: my-job - events: ["after:deploy:my-job"] -``` - -## Execute hooks in the background - -By default, DevSpace will wait for a hook to finish and then move on with the pipeline. However, in some cases it might be desired that a hook is executed in the background to speed up a process. You can specify a background hook with the `background` option: - -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - events: ["after:deploy"] -... -``` - -If you do not want to stream the output of the hook to the console, you can also mark the hook as silent, which will prevent any hook output: -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - silent: true - events: ["after:deploy"] -... -``` - -## Execute hooks only on certain operating systems - -Hooks can be executed only on certain operating systems: - -```yaml {3,6} -hooks: -- command: echo before image building on windows - os: windows - events: ["after:build"] -- command: echo before image building on mac and linux - os: darwin,linux - events: ["after:build"] -``` - -## Execute hooks once - -Hooks can be executed only once for each targeted container. This means as long as the container where the hook was executed stays running, the hook will not be executed for this container again until it restarts. This can be useful for running one-time development tasks without using init containers. In the following example, the command would only run once for the newest container running with the image `nginx:1.21`. - -```yaml {8} -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx:1.21 - once: true - events: ["after:deploy"] -... -``` - -If you run `devspace dev` or `devspace deploy` now multiple times and the container is not replaced or restarted, the hook is only executed once. - -## Hook Context Information - -DevSpace passes certain environment variables to the hook execution: -- **DEVSPACE_HOOK_KUBE_CONTEXT**: the name of the kube context that was used -- **DEVSPACE_HOOK_KUBE_NAMESPACE**: the name of the kube namespace that was used -- **DEVSPACE_HOOK_OS_ARGS**: json encoded os.Args that were used to call devspace -- **DEVSPACE_HOOK_ERROR**: if an error has occured contains the error string (only for onError hooks) -- **DEVSPACE_HOOK_EVENT**: the event that has triggered the hook - -Depending on the hook there will be other context variables set that are prefixed with `DEVSPACE_HOOK_`. diff --git a/docs/versioned_docs/version-5.16/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-5.16/configuration/images/append-dockerfile-instructions.mdx deleted file mode 100644 index 78fc212199..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/append-dockerfile-instructions.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Append Build Instructions In-Memory -sidebar_label: appendDockerfileInstructions ---- - - -## `appendDockerfileInstructions` -The `appendDockerfileInstructions` expects an array of strings with each string containing a Dockerfile instruction, e.g. `RUN chmod...`, `USER root`. - -This option is very useful to add development-specific instructions (installing dev tooling like debuggers, setting a different runtime user for the container etc.) without the need to change the actual Dockerfile. - -:::info In-Memory -DevSpace adds these instructions dynamically to your Dockerfile when building images. However, this happens in-memory and does **not** change the Dockerfile. -::: - -:::tip Combination with Profiles -It is often useful to create a [profile](../profiles/basics.mdx) `production` with a patch that removes the `appendDockerfileInstructions` entirely. This way, you can also evaluate what you are working on in a more production-like way using a single command: `devspace deploy -p production` -::: diff --git a/docs/versioned_docs/version-5.16/configuration/images/basics.mdx b/docs/versioned_docs/version-5.16/configuration/images/basics.mdx deleted file mode 100644 index 9c2eec5ada..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/basics.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Image Building -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; -import WarningBuildToolPriority from '../../fragments/warning-build-tool-priority.mdx'; - -Images are configured within the `images` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {3} -images: - backend: - image: my-docker-username/appbackend - database: - image: my-docker-company/appbackend -``` - - - - -```yaml {3} -images: - backend: - image: image.company.tld/appbackend - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-9} -images: - backend: - image: image.company.tld/appbackend - tags: - - latest - # This will be replaced during build time with - # something like dev-ads13as1-sA4ve. Each hashtag - # represents a random character. - - dev-${DEVSPACE_GIT_COMMIT}-##### - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -:::info What is BuildKit? -[BuildKit](https://github.com/moby/buildkit) is an open-source concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit that lets you build images inside containers that run on top of Kubernetes or in your local docker daemon. To force image building using BuildKit, set `build.buildKit: {}`. To tell DevSpace to use in cluster building set `build.buildKit.inCluster: {}` as shown above. Learn more about [configuring BuildKit builds](../../configuration/images/buildkit.mdx). -::: - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true -``` - -:::info What is kaniko? -Kaniko is an open-source tool that lets you build images inside containers that run on top of Kubernetes. DevSpace uses kaniko as automatic fallback if Docker is not installed. To force image building using kaniko, set `build.kaniko.cache: true` as shown above. Learn more about [configuring kaniko builds](../../configuration/images/kaniko.mdx). -::: - - - - -```yaml {4-11} -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "arg-value-1" - - "--arg2" - - "arg-value-2" -``` - - - - -```yaml {5} -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` - - - - -:::note Parallel Image Building -To speed up the build process, the images you specify under `images` will all be built in parallel (unless you use the `--build-sequential` flag). -::: - - - - -## Run Image Building -When you run one of the following commands, DevSpace will run the image building process: -- `devspace build` (only image building without deployment) -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger image building: -- `--build-sequential` build images sequentially instead of in parallel (provides more detailed logs for each image) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed since the latest build) - -## Image Building Process -DevSpace loads the `images` configuration from `devspace.yaml` and builds all images in parallel. The multi-threaded, parallel build process of DevSpace speeds up image building drastically, especially when building many images and using remote build methods. - -### 1. Load Dockerfile -DevSpace loads the contents of the Dockerfile specified in `image[*].dockerfile` (defaults to `./Dockerfile`). - -:::info Use Relative Paths -Dockerfile paths used in `dockerfile` should be relative to the `devspace.yaml`. -::: - -### 2. Override Entrypoint (if needed) -DevSpace allows you to apply an in-memory override of a Dockerfile's `ENTRYPOINT` by configuring the `entrypoint` option for the image. Similar to the Dockerfile `ENTRYPOINT`, the `images[*].entrypoint` option should be defined as an array. - -:::note Useful for Profiles -Configuring `ENTRYPOINT` overrides can be particularly useful when defining different [config profiles](../../configuration/profiles/basics.mdx) in your `devspace.yaml`. -::: - -### 3. Load Build Context -DevSpace loads the context to build this image as specified in `context` (defaults to `./`). The context path serves as root directory for Dockerfile statements like `ADD` or `COPY`. - -:::info Use Relative Paths -Context paths used in `context` should be relative to the `devspace.yaml`. -::: - - - -### 4. Skip Build & Push (if possible) -DevSpace tries to speed up image building by skipping images when they have not changed since the last build process. To do this, DevSpace caches the following information after building an image: -- a hash of the `Dockerfile` used to build the image (including ENTRYPOINT override) -- a hash over all files in the `context` used to build this image (excluding files in `.dockerignore`) - -The next time you trigger the image building process, DevSpace will generate these hashes again and compare them to the hashes of the last image building process. If all newly generated hashes are equal to the old ones stored during the last image building process, then nothing has changed and DevSpace will skip this image. - -:::note Force Build -You can use the `-b / --force-build` flag to tell DevSpace to build all images even if nothing has changed. -::: - -### 5. Build Image -DevSpace uses one of the following [build tools](../../configuration/images/basics.mdx) to create an image based on your Dockerfile and the provided context: -- [`docker`](../../configuration/images/docker.mdx) for building images using a Docker daemon (default, prefers Docker daemon of local Kubernetes clusters) -- [`kaniko`](../../configuration/images/kaniko.mdx) for building images directly inside Kubernetes (automatic fallback for `docker`) -- [`custom`](../../configuration/images/custom.mdx) for building images with a custom build command (e.g. for using Google Cloud Build) -- [`disabled`](../../configuration/images/disabled.mdx) if this image should not be built (especially useful for [config `profiles`](../../configuration/profiles/basics.mdx)) - -### 6. Tag Image -DevSpace automatically tags all images after building them using a tagging schema that you can customize using the `tag` option. By default, this option is configured to generate a random string consisting of 5 characters. - -[Learn more about defining a custom tagging schema.](../../configuration/images/image-tagging.mdx#tags-tagging-schema) - -:::info Tag Replacement -Before deploying your application, DevSpace will use the newly generated image tags and replace them in-memory in the values for your [Helm charts](../../configuration/deployments/helm-charts.mdx) and [Kubernetes manifests](../../configuration/deployments/kubernetes-manifests.mdx), so they will be deployed using the newest image tag. -::: - -### 7. Push Image -DevSpace automatically pushes your images to the respective registry that should be specified as part of the `image` option. Just as with regular Docker images, DevSpace uses Docker Hub if no registry hostname is provided within `image`. - - -:::note -You can skip this step when proving the `--skip-push` flag. Beware that deploying your application after using `--skip-push` will only work when your images have already been pushed to the registry or when you are using a local Kubernetes cluster (e.g. minikube). -::: - -### 8. Create Pull Secrets -When deploying your application via DevSpace, Kubernetes needs to be able to pull your images from the registry that is used to store your images when pushing them. For this purpose, Kubernetes relies on so-called image pull secrets. DevSpace can automatically create these secrets for you, if you configure `createPullSecret: true` for the respective image in your `devspace.yaml`. - -:::note -You do **not** need to change anything in your Kubernetes manifests or Helm charts to use the image pull secrets that DevSpace creates because DevSpace [adds these secrets to the default service account in the namespace](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) used to deploy your project. - -After running `devspace build`, `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the following command: -```bash -kubectl get serviceaccount default -o yaml -``` -Take a look at the `imagePullSecrets` section of the output showing the yaml definition of the service account `default`. -::: - -## Advanced Topics - -### Authentication (Registry) -DevSpace uses the same credential store as Docker. So, if you already have Docker installed and you have logged in to a private registry before, DevSpace will be able to push to this registry. So, if you want to push to a registry using DevSpace, simply authenticate using this command: -```bash -docker login # for Docker Hub -docker login [REGISTRY] # for any other registry (e.g. my-registry.tld) -``` - -:::note -If you do **not** have Docker installed, DevSpace initializes a Docker credential store for you and stores your login information just like Docker would do it. -::: - - -### Skip Push (Local Clusters) -If you are using a local Kubernetes cluster, DevSpace will try to build the image using the Docker deamon of this local cluster. If this process is successful, DevSpace will skip the step of pushing the image to a registry as it is not required for deploying your application. diff --git a/docs/versioned_docs/version-5.16/configuration/images/buildkit.mdx b/docs/versioned_docs/version-5.16/configuration/images/buildkit.mdx deleted file mode 100644 index 8f60c99638..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/buildkit.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Build Images with BuildKit -sidebar_label: buildKit ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [BuildKit](https://github.com/moby/buildkit) as build tool allows you to build images either locally or inside your Kubernetes cluster without a Docker daemon. - -:::info -In order to use the build kit you'll either need to have [docker](https://docs.docker.com/get-docker/) installed locally or the [buildx CLI](https://github.com/docker/buildx/releases). **If you only want to use the in cluster build functionality, you won't need a running docker daemon and just need the CLI tools.** -::: - -With `buildKit` enabled, DevSpace will use `docker buildx build` for building. If in cluster building is enabled, DevSpace will deploy a BuildKit deployment into the Kubernetes cluster that will function as target BuildKit daemon for `docker buildx build`. You can also share a single Kubernetes BuildKit daemon across multiple users to share a common build cache. - -To set `buildKit` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -## In Cluster Building - -If the `inCluster` object is set, DevSpace will build the image directly in the Kubernetes cluster instead of using the local docker daemon. DevSpace will start or reuse a BuildKit deployment in the Kubernetes cluster that acts as target BuildKit daemon. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- `buildKit.inCluster` tells DevSpace to build the image inside the target Kubernetes cluster instead of using the local docker daemon. -- By default, DevSpace will create a BuildKit daemon deployment inside the target namespace that will be used for this and all future builds. - -### `inCluster.namespace` - -The option takes a string and defines the namespace where to create the BuildKit deployment in. Defaults to the current DevSpace target namespace. - -:::info -By setting `name` and `namespace` you can share a single BuildKit deployment for multiple users. This will have the advantage that a shared build cache is used. -::: - -### `inCluster.name` - -The option takes a string and defines the name of the BuildKit builder DevSpace will use or create if it does not exist. `name` will also be the name of the BuildKit deployment that is created by DevSpace. By default, DevSpace will create a BuildKit builder in the following form: devspace-NAMESPACE. For more information about what BuildKit builders are check the [docker docs](https://docs.docker.com/engine/reference/commandline/buildx_create/). - -### `inCluster.rootless` - -The option takes a boolean and defines if the BuildKit deployment should deploy a non priviledged pod. By default, the BuildKit deployment will try to create a priviledged pod. - -### `inCluster.image` - -The option takes a string and defines the docker image to use for the BuildKit deployment. - -### `inCluster.nodeSelector` - -The option takes a string in the form of `my-label=value,my-label2=value2` that will be used as node selector for the BuildKit deployment. - -### `inCluster.noCreate` - -The option takes a boolean as value. By default, DevSpace will try to create a new builder if it cannot be found. If this option true, DevSpace will fail if the specified builder cannot be found. - -### `inCluster.noRecreate` - -The option takes a boolean as value. By default, DevSpace will try to recreate the builder if the builder configuration in the devspace.yaml differs from the actual builder configuration. If this is true, DevSpace will not try to do that. - -### `inCluster.noLoad` - -The option takes a boolean as value. If image push is disabled (for example by flag `--skip-push` or via `build.buildKit.skipPush`), DevSpace will load the created image into the local docker daemon. If the option is true, DevSpace will not try to do that. - -### `inCluster.createArgs` - -The option takes a string array as value. These arguments will be appended to the `docker buildx create` command. - -## BuildKit options - -If `buildKit.inCluster` is omitted, DevSpace will build the image with the local docker daemon and not interact with the Kubernetes cluster. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- Internally DevSpace will use `docker buildx build` to build the image. - -### `skipPush` - -The option takes a boolean as value. If this option is enabled, DevSpace will not push the image to the registry. If in cluster build is enabled, DevSpace will try to load the image into the local docker daemon if the image is not pushed. - -:::tip -DevSpace will automatically skip image pushing if it detects a local docker daemon such as docker-desktop or minikube. You can disable this behaviour by setting the flag `--skip-push-local-kube=false` -::: - -### `preferMinikube` - -The option takes a boolean as value. If this option is disabled, DevSpace will not try to use the minikube docker daemon for image building. This option only has an effect, if minikube is installed and the current kube context is `minikube`. - -### `args` - -This option takes a string array as value. The arguments will be appended to the `docker buildx build` call DevSpace will run. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - args: ["--cache-to", "user/app:cache"] -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The args option will append arguments to the `docker buildx build` command which will then look something like this: `docker buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -### `command` - -The option takes a string array as value. By default, DevSpace will use `docker buildx` as base command for interacting with BuildKit, if this option is set, you can tell DevSpace to use a different base command. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - command: ["/path/to/my/buildx"] -``` -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The command option will tell DevSpace to use this command instead of `docker buildx` and the actual build command will look like this: `/path/to/my/buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - - diff --git a/docs/versioned_docs/version-5.16/configuration/images/custom.mdx b/docs/versioned_docs/version-5.16/configuration/images/custom.mdx deleted file mode 100644 index 6b08dddf1b..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/custom.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Custom Build Scripts -sidebar_label: custom ---- - -## `custom` -Using `custom` as build tool allows you to define a custom command for building images. This is particularly useful if you want to use a remote build system such as Google Cloud Build. - -:::warning -Make sure your `custom` build command terminates with exit code 0 when the build process was successful. -::: - -### `command` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Example: Building Images With `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build arg1 --flag flag-value arg2 "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `imageFlag` -The `imageFlag` option expects a string which states the name of the flag that is used to pass the image name (including auto-generated tag) to the custom build script defined in `command`. - -#### Default Value For `imageFlag` -```yaml -imageFlag: "" # Defaults to passing image and tag as an argument instead of using a flag -``` - -#### Example: Defining `imageFlag` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `skipImageArg` -The `skipImageArg` option expects a boolean which specifies if DevSpace should add an argument to the command with the `image:tag`. If enabled DevSpace will omit the image argument completely - -#### Example: Defining `skipImageArg` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - skipImageArg: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2` - -### `imageTagOnly` -The `imageTagOnly` option expects a boolean which specifies if DevSpace should only add the image `tag` instead of `image:tag` as argument. - -#### Example: Defining `imageTagOnly` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - imageTagOnly: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[TAG]"` while `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `args` -The `args` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **before** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Using `args` and `appendArgs` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" - appendArgs: - - "arg3" - - "--flag2" - - "flag-value-2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG] arg3 --flag2 flag-value-2` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `appendArgs` -The `appendArgs` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **after** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `appendArgs` -```yaml -appendArgs: [] -``` - -#### Example -**See "[Example: Using `args` and `appendArgs` For Custom Builds](#example-using-args-and-appendargs-for-custom-builds)"** - -### `commands` -The `commands` option expects an array of commands that should be executed on a specific operating system. This will only exchange the base command, but all other arguments will be appended the same way. - -#### Example: Using `commands` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build-default.sh - commands: - - command: ./build-windows.ps - os: windows - - command: ./build-darwin.sh - os: darwin - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" -``` -**Explanation:** -- **linux**: The image `backend` would be built using the command `./build-default.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **windows**: The image `backend` would be built using the command `./build-windows.ps --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **darwin (macOS)**: The image `backend` would be built using the command `./build-darwin.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` - -### `onChange` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Default Value For `onChange` -```yaml -onChange: [] -``` - -#### Example: OnChange Option For custom Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - onChange: - - some/path/ - - another/path/file.txt -``` -**Explanation:** -The image `backend` would be built using the command `./build --image "[IMAGE]:[TAG]"` and DevSpace would skip the build if none of the files within `some/path/` nor the file `another/path/file.txt` has changed since the last build. diff --git a/docs/versioned_docs/version-5.16/configuration/images/disabled.mdx b/docs/versioned_docs/version-5.16/configuration/images/disabled.mdx deleted file mode 100644 index c5a8e42cd9..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/disabled.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Disable Image Building -sidebar_label: disabled ---- - -## `disabled` -The `disabled` option expects a boolean and allows you to disable image building for an image. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disabling Image Building -```yaml -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` -**Explanation:** -- The first image `frontend` would not be built at all. -- The second image `backend` would be built using [`docker`](../../configuration/images/docker.mdx) because nothing is specified and `docker` is the default build tool for images. diff --git a/docs/versioned_docs/version-5.16/configuration/images/docker.mdx b/docs/versioned_docs/version-5.16/configuration/images/docker.mdx deleted file mode 100644 index c96fd80e88..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/docker.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Build Images with Docker -sidebar_label: docker ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -## `docker` -If nothing is specified, DevSpace always tries to build the image using `docker` as build tool. - - -### `useBuildKit` -The `useBuildKit` option expects a boolean which allows to enable buildkit builds (i.e. `DOCKER_BUILDKIT=1`). - -#### Default Value For `useBuildKit` -```yaml -useBuildKit: false -``` - -#### Example: Docker useBuildKit -```yaml -images: - backend: - image: john/appbackend - build: - docker: - useBuildKit: true -``` - -### `useCli` -If `useCli` is true, devspace will use the local docker installation for building and invoke `docker build`. This option is implicitly true, if `useBuildKit` or `args` is specified. - -### `args` -The `args` option expects an array of strings to be passed as arguments and flags to Docker. - -:::warning -When specifying `args`, DevSpace will invoke your installed Docker CLI via a command-line call instead of using the built-in Docker client. This has the negative effects that: -- The kaniko fallback will not be used anymore. -- You need to make sure that everyone who is using this configuration has the same version (or a compatible one) of Docker installed. -::: - -#### Example: Docker args -```yaml -images: - backend: - image: john/appbackend - build: - docker: - args: - - "--no-cache" - - "--compress" -``` - - -### `disableFallback` -When using `docker` as build tool, DevSpace checks if Docker is installed and running. If Docker is not installed or not running, DevSpace will use kaniko as fallback to build the image unless the option `disableFallback` is set to `false`. - -#### Default Value For `disableFallback` -```yaml -disableFallback: false -``` - -#### Example: Disabling kaniko Fallback -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - build: - docker: - disableFallback: true -``` -**Explanation:** -- The first image `backend` would be built using Docker and if Docker is not available, the image would be built using kaniko as a fallback. -- The second image `frontend` would be built using Docker and if Docker is not available, DevSpace would exit with a fatal error instead of using the kaniko fallback. - - -### `preferMinikube` -DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. - -#### Default Value For `preferMinikube` -```yaml -preferMinikube: true -``` - -#### Example: Building Images in Minikube -```yaml -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -**Explanation:** -- The first image `backend` would be preferably built with Minikube's Docker daemon and the image would **not** be pushed to a registry. -- The second image `frontend` would **not** be built with the Docker daemon of Minikube and it would be pushed to a registry after building and tagging the image using Docker (or kaniko as fallback). - -### `skipPush` -The `skipPush` option expects a boolean value stating if pushing the image to a registry should be skipped during the build process. - -If DevSpace is using a local Kubernetes cluster, pushing images might not be necessary because the image might already be accessible by Kubernetes via a local Docker daemon. In this case, it can make sense to speed up the process by setting `skipPush` to `true`. - -:::info Auto-Enabled for Minikube & Docker Desktop -DevSpace automatically skips image push for kube-contexts with the following names: -- `minikube` -- `docker-desktop` -- `docker-for-desktop` - -This allows to keep `skipPush: false` for these local clusters which helps to keep the configuration reusable and indepent of the kube-context, i.e. it makes it easier to switch between local and remote clusters. -::: - -:::warning Remote Clusters -Setting this option means that the configuration cannot be used to deploy to remote clusters anymore, which makes it harder to switch between clusters and keep the configuration cluster-independent. -::: - -#### Default Value For `skipPush` -```yaml -skipPush: false -``` - -#### Example -```yaml {7} -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - skipPush: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -The above configration would only push the `frontend` image but not the `backend` image. To manually trigger image building and pushing for all images, run: -```bash -devspace build -``` - - - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `target` - - - - -### `network` - - - - -### `buildArgs` - - diff --git a/docs/versioned_docs/version-5.16/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-5.16/configuration/images/dockerfile-context.mdx deleted file mode 100644 index 0b6cc404af..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/dockerfile-context.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Configure Dockerfile & Context -sidebar_label: dockerfile + context ---- - -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; - -## `dockerfile` -The `dockerfile` option expects a string with a path to a `Dockerfile`. -- The path in `dockerfile` should be relative to the `devspace.yaml`. -- When setting the `dockerfile` option, it is often useful to set the [`context` option](#context) as well. -- To share your configuration with team mates, make sure `devspace.yaml` and all `Dockerfiles` used in the `images` section are checked into your code repository. - -#### Default Value For `dockerfile` -```yaml -dockerfile: ./Dockerfile -``` - -#### Example: Different Dockerfile -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - dockerfile: frontend/Dockerfile - context: frontend/ -``` -**Explanation:** -- The first image would be built using the Dockerfile in `./Dockerfile` and the context path `./`. -- The second image would be built using the Dockerfile in `./frontend/Dockerfile` and the context path `./frontend/`. -- Switching the `context` for image `frontend` would assure that a statement like `ADD file.txt` or `COPY file.txt .` in `./frontend/Dockerfile` would use the local file `./frontend/file.txt` instead of `./file.txt`. -- In this example, it would probably be useful to have a `./.dockerignore` file which ignores the `frontend/` folder when building the first image called `backend`. - -:::note -See **[Best Practices for Image Building](../../guides/image-building.mdx)** for details on how to optimize your Dockerfiles and use `.dockerignore` for faster image building. -::: - - - -## `context` -The `context` option expects a string with a path to the folder used as context path when building the image. The context path serves as root directory for Dockerfile statements like ADD or COPY. - - - -#### Default Value For `context` -```yaml -context: ./ -``` - -#### Example -**See "[Example: Different Dockerfiles](#example-different-dockerfile)"** diff --git a/docs/versioned_docs/version-5.16/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-5.16/configuration/images/entrypoint-cmd.mdx deleted file mode 100644 index 5e8b440f1c..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/entrypoint-cmd.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Override ENTRYPOINT and CMD -sidebar_label: entrypoint + cmd ---- - -:::warning -If you are overriding the Dockerfile `ENTRYPOINT` or `CMD`, it only affects the image but **not** the deployment in Kubernetes. If a deployment using this image defines the `command` or `args` options, they will take precedence over the overrides you define for the image. -::: - -### `entrypoint` -The `entrypoint` option expects an array of strings which tells DevSpace to override the `ENTRYPOINT` defined in the `Dockerfile` during the image building process. - -:::note -If you are overriding the `ENTRYPOINT`, it is often useful to also [override the `CMD` statement](#cmd). If you want to define `entrypoint: ...` for an image and you do **not** want the `CMD` statement from the Dockerfile, add `cmd: []` to the image configuration in your `devspace.yaml`. -::: - -#### Default Value For `entrypoint` -```yaml -entrypoint: [] -``` - -#### Example: Override ENTRYPOINT For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - entrypoint: - - npm - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `ENTRYPOINT` (e.g. `[npm, start]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `ENTRYPOINT`, DevSpace would use the `[npm, run, dev]` as value for `ENTRYPOINT` - - -## `cmd` -The `cmd` option expects an array of strings which tells DevSpace to override the `CMD` defined in the `Dockerfile` during the image building process. - -:::note -`CMD` generally defines the arguments for `ENTRYPOINT`. -::: - -#### Default Value For `cmd` -```yaml -cmd: [] -``` - -#### Example: Override CMD For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - cmd: - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `CMD` (e.g. `[start]`) for `ENTRYPOINT` (e.g. `[npm]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `CMD`, DevSpace would use the `[run, dev]` as value for `CMD` diff --git a/docs/versioned_docs/version-5.16/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-5.16/configuration/images/image-tagging.mdx deleted file mode 100644 index c99d3fc36e..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/image-tagging.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Image Name & Tagging Schema -sidebar_label: image + tags ---- - -The `images` section in `devspace.yaml` is a map with keys representing the name of the image and values representing the image definition including `tag`, `dockerfile` etc. -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - dev-${USER}-### # Each # will be replaced with a random character -``` - -## `image` *Image Repository* -The `image` option expects a string containing the image repository including registry and image name. - -- Make sure you [authenticate with the image registry](../../configuration/images/basics.mdx#authentication-registry) before using in here. -- For Docker Hub images, do not specify a registry hostname and use just the image name instead (e.g. `mysql`, `my-docker-username/image`). - -#### Example: Multiple Images -```yaml -images: - backend: - image: john/appbackend - frontend: - image: custom-registry.com:5000/peter/appfrontend -``` -**Explanation:** -- The first image `backend` would be tagged as `appbackend:[TAG]` pushed to Docker Hub using the path `john` (which generally could be your Docker Hub username). -- The second image `frontend` would be tagged as `appfrontend:[TAG]` and pushed to `custom-registry.com:5000` using the path `peter`. - -## `tags` *Tagging Schema* -The `tags` option expects an array of strings, each containing a static tag or a tagging schema used to automatically tag images before pushing them to the registry. The tagging schema can contain [dynamic config variables](../../configuration/variables/basics.mdx). While you can define your own config variables, DevSpace provides a set of pre-defined variables. The most commonly used variables for tagging are: -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_NAMESPACE**: The default namespace of your current kube-context - -Besides dynamic config variables, DevSpace offers you a possibility to mark certain parts of the image tag as random generated. During image build DevSpace will fill these parts with random characters. The placeholder for a random character is **#**. For example, let's assume you want to generate tags with the format dev-BRANCH-RANDOM, you would write the tag as: -```yaml -images: - default: - image: my-registry.com/user/image - tags: - # The five # are replaced with 5 random characters. The variable ${GIT_BRANCH} is replaced - # with the current branch the user is on - - 'dev-${GIT_BRANCH}-#####' -``` - -:::info Unique Tags For Development -**Make sure tags are unique** when defining a custom tagging schema for development. Unique tags ensure that your application gets started with the newly built image instead of using an older, cached version. Therefore, it is highly recommended for non-production tags to either use `#` placeholders or `DEVSPACE_TIMESTAMP` as a suffix in your tagging schema (see [example below](#example-custom-tagging-schema)). -::: - -#### Default Value For `tag` -```yaml -tags: -- '#####' -``` - -#### Example: Custom Tagging Schema -```yaml -images: - backend: - image: john/appbackend - tags: - - latest - - dev-backend-${DEVSPACE_GIT_COMMIT}-##### -``` -**Explanation:** -The above example would always use the tag `latest` and additionaly generate random tags which could look like this one: `dev-backend-b6caf8a-Jak9i`. This example tag consists of the following substrings defined by the tagging schema: -- `dev-` static string -- `-backend-` static string -- `b6caf8a` latest git commit hash on current local branch -- `-` static string -- `Jak9i` auto-generated random string diff --git a/docs/versioned_docs/version-5.16/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-5.16/configuration/images/inject-restart-helper.mdx deleted file mode 100644 index d0af502cc5..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/inject-restart-helper.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Container Restart Helper -sidebar_label: injectRestartHelper ---- - -## `injectRestartHelper` -The `injectRestartHelper` option expects a boolean which decides if DevSpace should inject a restart helper and override the `ENTRYPOINT+CMD` of the image in runtime during the build process which wraps the regular container start command and allows to restart the regular container start command without terminating/recreating the container. - - -:::note How does it work? -The idea of the restart helper is to start the restart helper script as PID 1 inside the conainer. This script will then start the original container entrypoint which will run your application. If a [restart is triggered](#trigger-a-restart), the restart helper will just restart the application again. -::: - -:::tip Automatic Restart On File Change -The restart helper per se does not do much except restarting your application if it has been killed. You can combine this config option with the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) which will effectively restart your application inside the container every time DevSpace syncs files into the container. -::: - - -#### Default Value For `injectRestartHelper` -```yaml -injectRestartHelper: false -``` - -#### Example: Inject Restart Helper -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - injectRestartHelper: true -``` - - -
- -## Trigger a Restart -You can restart a pod that has a restart helper injected with devspace itself: -``` -devspace restart -n my-namespace -devspace restart -n my-namespace --pod my-pod -devspace restart -n my-namespace --label-selector abc=def -``` - -Restart a pod via kubectl: -``` -kubectl exec my-pod -- sh -c 'PID=$(cat /.devspace/devspace-pid) && rm /.devspace/devspace-pid && kill -9 -$PID' -``` - -You can also manually trigger a restart through the restart helper by doing the following (same as with kubectl): -```bash -# 1. Get the PID of your applications process -PID=$(cat /.devspace/devspace-pid) - -# 2. Remove the PID file to tell the restart helper that this is an intended restart -# (otherwise the restart helper will terminate as well which will kill the container) -rm /.devspace/devspace-pid - -# 3. Kill the application process group (restart helper on PID 1 will detect this and restart it again) -kill -9 -$PID -``` - -:::note Automatic Restart On File Change -This is exactly what DevSpace is doing when the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) is configured. -::: - - -
- -## Restart Helper Script -```bash -#!/bin/sh -# -# A process wrapper script to simulate a container restart. This file was injected with devspace during the build process -# -set -e -pid="" -trap quit TERM INT -quit() { - if [ -n "$pid" ]; then - kill $pid - fi -} -while true; do - setsid "$@" & - pid=$! - echo "$pid" > /.devspace/devspace-pid - set +e - wait $pid - exit_code=$? - if [ -f /.devspace/devspace-pid ]; then - rm -f /.devspace/devspace-pid - printf "\nContainer exited with $exit_code. Will restart in 7 seconds...\n" - sleep 7 - fi - set -e - printf "\n\n############### Restart container ###############\n\n" -done -``` - -## Providing a custom restart helper script or changing the existing script - -DevSpace provides a way to change the existing restart helper script by defining the option `restartHelperPath`: -```yaml -images: - frontend: - image: john/appfrontend - injectRestartHelper: true - restartHelperPath: path/to/restarthelper.sh -``` - -DevSpace will now inject this script instead of the bundled restart helper script (see above). You can also specify an URL instead of a local path. This can be handy if you want to start up the application in a special way or want to make adjustments to the existing restart helper script. diff --git a/docs/versioned_docs/version-5.16/configuration/images/kaniko.mdx b/docs/versioned_docs/version-5.16/configuration/images/kaniko.mdx deleted file mode 100644 index 8e4aa3ac01..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/kaniko.mdx +++ /dev/null @@ -1,332 +0,0 @@ ---- -title: Build Images with kaniko -sidebar_label: kaniko ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [kaniko](https://github.com/GoogleContainerTools/kaniko) as build tool allows you to build images directly inside your Kubernetes cluster without a Docker daemon. DevSpace simply starts a build pod and builds the image using `kaniko`. - -:::note Automatic Cleanup -After the build process completes, the build pod started for the kaniko build process will be deleted again. -::: - -To set `kaniko` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: {} -``` - -## Flags & Arguments - -### `cache` -The `cache` option expects a boolean that states if kaniko should make use of layer caching by pulling the previously build image and using the layers of this image as cache. - -#### Default Value For `cache` -```yaml -cache: true -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - cache: false -``` -**Explanation:** -- The first image `backend` would be built using kaniko and make use of the build cache. -- The second image `frontend` would be built using kaniko and **not** use the build cache. - - -### `snapshotMode` -The `snapshotMode` option expects a string that can have the following values: -- `full` tells kaniko to do a full filesystem snapshot -- `time` tells kaniko to do a filesystem snapshot based on `mtime` (default) - -:::warning Limitations -One of the biggest limitations of the `time` mode is that kaniko might **miss** file metadata changes introduced by `RUN` statements, e.g. kaniko might skip a command such as `RUN chown 333:333 -R /app`. In cases where this is not an option, use `full` instead. Learn more about [limitations related to kaniko snapshots using `mtime`](https://github.com/GoogleContainerTools/kaniko#mtime-and-snapshotting). -::: - -#### Default Value For `snapshotMode` -```yaml -snapshotMode: time -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - snapshotMode: time -``` -**Explanation:** -- The first image `backend` would be built using kaniko and creating full filesystem snapshots. -- The second image `frontend` would be built using kaniko and calculate filesystem snapthots only based on `mtime`. - - -### `insecure` -The `insecure` option expects a boolean stating if kaniko should allow to push to an insecure (plain HTTP instead of HTTPS) registry. - -:::warning -This option should only be set to `true` for testing purposes. -::: - -#### Default Value For `insecure` -```yaml -insecure: false -``` - -#### Example: Push to Insecure Registry With kaniko -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - insecure: false -``` -**Explanation:** -The image `backend` would be built using kaniko and pushing to the insecure registry `123.456.789.0:5000` would be allowed. - - -### `args` -The `args` option expects an array of strings that will be passed as arguments (and flags) when running the kaniko build command. - -:::note Kaniko Documentation -Take a look at the kaniko documentation for a full [list of available flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). -::: - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Passing Args to kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - args: - - --cache-dir=/tmp - - --verbosity=debug -``` -**Explanation:** -The image `backend` would be built using kaniko and the flags `--cache-dir=/tmp --verbosity=debug` would be set when running the build command within the kaniko pod used for image building. - - - -
- -## Build Pod Configuration - -### `image` -The `image` option expects a string stating the image that should be used for the kaniko container within the build pod. - -#### Default Value For `image` -```yaml -image: gcr.io/kaniko-project/executor:v0.17.1 -``` - -#### Example: Use Different Kaniko Image/Version -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - image: gcr.io/kaniko-project/executor:v0.19.0 -``` - -### `initImage` -The `initImage` option expects a string stating the image that should be used for the init kaniko container within the build pod. (default is `alpine`) - -### `pullSecret` -The `pullSecret` option expects a string with the name of a Kubernetes secret which is used by kaniko as pull/push secret (e.g. for pulling the base image defined in the `FROM` statement of the Dockerfile and for pushing the newly built image after the kaniko build process). - -:::info -In most cases, DevSpace already makes sure that kaniko gets the correct pull secrets to push and pull to registries. -::: - -#### Default Value For `pullSecret` -```yaml -pullSecret: "" -``` - -#### Example: Pull Secret For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - pullSecret: custom-pull-secret -``` -**Explanation:** -The image `backend` would be built using kaniko and kaniko would use the Kubernete secret `custom-pull-secret` to pull images from registries that require authentication. - -:::tip Creating Pull Secrets using `hooks` -If you use the `pullSecret` option, you have to manually create the secret before DevSpace tries to build your images. You can automate this by [defining a hook in devspace.yaml](../../configuration/hooks/basics.mdx) as show in this example: -```yaml -hooks: -- command: kubectl - args: - - create - - secret - - generic - - custom-pull-secret - - --from-literal - - config.json='{ "credsStore":"ecr-login" }' - when: - before: - images: all -``` -::: - -:::note Building AWS ECR images on EKS -If your EKS instance is [configured with access to ECR (see instance role permissions for AWS EKS and ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html), your pull secret referenced by the `pullSecret` option, could be created with this kubectl command: -```yaml -kubectl create secret generic custom-pull-secret --from-literal config.json='{ "credsStore":"ecr-login" }' -``` -The resulting Kubernetes secret would look like this: -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: custom-pull-secret -data: - config.json: eyAiY3JlZHNTdG9yZSI6ImVjci1sb2dpbiIgfQ== -``` -If you define `pullSecret: custom-pull-secret` as shown in the example above, DevSpace will automatically mount this secret into the kaniko container and kaniko will be able to pull from and push to ECR. -::: - - -### `additionalMounts` -The `additionalMounts` option expects an array of mount options that allow to mount Kubernetes Secrets and ConfigMaps into the kaniko container within the build pod. - -#### Default Value For `additionalMounts` -```yaml -additionalMounts: [] -``` - -#### Example: Mount ConfigMaps & Secrets For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - additionalMounts: - - mountPath: /some/configmap/dir - configMap: - name: my-configmap - - mountPath: /some/secret/dir - secret: - name: my-secret - items: - - key: aws-token - path: token.json -``` -**Explanation:** -The above configuration would create a kaniko container which mounts the following volumes: -- All keys within the ConfigMap `my-configmap` will be mounted as files within the folder `/some/configmap/dir`. The filenames will be the keys within the ConfigMap. -- The key `aws-token` within the Secret `my-secret` will be mounted as the file `/some/secret/dir/token.json`. - - -### `resources` -The `resources` option expects a Kubernetes resource object, so that the kaniko pod can specify `requests` and `limits` for resources such as `memory` and `cpu`. - -#### Default Value For `resources` -```yaml -resources: {} -``` - -#### Example: Resource Limits For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - resources: - limits: - memory: "256Mi" - cpu: "500m" -``` - - -### `namespace` -The `namespace` option expects a string stating a namespace that should be used to start the kaniko build pod in. - -:::warning Hard-Coding Namespaces Discouraged -Unless you really know what you are doing, it is discouraged to hard-code namespaces within devspace.yaml because that makes it harder to share the project and its configuration with others. -::: - -#### Default Value For `namespace` -```yaml -namespace: "" # defaults to the default namespace of the current kube-context -``` - -#### Example: Different Namespace For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - namespace: build-namespace -``` -**Explanation:** -The image `backend` would be built using kaniko and the build pod started to run the kaniko build process would be created within the namespace `build-namespace` within the cluster that the current kube-context points to. - -### `serviceAccount` - -The service account to use for the build pod. - -### `nodeSelector` - -A key value map of the node selector to use for the build pod. - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - diff --git a/docs/versioned_docs/version-5.16/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-5.16/configuration/images/pull-secrets.mdx deleted file mode 100644 index 97baf078e7..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/pull-secrets.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Image Pull Secrets -sidebar_label: createPullSecret ---- - -## `createPullSecret` -The `createPullSecret` option expects a boolean that tells DevSpace if a pull secret should be created for the registry where this image will be pushed to. -- If there are multiple images with the **same registry** and any of the images will define `createPullSecret: true`, the pull secret will be created no matter if any of the other images using the same registry explicitly defines `createPullSecret: false`. -- There is **no need to change your Kubernetes manifests, Helm charts or other deployments to reference the pull secret** because DevSpace will [add the pull secret to the service account](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) which deploys your project. This ensures that the pull secret is automatically considered by Kubernetes altough it is not explicitly referenced by your pods. -- After running `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the command `kubectl get serviceaccount default -o yaml` and take a look at the `imagePullSecrets` section of this service account. - -#### Default Value For `createPullSecret` -```yaml -createPullSecret: false -``` - -#### Example: Different Dockerfiles -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - createPullSecret: true -``` -**Explanation:** -- The first image `backend` will be pushed to Docker Hub and DevSpace will **not** create a pull secret for Docker Hub because `createPullSecret` defaults to `false`. This makes sense for public images where no login is required to pull the image or where you want to manage the pull secret yourself. -- The second image `frontend` will be pushed to gcr.io and DevSpace will create a pull secret for gcr.io, so Kubernetes is able to pull the image from gcr.io. diff --git a/docs/versioned_docs/version-5.16/configuration/images/rebuild-strategy.mdx b/docs/versioned_docs/version-5.16/configuration/images/rebuild-strategy.mdx deleted file mode 100644 index c5aa10e53a..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/images/rebuild-strategy.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Rebuild Strategies -sidebar_label: rebuildStrategy ---- - -## `rebuildStrategy` -The `rebuildStrategy` option expects a string which decides when DevSpace will rebuild an image. By default DevSpace will rebuild an image if one of the conditions is true: -- The image was not built before -- The dockerfile has changed -- The configuration within the devspace.yaml for the image has changed -- A file within the docker context (excluding .dockerignore rules) has changed - -:::tip Skip Rebuild Manually -DevSpace will skip building when the `--skip-build` flag is explicitly provided. -::: - -:::tip Trigger Rebuild Manually -DevSpace will always rebuild when the `-b / --force-rebuild` flag is explicitly provided. -::: - -#### Options For `rebuildStrategy` -Currently DevSpace supports the rebuild strategies `always` and `ignoreContextChanges`: -- **always**: if this strategy is provided, DevSpace will always rebuild the image -- **ignoreContextChanges**: same as default except that DevSpace will ignore changes to files within the docker context - -#### Example -```yaml {4,7} -images: - backend: - image: john/appbackend - rebuildStrategy: always - frontend: - image: john/appfrontend - rebuildStrategy: ignoreContextChanges - cache: - image: john/cache - build: - disabled: true -``` -**Explanation:** -When running `devspace dev`, `devspace build` or `devspace deploy` using the above configuration, DevSpace would: -- **not** build the image `cache` because `build.disabled` is `true` -- build the image `frontend` only if it was not built yet, there were changes to the Dockerfile or the image config itself changed -- build the image `backend` because `rebuildStrategy` is set to `always` diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/activation.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/activation.mdx deleted file mode 100644 index c8785444d0..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/activation.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "Profiles: Activation" -sidebar_label: activation ---- - -The `activation` option is optional and allows you to activate a profile using regular expression matching of environment variables. An activation is configured with the profile it activates in `devspace.yaml`. - -#### Example: Defining a Profile Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "production" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The `production` profile would be activated when the environment variable `ENV` has value `production`: - -#### Example: Regular Expression Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "prod-\d+" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The profile `production` would be activated when the environment variable `ENV` matches the regular expression `prod-\d+`. This can be useful for matching environment variables that have dynamic values. - -#### Example: Matching All Environment Variables -When multiple `env` name/expression pairs are specified in the same activation, all environment variables values must match the expression to activate the profile. For example, the `production` profile is activated when both environment variables match their expressions: -```yaml {3-6} -profiles: -- name: production - activation: - - env: - CI: "true" - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -#### Example: Matching Any Environment Variables -When environment variables are used in multiple activations, the profile is activated when any environment variable matches. In this example, the `production` profile is activated when either environment variables match their expressions: -```yaml {3-7} -profiles: -- name: production - activation: - - env: - CI: "true" - - env: - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -### Dependency Activations -When `dependencies` are referenced from a `devspace.yaml`, the dependency's profile activations will also be evaluated. In this example, any profile activations in `./component-1/devspace.yaml` or `./component-2/devspace.yaml` would be evaluated. - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - -#### Example: Disable Activations by Dependency -The `disableProfileActivation` option can be used to disable profile activations for specific dependencies. In the following example, the activations for `./component-1/devspace.yaml` would be ignored, while the activations in `./component-2/devspace.yaml` would be evaluated: -```yaml {5} -dependencies: -- name: component-1 - source: - path: ./component-1 - disableProfileActivation: true -- name: component-2 - source: - path: ./component-2 -``` - -### Disable Activations Globally -The `--disable-profile-activation` flag can be used to disable all profile activations, including those specifed within each dependency's `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/basics.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/basics.mdx deleted file mode 100644 index 8c13d24a13..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/basics.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Config Profiles -sidebar_label: Basics ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -DevSpace allows you to define different profiles for different use cases (e.g. working on different services in the same project, starting certain debugging environments) or for different deployment targets (e.g. dev, staging production). - -Profiles allow you to define: -- [`replace`](../../configuration/profiles/replace.mdx) statements to override entire sections of the config. -- [`merge`](../../configuration/profiles/merge.mdx) patches ([JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386)) to change specific parts of the config. -- [`patches`](../../configuration/profiles/patches.mdx) ([JSON Patch, RFC 6902](https://tools.ietf.org/html/rfc6902)) to modify certain paths in the config. - -:::note Combine several strategies -It is possible to use several strategies together within one profile. The execution order inside a single profile is: -1. `replace` -2. `merge` -3. `patches` - -You can also apply multiple profiles through the `--profile` flag -::: - -:::tip Debug Profiles - - - -::: - -A profile has to be configured in the `profiles` section of the `devspace.yaml`. -```yaml {15-25} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` - -## Useful Commands - -### `devspace print -p [profile]` - - - - - -### `devspace list profiles` -To get a list of available profiles, you can run this command: -```bash -devspace list profiles -``` - -### `devspace use profile [profile]` -To permanently switch to a different profile, you can run this command: -```bash -devspace use profile [PROFILE_NAME] -``` - -:::note -Permanently switching to a profile means that all future commands (e.g. `devspace deploy` or `devspace dev`) will be executed using this profile until the user [resets the profile](#devspace-use-profile---reset) (see below). -::: - -### `devspace use profile --reset` -To permanently switch back to the default configuration (no profile replaces and patches active), you can run this command: -```bash -devspace use profile --reset -``` - -### `devspace [deploy] -p [profile]` -Most DevSpace commands support the `-p / --profile` flag. Using this flag, you can run a single command with a different profile without switching your profile permenantly: -```bash -devspace build -p [PROFILE_NAME] -devspace deploy -p [PROFILE_NAME] -devspace dev -p [PROFILE_NAME] -devspace dev -i -p [PROFILE_NAME] -``` diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/merge.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/merge.mdx deleted file mode 100644 index ac8c7420cb..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/merge.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Profiles: Merge" -sidebar_label: merge ---- - -Merge patches are a way to perform specific overrides to the configuration without having to create a completely separate config file. Patch functionality follows [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386) semantics. - -### Example - -Merge patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {16-30} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - merge: - images: - # Change the backend image - backend: - image: john/prodbackend - # Delete the backend-debugger image - backend-debugger: null - # Override deployments - deployments: - - name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config is merged with the given merge patch at `profiles[0].merge`. -- Merge patches follow the rules as defined in [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386): - - Arrays are overriden - - Objects are merged together - - Keys that have a `null` value are removed from objects -- The resulting config used in-memory when the profile `production` is used would look like this (you can check via `devspace print -p production`): - -```yaml -# In-Memory Config After Applying Merge Patches For Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/parents.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/parents.mdx deleted file mode 100644 index 8ac70e6678..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/parents.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Profiles: Parents" -sidebar_label: parents ---- - -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -The `parents` option is optional and expects the names of other profiles which should be applied before this profile. -The profiles are applied in the order they are specified. It is also possible to apply profiles from distant `devspace.yaml`s. -The kind of profile inheritance that the `parents` option provides can help to reduce redundancy when multiple profiles need to change the config in a similar way. - -:::info Execution Order -A parent profile is applied before the profile that defines the parent. A parent profile can have parents of its own. -::: - -#### Example: Defining a Parent Profile -```yaml {16-17} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - parents: - - profile: staging - patches: - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -- name: staging - replace: - images: - backend: - image: john/backendprod - patches: - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/backendprod - - op: remove - path: deployments.name=backend.helm.values.containers[1] -``` -When the `production` profile is active, the `replace` and `patches` statements configured in `staging` would be applied first because of the `parents` statement in line 16. After applying the `staging` profile, DevSpace would additionally apply the currently active `production` profile. In this example, the `production` profile is based on the `staging` profile and the only difference is that the `production` profile adds another container to the `backend` deployment which is using the image `john/cache`. - -#### Example: Defining multiple Parent Profiles -```yaml -version: v1beta9 -profiles: -- name: multi-parents - # Field that applies the profile deployments first and then the profile images - parents: - - profile: deployments - - profile: images -- name: deployments - replace: - deployments: - - name: my-deployment - helm: - componentChart: true - values: - containers: - - name: test -- name: images - replace: - images: - test: - image: mydockeruser/devspace - createPullSecret: true -``` - - -It is also possible to load a profile from a different source with the option `profiles.*.parents.*.source` that can define profiles that lie in a different `devspace.yaml`: - -#### Example: Define a profile from a different devspace.yaml -```yaml -version: v1beta9 -profiles: -- name: dev - parents: - # Will load the profile images from the devspace.yaml specified in other-folder/devspace.yaml - - profile: images - source: - path: other-folder # devspace.yaml will be automatically appended to the path (same syntax as with dependencies) - # or load from url - # path: https://raw.githubusercontent.com/my-org/my-repo/master/devspace.yaml - # or load from git - # git: https://github.com/loft-sh/devspace.git - - profile: deployments - source: - path: other-folder-2 -``` - -Under `source` the same options can be specified as for loading [dependencies](../../configuration/dependencies/basics.mdx). - - diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/patches.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/patches.mdx deleted file mode 100644 index 1259d939b0..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/patches.mdx +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: "Profiles: Patches" -sidebar_label: patches ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -Patches are a way to perform minor overrides to the configuration without having to create a separate config file. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as well as enhanced `path` selectors, as implemented by the [yaml-jsonpath](https://github.com/vmware-labs/yaml-jsonpath) library. - -## Example -Patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {15-26} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[1].image - value: john/cache -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config would be patched with 3 patches. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Patches For Profile `production` -images: - backend: - image: john/prodbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend - - image: john/cache -``` - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `patches` -The `patches` option expects an array of patch objects which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the config (e.g. `images.backend.image`, `deployments.name=backend.helm.values.containers[1]`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `deployments[*].helm.values`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `deployments`), you have several options: - -1. Use the index of the array item you want to patch, e.g. `deployments[0]`, `deployments/0` -2. Use a property selector matching the array item(s) you want to patch, e.g. `deployments.name=backend` -3. Use a wildcard selector to match all array item(s), e.g. `deployments.*`,`deployments[*]` or `deployments/*` -4. Use a comparison selector matching the array item(s) you want to patch, e.g. `deployments[?(@.helm.timeout > 1000)]` -5. Use a regular expression selector matching the array item(s) you want to patch, e.g. `deployments[?(@.name=~/^production/)]` - -Using a selector rather than the array index is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -:::note -The `patches` of a profile can modify all parts of the configuration **except** the sections `profiles` and `commands`. -::: - -#### Example: Config Patches -```yaml {15-38} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: images.backend.image - value: john/stagingbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/stagingbackend - - op: remove - path: deployments.name=backend.helm.values.containers.image=john/debugger -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/debugger.image - value: john/cache -``` -**Explanation:** -- The above example defines 2 profiles: `staging`, `production` -- Users can use the flag `-p staging` to use the `staging` profile for a single command execution -- Users can use the flag `-p production` to use the `production` profile for a single command execution -- Users can permanently switch to the `staging` profile using: `devspace use profile staging` -- Users can permanently switch to the `production` profile using: `devspace use profile production` - -#### Example: Config Patches using Recursive Descent Selectors -```yaml {18,21,25,28} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/stagingbackend - - op: remove - path: deployments..[?(@.image=='john/debugger')] -- name: production - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/prodbackend - - op: replace - path: deployments..[?(@.image=='john/debugger')].image - value: john/cache -``` -**Explanation:** -- The above example has the same result as this [previous example](#example-config-patches). -- By using a recursive descent selector, we can change many `image` values at once. -- When the `staging` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/stagingbackend`, and all deployment containers with `image` property equal to `john/debugger` are removed. -- When the `production` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/prodbackend`, and all deployment containers with `image` property equal to `john/debugger` are changed to `john/cache`. - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.16/configuration/profiles/replace.mdx b/docs/versioned_docs/version-5.16/configuration/profiles/replace.mdx deleted file mode 100644 index 21c4a5d99d..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/profiles/replace.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Profiles: Replace" -sidebar_label: replace ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `replace` - -The `replace` option expects an object with the following (optional) fields: -- `images` which will replace the entire `images` section of the devspace.yaml -- `deployments` which will replace the entire `deployments` section of the devspace.yaml -- `dev` which will replace the entire `dev` section of the devspace.yaml -- `dependencies` which will replace the entire `dependencies` section of the devspace.yaml -- `hooks` which will replace the entire `hooks` section of the devspace.yaml - -#### Example: Using Config Replace For Profile `production` -```yaml {16-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - replace: - images: - backend: - image: john/prodbackend - patches: - - op: remove - path: deployments[0].helm.values.containers[1] -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config section `images` would be entirely replaced and additionally, 1 patch would be applied. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - -:::tip Combine Replace & Patches -As shown in this example, it is possible to use `replace` and `patch` options in combination. -::: - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.16/configuration/pullSecrets/basics.mdx b/docs/versioned_docs/version-5.16/configuration/pullSecrets/basics.mdx deleted file mode 100644 index 89a572cefc..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/pullSecrets/basics.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Pull Secrets -sidebar_label: pullSecrets ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to configure additional [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) that should be created in the target namespace. For each configured pull secret in the `devspace.yaml`, DevSpace will create a secret in the target namespace and add the secret to the `imagePullSecrets` field of the service account. - -For [images](../images/basics.mdx), DevSpace will also automatically create a pull secret, if authentication data can be found in the local docker store and creation is [enabled](../images/pull-secrets.mdx) via `createPullSecret`. - -Image Pull Secrets are defined in the `pullSecrets` section of the `devspace.yaml`. - - - - -```yaml -# If you don't want to specify the password and username directly in the config -# you can use variables, .env file or save the credentials in the local docker store -pullSecrets: -- registry: my-registry.com:5000 - username: ${REGISTRY_USER} - password: ${REGISTRY_PASSWORD} -``` - - - - -```yaml -# If you leave out the username & password DevSpace will try -# to get these from the local docker store. Make sure you -# are logged into the registry with `docker login my-registry.com:5000` -pullSecrets: -- registry: my-registry.com:5000 -``` - - - - -```yaml -pullSecrets: -- registry: my-registry.com:5000 - secret: my-pull-secret-name - serviceAccounts: - - default - - my-other-service-account -``` - - - - -## Configuration - -### `registry` -The `registry` option is mandatory and expects a string with the registry name for which a pull secret should be created for. - -### `username` -The `username` option is optional and expects a string with the username to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `password` -The `password` option is optional and expects a string with the password to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `email` -The `email` option is optional and expects a string with the email to login into the registry. This can be left empty usually since username and password are enough to log into a docker registry. If empty, the default value will be `noreply@devspace.cloud`. - -### `secret` -The `secret` option is optional and expects a string how the secret should be named. If empty, DevSpace will automatically create a meaningful name for the secret. - -### `serviceAccounts` -The `serviceAccounts` option is optional and expects an array of strings to which the pull secret should be added. If an image pull secret is added to a service account, the service account is able to pull images from that registry even without specifying the image pull secret in a pod definition. If this is empty, DevSpace will add the pull secret to the `default` serviceaccount. diff --git a/docs/versioned_docs/version-5.16/configuration/reference.mdx b/docs/versioned_docs/version-5.16/configuration/reference.mdx deleted file mode 100644 index c13959726e..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/reference.mdx +++ /dev/null @@ -1,410 +0,0 @@ ---- -title: Config Reference -sidebar_label: Config Reference ---- - -import FragmentConfigImages from '../fragments/config-images.mdx'; -import FragmentConfigDeployments from '../fragments/config-deployments.mdx'; -import FragmentConfigDev from '../fragments/config-dev.mdx'; -import FragmentConfigDependencies from '../fragments/config-dependencies.mdx'; -import FragmentConfigVars from '../fragments/config-vars.mdx'; -import FragmentConfigProfiles from '../fragments/config-profiles.mdx'; -import FragmentConfigCommands from '../fragments/config-commands.mdx'; -import FragmentConfigHooks from '../fragments/config-hooks.mdx'; -import WarningBuildToolPriority from '../fragments/warning-build-tool-priority.mdx'; - -## `version` -```yaml -version: v1beta11 # string | Version of the config -``` - -## `images` - - - -[Learn more about how to configure image building.](../configuration/images/basics.mdx) - -### `images[*].build` -```yaml -build: # struct | Build configuration for an image - docker: ... # struct | Build image with docker and set options for docker - kaniko: ... # struct | Build image with kaniko and set options for kaniko - custom: ... # struct | Build image using a custom build script - disabled: false # bool | Disable image building (Default: false) -``` -:::info -Setting the key `docker`, `kaniko`, `custom` or `disabled` will define the build tool for this image. - -- If neither `docker`, `kaniko`, `custom` nor `disabled` is specified, `docker` will be used by default. -- By default, `docker` will use `kaniko` as fallback when DevSpace is unable to reach the Docker host. -::: - - - -### `images[*].build.docker` -```yaml -docker: # struct | Options for building images with Docker - preferMinikube: true # bool | If available, use minikube's in-built docker daemon instaed of local docker daemon (default: true) - skipPush: false # bool | Skip pushing image to registry, enabled automatically for minikube and docker-desktop (Default: false) - disableFallback: false # bool | Disable using kaniko as fallback when Docker is not installed (Default: false) - useCli: false # bool | If true will use the docker cli for building - args: # []string | Additional arguments that should be used for executing the docker cli - - --any-flag - options: ... # struct | Set general build options -``` - -### `images[*].build.buildKit` -```yaml -buildKit: - skipPush: false # bool | If this is true, DevSpace will not push any images - preferMinikube: true # bool | If false, will not try to use the minikube docker daemon to build the image - args: [] # string[] | Additional arguments to call docker buildx build with - command: [] # string[] | Override the base command to create a builder and build images. Defaults to ["docker", "buildx"] - options: ... # struct | Set build general build options - inCluster: # struct | If specified, DevSpace will use BuildKit to build the image within the Kubernetes cluster - name: "" # string | Name is the name of the builder to use. If omitted, DevSpace will try to create - # | or reuse a builder in the form devspace-$NAMESPACE - namespace: "" # string | Namespace where to create the builder deployment in. Defaults to the current active namespace. - rootless: false # bool | If enabled will create a rootless BuildKit deployment. - image: "" # string | The docker image to use for the BuildKit deployment - nodeSelector: "" # string | The node selector to use for the BuildKit deployment - createArgs: [] # string[] | Additional args to create the builder with. - noCreate: false # bool | By default, DevSpace will try to create a new builder if it cannot be found. - # | If this is true, DevSpace will fail if the specified builder cannot be found. - noRecreate: false # bool | By default, DevSpace will try to recreate the builder if the builder configuration - # | in the devspace.yaml differs from the actual builder configuration. If this is - # | true, DevSpace will not try to do that. - noLoad: false # bool | If enabled, DevSpace will not try to load the built image into the local docker - # | daemon if skip push is defined -``` - -### `images[*].build.kaniko` -```yaml -kaniko: # struct | Options for building images with kaniko - cache: true # bool | Use caching for kaniko build process - annotations: {} # map | Extra annotations for the kaniko build pod - labels: {} # map | Extra labels for the kaniko build pod - snapshotMode: "time" # string | Type of snapshotMode for kaniko build process (compresses layers) - insecure: false # bool | Allow working with an insecure registry by not validating the SSL certificate (Default: false) - command: [] # string[] | Array of strings for the kaniko pod - args: [] # string[] | Array of additional args for kaniko build command - image: "" # string | Allows to change the kaniko image or kaniko version / image tag. - initImage: "" # string | Allows to change the init container kaniko image (defaults to alpine) - serviceAccount: "" # string | The service account to use for this build pod - nodeSelector: {} # map | A key value map of node labels to select a node for the build pod - pullSecret: "" # string | Mount this Kubernetes secret instead of creating one to authenticate to the registry (default: "") - additionalMounts: [] # struct[] | Array of mount configurations for Kubernetes Secrets and ConfigMaps that should be mounted into the kaniko build container - namespace: "" # string | Kubernetes namespace to run kaniko build pod in (Default: "" = deployment namespace) - options: ... # struct | Set build general build options - skipPullSecretMount: true # bool | If true devspace will not mount and create any image pull secret for the kaniko pod - env: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.value field) - my-string-env: value - envFrom: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.valueFrom field) - my-env-from-secret: - secretKeyRef: ... - my-env-from-configmap: - configMapKeyRef: ... - initEnv: {} # map | Key value pairs of enviroment variables that should be added to the kaniko init pod -``` - -### `images[*].build.custom` -```yaml -custom: # struct | Options for building images with a custom build script - command: "./scripts/builder" # string | Command to be executed for building (e.g. path to build script or executable) - commands: [] # struct[] | An array of objects with keys command and os to exchange the command for a specific os - args: [] # string[] | Array of arguments for the custom build command - appendArgs: [] # string[] | Args are prepended to the command (before the image tags) and appendArgs are appended - imageFlag: string # string | Name of the flag that DevSpace uses to pass the image name + tag to the build script - imageTagOnly: false # bool | If true devspace will only use the image tag as argument - skipImageArg: false # bool | If true devspace will skip adding image:tag as argument completely - onChange: [] # string[] | Array of paths (glob format) to check for file changes to see if image needs to be rebuilt -``` - -### `images[*].build.disabled` -```yaml -build: # struct | Build configuration for an image - disabled: true # bool | Disable image building (Default: false) -``` - -### `images[*].build.*.options` -```yaml -options: # struct | Options for building images - target: "" # string | Target used for multi-stage builds - network: "" # string | Network mode used for building the image - buildArgs: {} # map[string]string | Key-value map specifying build arguments that will be passed to the build tool (e.g. docker) -``` - - -## `deployments` - - - -:::info -Using the `helm` or `kubectl` key will define the type of deployment and the deployment tool to be used. -::: - -:::warning -You **cannot** use `helm` and `kubectl` in combination. -::: - -### `deployments[*].helm` -```yaml -helm: # struct | Options for deploying with Helm - chart: ... # struct | Relative path - componentChart: false # bool | Use the DevSpace component chart instead of a custom `chart` = deployment is a component (Default: false) - values: {} # struct | Any object with Helm values to override values.yaml during deployment - valuesFiles: # string[] | Array of paths to values files - - ./chart/my-values.yaml # string | Path to a file to override values.yaml with - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - wait: false # bool | Wait for pods to start after deployment (Default: false) - displayOutput: false # bool | Display output from helm install/upgrade (Default: false) - timeout: 180 # int | Timeout to wait for pods to start after deployment (Default: 180) - force: false # bool | Force deleting and re-creating Kubernetes resources during deployment (Default: false) - atomic: false # bool | Rollback deployment if it fails (Default: false) - cleanupOnFail: false # bool | Delete resources if rollback fails (Default: false) - recreate: false # bool | Recreate pods for applicable resources, e.g. deployments (Default: false) - disableHooks: false # bool | Disable hooks (Default: false) - v2: false # bool | Use legacy Helm v2 (Default: false) - tillerNamespace: "" # string | Kubernetes namespace to run Tiller in when using Helm v2 (Default: "" = same a deployment namespace) - deleteArgs: [] # []string | Extra args for the `helm delete` command during devspace purge - templateArgs: [] # []string | Extra args for the `helm template` command during devspace render - upgradeArgs: [] # []string | Extra args for the `helm upgrade` command during devspace deploy/dev - fetchArgs: [] # []string | Extra args for the `helm fetch` command during devspace render -``` -[Learn more about configuring deployments with Helm.](../configuration/deployments/helm-charts.mdx) - -### `deployments[*].helm.componentChart` -```yaml -helm: - componentChart: true # bool | Use Component chart - values: # struct | Options for deploying a component = Deployment/StatefulSet - initContainers: ... # struct[] | Init Containers of this Deployment/StatefulSet - containers: ... # struct[] | Containers of this Deployment/StatefulSet - labels: {} # map[string]string | Map of Kubernetes labels for labeling the pods of this component - annotations: {} # map[string]string | Map of Kubernetes annotations for annotating the pods of this component - volumes: ... # struct | Component volumes - service: ... # struct | Component service - serviceName: my-service # string | Service name for headless service (for StatefulSets) - ingress: ... # struct | Component ingress - replicas: 1 # int | Number of replicas (Default: 1) - autoScaling: ... # struct | AutoScaling configuration - rollingUpdate: ... # struct | RollingUpdate configuration - pullSecrets: ... # string[] | Array of PullSecret names - podManagementPolicy: OrderedReady # enum | "OrderedReady" or "Parallel" (for StatefulSets) - options: ... # struct | Options for deploying this component with helm -``` - -[Learn more about configuring the component chart.](https://devspace.sh/component-chart/docs/introduction) - -### `deployments[*].helm.chart` -```yaml -chart: # struct | Chart to deploy - name: my-chart # string | Path to local chart on filesystem OR chart name for remote chart in helm chart repository - version: v1.0.1 # string | Chart version - repo: "https://my-repo.tld/" # string | Helm chart repository - username: "my-username" # string | Username for Helm chart repository - password: "my-password" # string | Password for Helm chart repository -``` - -### `deployments[*].kubectl` -```yaml -kubectl: # struct | Options for deploying with "kubectl apply" - manifests: [] # string[] | Array containing glob patterns for the Kubernetes manifests to deploy using "kubectl apply" (e.g. kube or manifests/service.yaml) - kustomize: false # bool | Use kustomize when deploying manifests via "kubectl apply" (Default: false) - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - applyArgs: [] # string[] | Array of args for the "kubectl apply" command during deployment - createArgs: [] # string[] | Array of args for the "kubectl create" command during deployment - kustomizeArgs: [] # string[] | Array of args for the "kustomize build" command during deployment - deleteArgs: [] # string[] | Array of args for the "kubectl delete" command when purging deployments - cmdPath: "" # string | Path to the kubectl binary (Default: "" = detect automatically) -``` -[Learn more about configuring deployments with kubectl.](../configuration/deployments/kubernetes-manifests.mdx) - - -## `dev` - - - -[Learn more about configuring development mode.](../configuration/development/basics.mdx) - -### `dev.ports` -```yaml -ports: # struct[] | Array of port forwarding settings for selected pods -- name: somePort # string | Optional string stating the name of this port-forwarding configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - namespace: "" # string | Kubernetes namespace to select pods in - containerName: "" # string | Name of the container to select (only applies if reverseForward is used) - arch: "amd64" # string | Target architecture of the selected container (only applies if reverseForward is used) - forward: # struct[] | Array of ports to be forwarded - - port: 8080 # int | Forward this port on your local computer - remotePort: 3000 # int | Forward traffic to this port exposed by the pod/container selected - bindAddress: "" # string | Address used for binding / use 0.0.0.0 to bind on all interfaces (Default: "localhost" = 127.0.0.1) - reverseForward: # struct[] | Array of ports to reverse forward - - port: 3000 # int | Local port that should be accessible remotely - remotePort: 8080 # int | Port in the container where the local port can be accessed -``` -[Learn more about configuring port forwarding.](../configuration/development/port-forwarding.mdx) - -### `dev.open` -```yaml -open: # struct[] | Array of auto-open settings -- url: "https://localhost:3000/" # string | URL to open after application has started -``` -[Learn more about configuring auto-opening links.](../configuration/development/open-links.mdx) - -### `dev.sync` -```yaml -sync: # struct[] | Array of file sync settings for selected pods -- name: someSync # string | Optional string stating the name of this sync configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - localSubPath: ./ # string | Relative path to a local folder that should be synchronized (Default: "./" = entire project) - disableDownload: false # bool | If true will disable downloading files - disableUpload: false # bool | If true will disable uploading files - containerPath: /app # string | Path in the container that should be synchronized with localSubPath (Default is working directory of container (".")) - excludePaths: [] # string[] | Paths to exclude files/folders from sync in .gitignore syntax - excludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from sync - downloadExcludePaths: [] # string[] | Paths to exclude files/folders from download in .gitignore syntax - downloadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from download - uploadExcludePaths: [] # string[] | Paths to exclude files/folders from upload in .gitignore syntax - uploadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from upload - initialSync: mirrorLocal # enum | Specifies the initialSync algorithm: mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll (Default: mirrorLocal) - initialSyncCompareBy: mtime # enum | Specifies how the initialSync determines if a file has changed: mtime / size - waitInitialSync: false # bool | Wait until initial sync is completed before continuing (Default: false) - throttleChangeDetection: 100 # int | If greater zero, describes the amount of milliseconds to wait after each checked 100 files on the remote site - arch: "amd64" # string | Target architecture of the selected container - polling: false # bool | If polling should be used to detect file changes in the container - bandwidthLimits: # struct | Bandwidth limits for the synchronization algorithm - download: 0 # int64 | Max file download speed in kilobytes / second (e.g. 100 means 100 KB/s) - upload: 0 # int64 | Max file upload speed in kilobytes / second (e.g. 100 means 100 KB/s) - onUpload: # struct | After a file/folder has been uploaded to the container... - restartContainer: true # bool | Restart container after uploading files (requires images.*.injectRestartHelper: true) - execRemote: # struct | ...execute the following command inside the container: - command: chmod # string | Command to execute for files and folders - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onFileChange: # struct | Command to execute ONLY for files - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onDirCreate: # struct | Command to execute ONLY for newly created directories - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onBatch: # struct | Command to execute after sync has processed a full batch of files and folders - command: recompile # string | Command - args: # string[] | Argument list (NOTE: {} is NOT available for onBatch) - - assets # string | Arument 1 - - --minify # string | Argument 2 - onDownload: # struct | After a file/folder has been downloaded from the container to the local filesystem... - execLocal: # struct | ...execute the following command on the local machine: - command: chmod # string | Command to execute for files and folders - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onFileChange: # struct | Command to execute ONLY for files - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder - onDirCreate: # struct | Command to execute ONLY for newly created directories - command: chmod # string | Command - args: # string[] | Argument list - - +x # string | Argument 1 - - {} # string | Argument 2: {} will be replaced with path of the file/folder -``` -[Learn more about confguring the file synchronization.](../configuration/development/file-synchronization.mdx) - -### `dev.logs` -```yaml -logs: # struct | Options for multi-container log streaming in development mode - disabled: false # bool | Disable log streaming in development mode (Default: false) - showLast: 200 # int | Number of last log lines to show before starting stream (Default: 50) - sync: true # bool | If the sync log should be merged with container and pod logs - selectors: # struct[] | An array of label or image selectors to select pods to stream logs from - - labelSelector: - other: label - namespace: optional - containerName: optional - - imageSelector: nginx - namespace: optional -``` -[Learn more about configuring multi-container log streaming.](../configuration/development/log-streaming.mdx) - -### `dev.autoReload` -```yaml -autoReload: # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - paths: [] # string[] | Array containing glob patterns of files that are watched for auto-reloading (i.e. reload when a file matching any of the patterns changes) - deployments: [] # string[] | Array containing names of deployments to watch for auto-reloading (i.e. reload when kubectl manifests or files within the Helm chart change) - images: [] # string[] | Array containing names of images to watch for auto-reloading (i.e. reload when the Dockerfile changes) -``` - -### `dev.terminal` -```yaml -terminal: # struct | Options for terminal mode - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - command: [] # string[] | Array defining the shell command to start the terminal with (Default: ["sh", "-c", "command -v bash >/dev/null 2>&1 && exec bash || exec sh"]) - workDir: "" # string | The working directory where to execute the command or open the shell -``` - -[Learn more about terminal config options.](../configuration/development/terminal.mdx) - -### `dev.replacePods` -```yaml -replacePods: # struct[] | Which pods should be replaced -- imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - replaceImage: "" # string | The image that should be used for the pod - patches: # struct[] | Other patches that should be applied on the pod - - op: add # enum | Patch operation (replace, add, remove) - path: "spec.containers[0].command" # string | Jsonpath or xpath to config option that should be patched - value: ["sleep"] # arbitrary | Value to use for patch operation -``` - -[Learn more about replacing pods.](../configuration/development/replace-pods.mdx) - -## `dependencies` - - - -[Learn more about configuring dependencies.](./dependencies/basics.mdx) - -:::warning -You **cannot** use `source.git` and `source.path` in combination. You **must** exactly use one of the two. -::: - -## `hooks` - - - - -## `commands` - - - -[Learn more about configuring custom commands.](../configuration/commands/basics.mdx) - - -## `vars` - - - -[Learn more about configuring config variables.](../configuration/variables/basics.mdx) - - -## `profiles` - - - -[Learn more about configuring profiles and patches.](../configuration/profiles/basics.mdx) diff --git a/docs/versioned_docs/version-5.16/configuration/require/basics.mdx b/docs/versioned_docs/version-5.16/configuration/require/basics.mdx deleted file mode 100644 index b21908ec3f..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/require/basics.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Required Versions -sidebar_label: require ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of: - -- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version -- **Installed Plugins** (`require.plugins`): You can define required plugins and their version -- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range - -Requirements are defined in the `require` section of the `devspace.yaml`. - - - - -```yaml -# You can either specify an exact version or a version range or even -# multiple versions. -require: - devspace: '>= 4.0, < 6.0' -``` - - - - -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - - name: loft - version: ">= 1.11.0" -``` - - - - -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` - - - - -## Configuration - -### `devspace` -The `devspace` option can be used to define a version constraint for the DevSpace version that is required to use this config. Constraints can have `=`, `!=`, `<`, `>`, `>=` or `<=` in front of them and can be chained for a logical AND: -- **Exact Version**: `v1.0.0` -- **Newer Versions**: `>= v1.0.0` -- **Older Versions**: `< v1.0.0` -- **Multiple**: `>= v4.0.0, <= v8.0.0, != v5.0.0` - -### `plugins` -The `plugins` option takes an array of required plugins that need to be installed. For each plugin a name (`require.plugins[*].name`) and version constraint (`require.plugins[*].version`) is required. - -For example: -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - # Requires that the plugin loft is installed with at least version v1.11.0 - - name: loft - version: ">= 1.11.0" -``` - -### `commands` -The `commands` option takes an array of required commands that need to be installed. For each command a name (`require.commands[*].name`) and version constraint (`require.commands[*].version`) is required. By default, DevSpace will try to call the command via `NAME version` to figure out its version. DevSpace will use the regex `(v\\d+\\.\\d+\\.\\d+)` to parse the command version and assumes the first matching group contains the version. If no matching group can be found or the command does not exist, DevSpace will fail. - -You can override the arguments used by DevSpace to retrieve the command version via `require.commands[*].versionArgs`. You can also override the regex that is used by DevSpace to parse the command version via `require.commands[*].versionRegEx`. The version regex needs to define a single matching group that specifies the version. The first match of that matching group will be handled as command version by DevSpace. - -For example: -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` diff --git a/docs/versioned_docs/version-5.16/configuration/variables/basics.mdx b/docs/versioned_docs/version-5.16/configuration/variables/basics.mdx deleted file mode 100644 index 02ee654c22..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/variables/basics.mdx +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Config Variables -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to make your configuration dynamic by using variables in `devspace.yaml`. - -While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. Variables are defined within the `vars` section of `devspace.yaml`. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -# Variables defined by value will not -# be asked or overwritten through environment -- name: MYSQL_VERSION - value: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -```yaml {3,5-6} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - command: "echo 5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - - - - -```yaml {3} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: {} -``` - -:::tip -DevSpace allows you to use config variables without explicitly defining them as variables. You can simply reference them via `${MY_ENV_VAR}` anywhere in your `devspace.yaml`. Implicit variables use `source: all`. -::: - - - - -:::info Source -The `source` option of a config variable expects either: -- `all` means to check environment variables **first** and then ask a question if no env variable is defined (**default**) -- [`env`](../../configuration/variables/source-env.mdx) means to check environment variables **only** -- [`input`](../../configuration/variables/source-input.mdx) means to ask the user a question **once** (values will be cached in `.devspace/generated.yaml`) -- [`command`](../../configuration/variables/source-command.mdx) means DevSpace will not ask the user a question and instead execute a command to determine the value of the variable. -::: - -:::warning Pass Variables via CLI -A useful feature in DevSpace is that you can also specify variables as flags, which will override previous values (if there are any): -``` -devspace deploy --var VAR1=VALUE1 --var VAR2=VALUE2 -``` -::: - -:::note Input Caching -If `source` is either `all` or `input` and the variable is not defined, the user will be asked to provide a value either using a generic question or the one provided via the [`question`](../../configuration/variables/source-input.mdx#question) option. The user-provided value will be cached encrypted in `.devspace/generated.yaml` and the user will only be asked again after the cache has been cleared first using: -```bash -devspace reset vars -``` -::: - -To disable this functionality set the field `noCache` to `true`. This will make devspace prompt for the variable on every run. - -## Predefined Variables -DevSpace provides some variables that are filled automatically and can be used within the config. These can be helpful for image tagging and other use cases: - -- **DEVSPACE_RANDOM**: A random 6 character long string -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_GIT_BRANCH**: The current branch name of the local repo -- **DEVSPACE_NAMESPACE**: The default namespace of the current kube-context (= the namespace that you are deploying to) -- **DEVSPACE_CONTEXT**: Name of the current kube-context -- **DEVSPACE_VERSION**: The version of the devspace cli without a leading v (e.g. 5.4.3) -- **DEVSPACE_PROFILE**: The main profile used for DevSpace (value of the --profile flag) -- **DEVSPACE_USER_HOME**: The absolute path to the user's home directory - -#### Example: Using `${DEVSPACE_GIT_COMMIT}` -```yaml -images: - default: - image: myrepo/devspace - tag: ${DEVSPACE_GIT_COMMIT}-${DEVSPACE_TIMESTAMP} -``` -**Explanation:** -This config will tag the image in the form of `myrepo/devspace:d9b4bcd-1559766514`. Many other combinations are possible with this method. - - - -## Useful Commands - -### `devspace list vars` -To get a list of all variables defined in the `devspace.yaml`, you can run this command: -```bash -devspace list vars -``` - -### `devspace reset vars` -Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run: -```bash -devspace reset vars -``` - -DevSpace will fill the variables cache again, once you run the next build or deployment command. - -### `devspace print` -The following command prints the config after all variables have been replaced: -```bash -devspace print -``` -You can optionally add the `-p / --profiles` flag to this command. - -### `export VAR_NAME=value` -The value for a config variable can also be set by defining an environment variable named `[VAR_NAME]`. Setting the value of a config variable with name `${IMAGE_NAME}` would be possible by setting an environment value `IMAGE_NAME`. - - - - - -```powershell -$env:IMAGE_NAME = "some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - diff --git a/docs/versioned_docs/version-5.16/configuration/variables/source-command.mdx b/docs/versioned_docs/version-5.16/configuration/variables/source-command.mdx deleted file mode 100644 index cc991a30f8..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/variables/source-command.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Variables From Commands -sidebar_label: "source: command" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `command`, DevSpace will **not** ask the user a question and instead execute a command to determine the value of the variable. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - # Will execute the command in a Golang Shell (cross plattform compatible) - command: "echo 5.5" -``` - -If you need different commands depending on the operating system you can use `commands`: -```yaml {3,7-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - commands: - - command: bash - args: ["-c", "echo '5.5'"] - os: linux,darwin - command: echo - args: ["5.5"] -``` - -:::info -If not command for the current operating system can be found under `commands`, the `command` and `args` will be used as fallback. -::: - - - -## Configuration - -### `name` - - - - -### `command` & `args` - -The command and arguments to execute to retrieve the value of the variable. The captured stdout of the command will be used as variable value. Whitespaces and newlines will be trimmed from the command output. - -:::tip -You can use other variables in the command or args definition as long as they are either a predefined variable or defined before the variable in the `vars` array. For example: -```yaml -vars: -- name: SECRET_NAME - source: env -- name: SECRET_VALUE - command: ./retrieve-secret-value.sh - args: ["--secret-name=${SECRET_NAME}", "--namespace=${DEVSPACE_NAMESPACE}"] -``` -::: - -### `commands` - -Commands expects an array of objects that define commands for specific operating systems. If no command can be found for the current operating system in `commands`, then `command` will be used as fallback. - -```yaml -vars: -- name: MYSQL_VERSION - source: command - commands: - # Use command on linux - - command: bash - args: ["-c", "echo '5.5'"] - os: linux - # Use command on mac - - command: bash - args: ["-c", "echo '5.6'"] - os: darwin - # Use on all other operating systems - command: echo - args: ["5.5"] -``` - -### `default` - -If the command returns nothing, this is the value that will be used for this variable. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.16/configuration/variables/source-env.mdx b/docs/versioned_docs/version-5.16/configuration/variables/source-env.mdx deleted file mode 100644 index a073063561..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/variables/source-env.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Environment Variables -sidebar_label: "source: env" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `env`, DevSpace will **not** ask the user a question and instead use environment variables to determine the value of the variable. -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - -:::info -If `source` is `env` and the environment variable is **not** defined, DevSpace will use the [`default` value](#default) or terminate with a fatal error, if there is **no** [`default` value](#default) configured. -::: - - - -## Configuration - -### `name` - - - - -### `default` - - diff --git a/docs/versioned_docs/version-5.16/configuration/variables/source-input.mdx b/docs/versioned_docs/version-5.16/configuration/variables/source-input.mdx deleted file mode 100644 index 0cd204053c..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/variables/source-input.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Input-based Variables -sidebar_label: "source: all | input" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If `source: all (default) | input`, DevSpace may ask the user a question to determine the value of a config variable. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -:::tip Ignore Env Variables -If you want DevSpace to ignore environment variables, you can explicitly define `source: input` to make sure only explict user input will be used to set the value of the variable. -::: - - - - -## Configuration - -### `name` - - - - -### `default` - - - - -### `question` -The `question` option expects a string with a question that will be asked when the variable is not defined. DevSpace tries to resolve the variable according to the `source` of the variable and if it is not set via any of the accepted sources, DevSpace will prompt the user to define the value by entering a string. - -:::note Question -- Defining the `question` is optional but often helpful to provide a better usability for other users. -- If [valid `options` for the variable value](#options) are configured, DevSpace will show a picker/selector instead of a regular input field/prompt. -- If a [`default` value](#default) is configured for the variable, DevSpace will use this [`default` value](#default) as default answer for the question that can be easily selected by pressing enter. -::: - -#### Default Value For `question` -```yaml -question: Please enter a value for [VAR_NAME] # using the variable name -``` - - -### `options` -The `options` option expects an array of strings with each string stating a allowed value for the variable. - -#### Example: Define Variable Options -```yaml -vars: -- name: REGISTRY - question: Which registry do you want to push to? - source: input - options: - - hub.docker.com - - my.private-registry.tld - - gcr.io - default: my.private-registry.tld -``` -**Explanation:** -If the variable `REGISTRY` is used for the first time during `devspace deploy`, DevSpace will ask the user to select which value to use by showing this question: -```bash -Which registry do you want to push to? (Default: my.private-registry.tld) -Use the arrows UP/DOWN to select an option and ENTER to choose the selected option. - hub.docker.com -> my.private-registry.tld - gcr.io -``` - -### `noCache` -The `noCache` option expects a boolean that disables the caching behavior for variables. When set to `true`, this will prompt the user on every run and will not save the value. - -#### Default Value For `noCache` -```yaml -noCache: false -``` - -### `password` -The `password` option expects a boolean that defines if DevSpace should hide the user input when the user provides the value for this variable by entering a response to the question asked in the command line. - -#### Default Value For `password` -```yaml -password: false -``` - -#### Example: Hide User Response -```yaml -vars: -- name: REGISTRY_TOKEN - question: "Please enter your registry token:" - source: input - password: true -``` -**Explanation:** -If the variable `REGISTRY_TOKEN` is used for the first time during `devspace deploy`, DevSpace will ask the user to provide a value by showing this question: -```bash -? Please enter your registry token: ******* -``` -The response the user enters will be hidden as `*******` to protect others from seeing the input while the user is typing. - - -### `validationPattern` -The `validationPattern` option expects a string stating a regular expression that validates if the value entered by the user is allowed as a value for this variable. - -:::info -If the provided value does **not** match the regex in `validationPattern`, DevSpace will either show a generic error message or the message provided in [`validationMessage`](#validationmessage). -::: - -### `validationMessage` -The `validationMessage` option expects a string stating an error message that is shown to the user when providing a value for the variable that does not match the regex provided in [`validationPattern`](#validationpattern). diff --git a/docs/versioned_docs/version-5.16/configuration/variables/source-none.mdx b/docs/versioned_docs/version-5.16/configuration/variables/source-none.mdx deleted file mode 100644 index f14ae1345b..0000000000 --- a/docs/versioned_docs/version-5.16/configuration/variables/source-none.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Fixed Variables -sidebar_label: "value" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; - -You can specify fixed variables with the `value` field. This cannot be used together with `default` in a single variable definition. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - value: "5.5" -- name: NAMESPACE - value: ${DEVSPACE_NAMESPACE}-suffix -# If you set 'default: my-value' and 'source: none' will be -# internally converted to 'value: my-value'. -# Both variable definitions below are handled exactly the same -- name: SOURCE_NONE - default: my-value - source: none -- name: SOURCE_NONE - value: my-value -``` - -:::note OVERWRITING -If you want to overwrite a fixed variable, you can use the `--var FIXED=new-value` flag -::: - -## Configuration - -### `name` - - - -### `value` - -The `value` option expects a string, integer or boolean defining the value for the variable. You can also use other variables in a value, with one of the following conditions being true: - -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable diff --git a/docs/versioned_docs/version-5.16/fragments/build-option-buildArgs.mdx b/docs/versioned_docs/version-5.16/fragments/build-option-buildArgs.mdx deleted file mode 100644 index e393e26231..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/build-option-buildArgs.mdx +++ /dev/null @@ -1,16 +0,0 @@ -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/versioned_docs/version-5.16/fragments/build-option-network.mdx b/docs/versioned_docs/version-5.16/fragments/build-option-network.mdx deleted file mode 100644 index 550dad783c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/build-option-network.mdx +++ /dev/null @@ -1,15 +0,0 @@ - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. diff --git a/docs/versioned_docs/version-5.16/fragments/build-option-target.mdx b/docs/versioned_docs/version-5.16/fragments/build-option-target.mdx deleted file mode 100644 index 9755b00e7c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/build-option-target.mdx +++ /dev/null @@ -1,14 +0,0 @@ -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. diff --git a/docs/versioned_docs/version-5.16/fragments/choose-project.mdx b/docs/versioned_docs/version-5.16/fragments/choose-project.mdx deleted file mode 100644 index 6876c72e5d..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/choose-project.mdx +++ /dev/null @@ -1,87 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-nodejs -cd devspace-quickstart-nodejs -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-python -cd devspace-quickstart-python -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-ruby -cd devspace-quickstart-ruby -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-golang -cd devspace-quickstart-golang -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-java -cd devspace-quickstart-java -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-php -cd devspace-quickstart-php -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-asp-dotnet -cd devspace-quickstart-asp-dotnet -``` - - - - -```bash -# Navigate to the root directory of your project -cd /path/to/your/project -``` - -:::info -If you are using DevSpace for the first time, it is highly recommended that you use one of the demo projects. -::: - - - diff --git a/docs/versioned_docs/version-5.16/fragments/config-dependencies.mdx b/docs/versioned_docs/version-5.16/fragments/config-dependencies.mdx deleted file mode 100644 index 67031ce3e7..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-dependencies.mdx +++ /dev/null @@ -1,24 +0,0 @@ -```yaml -dependencies: # struct[] | Array of dependencies (other projects containing a devspace.yaml or devspace-configs.yaml) that need to be deployed before this project -- source: # struct | Defines where to find the dependency (exactly one source is allowed) - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository (recommended method for referencing dependencies, must have the format of the git remote repo as usually checked out via git clone) - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer (not recommended, instead of using git-related options) - profiles: [] # string[] | Profiles used to deploy this dependency (when multiple profiles are defined in the devspace.yaml of the dependency) - skipBuild: false # bool | Do not build images of this dependency (= only start deployments) - ignoreDependencies: false # bool | Do not build and deploy dependencies of this dependency - namespace: "" # string | Kubernetes namespace to deploy dependency to (Default: default namespace of current kube-context) - dev: # struct | Define which dev config should be reused from a dependency - ports: false # bool | Reuse dev.ports config from the dependency - sync: false # bool | Reuse dev.sync config from the dependency - overwriteVars: true # bool | If not defined or true, will overwrite values of variables with the same name in the dependency - vars: # struct[] | Variables in the dependency config that should be overriden with the specified values - - name: NAME - value: value - disableProfileActivation: true # bool | If true will ignore profile activations for this dependency -``` diff --git a/docs/versioned_docs/version-5.16/fragments/config-deployments.mdx b/docs/versioned_docs/version-5.16/fragments/config-deployments.mdx deleted file mode 100644 index 9e8c34ce4e..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-deployments.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -deployments: # struct[] | Array of deployments -- name: my-deployment # string | Name of the deployment - namespace: "" # string | Namespace to deploy to (Default: "" = namespace of the active namespace/Space) - helm: ... # struct | Use Helm as deployment tool and set options for Helm - kubectl: ... # struct | Use "kubectl apply" as deployment tool and set options for kubectl -``` diff --git a/docs/versioned_docs/version-5.16/fragments/config-dev.mdx b/docs/versioned_docs/version-5.16/fragments/config-dev.mdx deleted file mode 100644 index 04b77d614e..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-dev.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```yaml -dev: # struct | Options for "devspace dev" - ports: [] # struct[] | Array of port-forwarding settings for selected pods - open: [] # struct[] | Array of auto-open settings - sync: [] # struct[] | Array of file sync settings for selected pods - logs: ... # struct | Options for configuring multi-container log streaming - autoReload: ... # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - interactive: ... # struct | Options for configuring the interactive mode -``` diff --git a/docs/versioned_docs/version-5.16/fragments/config-hooks.mdx b/docs/versioned_docs/version-5.16/fragments/config-hooks.mdx deleted file mode 100644 index 474e517413..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-hooks.mdx +++ /dev/null @@ -1,35 +0,0 @@ -```yaml -hooks: # struct[] | Array of hooks to be executed. A hook can only have either one of the following fields defined: - # | - hooks[*].command which will either execute a command locally or remotely in a container - # | - hooks[*].upload which will upload files or folders into a container - # | - hooks[*].download which will download files or folder from a container - # | - hooks[*].wait which will wait for a container to become running or terminate - # | - hooks[*].logs which will print the logs for a certain container -- events: ["before:deploy"] # struct | Events at which this hook should get executed - command: "echo Hello World!" # string | Command to be executed when this hook is triggered (if no args a specified, will be executed in a golang shell) - args: [] # string[] | (Optional) Array of arguments for the command of this hook. If this is specified, command has to be present in PATH - upload: # struct | If defined will upload files or folders into the container. - localPath: ./test # string | The local path of the file or folder - containerPath: /app # string | The remote path where to upload the file or folder into - download: # struct | If defined will download files or folders from the container. - containerPath: /app # string | The remote path where to download the file or folder from - localPath: ./test # string | The local path where to download the file or folder - logs: # struct | If logs is defined will print the logs of the target container. This is useful for containers - # | that should finish like init containers or job pods. Otherwise this hook will never terminate. - tailLines: /app # int | If set, the number of lines from the end of the logs to show - wait: # struct | If wait is defined the hook will wait until the matched pod or container is running or is terminated - # | with a certain exit code. - running: true # bool | If running is true, will wait until the matched containers are running. Can be used together with terminatedWithCode. - terminatedWithCode: 0 # int | If terminatedWithCode is not nil, will wait until the matched containers are terminated with the given exit code. - # | If the container has exited with a different exit code, the hook will fail. Can be used together with running. - timeout: 150 # int | Timeout of seconds to wait for matched containers to reach the given state until the hook will fail. - os: darwin # string | If specified then this hook is only executed on the given operating system - background: false # bool | If true DevSpace will not wait for the command to finish and directly move on - silent: false # bool | If true DevSpace will not print any command output to the console - container: # struct | If specified, DevSpace will run the command in the container instead of locally - imageSelector: nginx # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - once: "" # bool | If true the command will execute once - unless the targeted container is restarted and the hook is re-executing according to its lifecycle events (default false) -``` diff --git a/docs/versioned_docs/version-5.16/fragments/config-images.mdx b/docs/versioned_docs/version-5.16/fragments/config-images.mdx deleted file mode 100644 index bbe9866f5a..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-images.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - random-#### # | Each hashtag is replaced with a random character during building - dockerfile: ./Dockerfile # string | Relative path to the Dockerfile used for building (Default: ./Dockerfile) - context: ./ # string | Relative path to the context used for building (Default: ./) - entrypoint: [] # string[] | Override ENTRYPOINT defined in Dockerfile - cmd: [] # string[] | Override CMD defined in Dockerfile - createPullSecret: true # bool | Create a pull secret containing your Docker credentials (Default: false) - rebuildStrategy: '' # string | One of [always, ignoreContextChanges] which determines when DevSpace rebuilds the image - injectRestartHelper: true # bool | If true will inject the restart helper into the container to restart the container automatically - restartHelperPath: ./script.sh # string | If configured devspace will inject this script into the container and wrap the ENTRYPOINT around this - appendDockerfileInstructions: # string[] | Dockerfile instructions that should be appended for the current build - - USER root - build: ... # struct | Build options for this image - image2: ... -``` diff --git a/docs/versioned_docs/version-5.16/fragments/config-vars.mdx b/docs/versioned_docs/version-5.16/fragments/config-vars.mdx deleted file mode 100644 index 4de01ec20c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/config-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -```yaml -vars: # struct[] | Array of config variables -- name: CONFIG_VAR # string | Name of the config variable - value: my-value # any | The fixed value of the config variable - question: "What is CONFIG_VAR?" # string | Question to ask the user if no value is found for variable - options: [] # string[] | Options for picker (selector) to show to user (to choose a value for variable) - noCache: false # bool | Disable caching and prompt for value on every run. - password: false # bool | Hide user input when providing value via command-line, i.e. replaces input with `*****` (Default: false) - validationPattern: "" # string | Regexp to validate user input - validationMessage: "" # string | Message to show to user for input validation - default: "" # any | Default value for variable - source: "all" # enum | Source for variable (all = default, env, input, command) - command: "" # string | If specified will retrieve the variable from the command - args: [] # string[] | The arguments for the command to retrieve the variable from - commands: - - command: "" # string | Os specified command to retrieve the variable from - args: [] # string[] | The arguments for the os specific command - os: darwin # string | The os to execute this command on -``` diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-dev.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-dev.mdx deleted file mode 100644 index 18c24044ac..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-dev.mdx +++ /dev/null @@ -1,24 +0,0 @@ -The `dev` option allows you to reuse certain parts of a dependencies `dev` configuration. - -:::note -If `dev` configuration is reused this will be merged into the top-level `devspace.yaml` and executed after image building and deployment -::: - -#### Example: Override Config Vars for Dependency -```yaml -# This will use the dev.ports configuration of the dependency -# component-1 -dependencies: -- source: - path: component-1 - dev: - ports: true -``` - -### `dev.ports` - -If enabled will reuse the dependency's `dev.ports` configuration. - -### `dev.sync` - -If enabled will reuse the dependency's `dev.sync` configuration. **The base path of the sync configurations reused from a dependency is the folder where the dependency is saved in and not the current working directory.** diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-ignoreDependencies.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-ignoreDependencies.mdx deleted file mode 100644 index 43fbfdfd5f..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-ignoreDependencies.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `ignoreDependencies` option expects a boolean that defines if the dependencies of this dependencies should not be resolved and deployed. - -:::info -Using `ignoreDependencies` can be useful to prevent problematic **circular dependencies**. -::: - -#### Default Value For `ignoreDependencies` -```yaml -ignoreDependencies: false -``` - -#### Example: Ignore Dependencies of Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - ignoreDependencies: true -``` diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-name.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-name.mdx deleted file mode 100644 index 113b05ec86..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-name.mdx +++ /dev/null @@ -1,10 +0,0 @@ -The `name` option is optional and expects a string stating the name of this dependency. - -:::note -Adding a `name` for a dependency makes it possible to reference the dependency using flags, e.g. -```bash -devspace deploy --dependency=[name] -devspace purge --dependency=[name] -devspace render --dependency=[name] -``` -::: diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-namespace.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-namespace.mdx deleted file mode 100644 index 7b19c52545..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-namespace.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `namespace` option is optional and expects a string stating a namespace that should be used to deploy the dependency to. - -:::note -By default, DevSpace deploys project dependencies in the same namespace as the project itself. -::: - -:::info -You should only use the `namespace` option if you are an advanced user because using this option requires any user that deploys this project to be able to create this namespace during the deployment process or to have access to the namespace with the current kube-context, if the namespace already exists. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-profile.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-profile.mdx deleted file mode 100644 index c239f9232c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-profile.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `profile` option expects a string with the name of a profile defined in the `devspace.yaml` of this dependency. When configuring this option, this profile will be used to deploy the dependency, i.e. the dependency will be deployed similar to running `devspace deploy -p [profile]` within the folder of the dependency. - -#### Example: Use Config Profile for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - profile: production -``` diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-skipBuild.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-skipBuild.mdx deleted file mode 100644 index 96fee3ea55..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-skipBuild.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `skipBuild` option expects a boolean that defines if the image building process should be skipped when deploying this dependency. This is often useful if you rather want to use the tags that are defined in the deployment files (e.g. manifests or helm charts) which may reference more stable, production-like versions of the images. - -:::info -Using `skipBuild` is useful when trying to speed up the dependency deployment process, especially when working with many dependencies that frequently change. -::: - -#### Default Value For `skipBuild` -```yaml -skipBuild: false -``` - -#### Example: Skip Build for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - skipBuild: true -``` diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-vars.mdx b/docs/versioned_docs/version-5.16/fragments/dependency-vars.mdx deleted file mode 100644 index 9348f9e66e..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/dependency-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -The `vars` option expects an array of objects with name and value of variables defined in the `devspace.yaml` of this dependency. When configuring this option, the variables will be overriden similar to passing variables via the `--var` flag to devspace. -It is also useful to deploy the same dependency multiple times with just small adjustments. - -#### Example: Override Config Vars for Dependency -```yaml -# This will deploy the api server two times with -# different variable configurations -dependencies: -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-1 -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-2 -``` diff --git a/docs/versioned_docs/version-5.16/fragments/faq-image-context.mdx b/docs/versioned_docs/version-5.16/fragments/faq-image-context.mdx deleted file mode 100644 index ca104f7443..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/faq-image-context.mdx +++ /dev/null @@ -1,10 +0,0 @@ -
-What does "context" mean in terms of image building? - -
- -The context is archived and sent to the Docker daemon before starting to process the Dockerfile. All references of local files within the Dockerfile are relative to the root directory of the context. - -That means that a Dockerfile statement such as `COPY ./src /app` would copy the folder `src/` within the context path into the path `/app` within the container image. So, if the context would be `/my/project/database`, for example, the folder that would be copied into `/app` would have the absolute path `/my/project/database/src` on your local computer. - -
diff --git a/docs/versioned_docs/version-5.16/fragments/info-component-chart.mdx b/docs/versioned_docs/version-5.16/fragments/info-component-chart.mdx deleted file mode 100644 index 298ca4cdf0..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/info-component-chart.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::info Component Chart Docs -The component chart is a flexible Helm chart for deploying custom applications in a standardized manner. Learn more in the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/install-cli.mdx b/docs/versioned_docs/version-5.16/fragments/install-cli.mdx deleted file mode 100644 index 77f86a4251..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/install-cli.mdx +++ /dev/null @@ -1,88 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - -DevSpace is a client-only binary. It is super lightweight, does not require any server-side component, and it does not have any dependencies. - - - - -```bash -npm install -g devspace -``` - - - - -```bash -yarn global add devspace -``` - - - - -```bash -brew install devspace -``` - - - - -```bash -# AMD64 / Intel -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 / Silicon Mac -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```bash -# AMD64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```powershell {4} -md -Force "$Env:APPDATA\devspace"; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'; -Invoke-WebRequest -UseBasicParsing ((Invoke-WebRequest -URI "https://github.com/loft-sh/devspace/releases/latest" -UseBasicParsing).Content -replace "(?ms).*`"([^`"]*devspace-windows-amd64.exe)`".*","https://github.com/`$1") -o $Env:APPDATA\devspace\devspace.exe; -$env:Path += ";" + $Env:APPDATA + "\devspace"; -[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User); -``` - -:::info Check Environment Variable $PATH -Line 4 of this install script adds the install directory `%APPDATA%\devspace` to the `$PATH` environment variable. This is only effective for the current powershell session, i.e. when opening a new terminal window, `devspace` may not be found. - -**Make sure to add the folder `%APPDATA%\devspace` to the `PATH` environment variable after installing DevSpace via Powershell. Afterwards, a reboot might be necessary.** - -To confirm that DevSpace is successfully installed, reboot and test via: -```bash -devspace --version -``` -::: - - - - -Alternatively, you can simply download the binary for your platform from the [GitHub Releases](https://github.com/loft-sh/devspace/releases) page and add this binary to your PATH. diff --git a/docs/versioned_docs/version-5.16/fragments/kube-context.mdx b/docs/versioned_docs/version-5.16/fragments/kube-context.mdx deleted file mode 100644 index f1eb89c0ce..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kube-context.mdx +++ /dev/null @@ -1,114 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Step from '@site/src/components/Step/Step'; -import FragmentTipUseNamespace from './tip-use-namespace.mdx'; -import FragmentNoteCreateSpace from './note-create-space.mdx'; - - - - -:::note Local Clusters -Local clusters run on your local dev machine and include: minikube, kind, k3s, mikrok8s etc. -::: - -If you want to deploy to a local Kubernetes cluster, make sure your **current kube-context** points to this cluster and tell DevSpace which namespace to use: - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -:::note Remote Clusters -Remote clusters run in a cloud or private data center and include: GKE, EKS, AKS, bare metal etc. -::: - - - - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -#### Kubernetes multi-tenancy - -One of the options for setting up a multi-tenant Kubernetes environment would be to use [Loft](https://loft.sh/). -It allows the developers to create isolated Kubernetes environments in a self-service fashion. - -[Loft](https://loft.sh/) offers a wide range of features to facilitate multi-tenancy in Kubernetes. One of such features is the ability to create [Virtual Clusters](https://loft.sh/features/virtual-kubernetes-clusters) - a lightweight, fully functional and certified Kubernetes distribution that runs fully within the host cluster. - -[Loft](https://loft.sh/) also adds a resource called "Space" into your Kubernetes cluster. A "Space" is a virtual representation of a Kubernetes namespace, and we will be creating one in the steps below. - - -#### How to use Loft - -1 - -#### Setup Loft and connect your cluster - -See the [Loft getting started guide](https://loft.sh/docs/getting-started/setup) for details. - -
-2 - -#### Install the Loft plugin for DevSpace - -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -
-3 - -#### Login to Loft via DevSpace - -```bash -devspace login https://your-loft-instance.tld -``` - -
-4 - -#### Create isolated namespaces (= Spaces) - -```bash -devspace create space my-app -``` - - - -
-5 - -#### Add cluster users and allow them to create Spaces - -Learn more about how to do this in the [Loft documentation](https://loft.sh/docs/getting-started/cluster-accounts). - -
-
- -
-
diff --git a/docs/versioned_docs/version-5.16/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-5.16/fragments/kubectl-kustomize.mdx deleted file mode 100644 index a70dde2e5e..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kubectl-kustomize.mdx +++ /dev/null @@ -1,21 +0,0 @@ -The `kustomize` option expects a boolean stating if DevSpace should deploy using `kustomize` (or alternatively: `kubectl apply -k`). - -:::warning -If you set `kustomize = true`, all of your `manifests` must be paths to Kustomizations. If you want to deploy some plain manifests and some Kustomizations, create multiple deployments for each of them. -::: - -#### Default Value for `kustomize` -```yaml -kustomize: false -``` - -#### Example: Kustomize -```yaml {4} -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - kustomization1/ - - glob/path/to/more/kustomizations/ -``` diff --git a/docs/versioned_docs/version-5.16/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-5.16/fragments/kubectl-options-applyArgs.mdx deleted file mode 100644 index b1ba2ed738..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kubectl-options-applyArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `applyArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl apply`. - -:::info Apply for Kustomize Deployments -Even if you set `kustomize: true`, DevSpace only renders the manifest templates using kustomize but the actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `applyArgs` -```yaml -applyArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - applyArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl apply --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.16/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-5.16/fragments/kubectl-options-cmdPath.mdx deleted file mode 100644 index 337bdb4e2a..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kubectl-options-cmdPath.mdx +++ /dev/null @@ -1,20 +0,0 @@ -The `cmdPath` option expects an array of strings stating additional flags and flag values that should be used when calling `kubectl apply`. - -:::warning -Setting `cmdPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kubectl` to your `$PATH` environment variable instead. -::: - -#### Example: Setting Path To Kubectl Binary -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - cmdPath: /path/to/kubectl -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -/path/to/kubectl apply -f backend/ -``` diff --git a/docs/versioned_docs/version-5.16/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-5.16/fragments/kubectl-options-deleteArgs.mdx deleted file mode 100644 index 70a473533c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kubectl-options-deleteArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `deleteArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl delete`. - -:::info Purging Deployments -For plain manifests or Kustomizations, DevSpace uses `kubectl delete` to remote deployments when you run the command `devspace purge`. -::: - -#### Default Value for `deleteArgs` -```yaml -deleteArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - deleteArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl delete --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.16/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-5.16/fragments/kubectl-replaceImageTags.mdx deleted file mode 100644 index aae897a71a..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/kubectl-replaceImageTags.mdx +++ /dev/null @@ -1,22 +0,0 @@ -The `replaceImageTags` option expects a boolean stating if DevSpace should replace/update all image tags before deploying the project. - -By default, DevSpace searches all your manifests for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml {4} -deployments: -- name: backend - kubectl: - replaceImageTags: false - manifests: - - backend/ -``` diff --git a/docs/versioned_docs/version-5.16/fragments/note-create-space.mdx b/docs/versioned_docs/version-5.16/fragments/note-create-space.mdx deleted file mode 100644 index d0e360b7bd..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/note-create-space.mdx +++ /dev/null @@ -1,6 +0,0 @@ -:::note Kube-Context -DevSpace automatically sets up a kube-context for this Space, so you can also access your namespace using `kubectl`, `helm` or any other Kubernetes tool. Try it: -```bash -kubectl get pods -``` -::: diff --git a/docs/versioned_docs/version-5.16/fragments/note-general-purpose-command.mdx b/docs/versioned_docs/version-5.16/fragments/note-general-purpose-command.mdx deleted file mode 100644 index 6ef545d400..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/note-general-purpose-command.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note -This command is a general purpose command which also works for any pod/container in Kubernetes even if you are not within a DevSpace project. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/profiles-apply-multiple.mdx b/docs/versioned_docs/version-5.16/fragments/profiles-apply-multiple.mdx deleted file mode 100644 index a0b6b3dace..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/profiles-apply-multiple.mdx +++ /dev/null @@ -1,11 +0,0 @@ -:::tip Apply Multiple Profiles with Flags - -It is possible to apply multiple profiles in a single command with the `--profile` flag. This flag can take one or multiple profiles that will be applied in the order that they are specified. - -Example: -``` -# Apply profile1, profile2 and profile3 in this order -devspace print --profile profile1 --profile profile2 --profile profile3 -``` - -::: \ No newline at end of file diff --git a/docs/versioned_docs/version-5.16/fragments/selector-image-selector.mdx b/docs/versioned_docs/version-5.16/fragments/selector-image-selector.mdx deleted file mode 100644 index 1241bb350c..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/selector-image-selector.mdx +++ /dev/null @@ -1,35 +0,0 @@ -The `imageSelector` option expects a string that specifies an image (e.g. `my-registry.com/lib/my-image:tag`) to select a target pod and container with. The newest running pod that has a container which matches this image will be selected by DevSpace. - -In addition, you can also reference images from the `images` section in the `imageSelector` with: -- If the image in `imageSelector` matches a `images.*.image`, DevSpace will automatically append the latest built tag during runtime to the `imageSelector`. -- You can also let DevSpace resolve the target image and tag by using the helpers `image()` or `tag()` - -For example: -```yaml -images: - app: - image: my-registry.com/lib/my-image -dev: - ... - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/other-image:latest - - imageSelector: my-registry.com/lib/other-image:latest - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: my-registry.com/lib/my-image - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(my-registry.com/lib/my-image):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(app):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: image(app):tag(app) - # DevSpace will search for the newest pod with a container that - # uses the image of app of dependency dep1 with the latest built tag by DevSpace - - imageSelector: image(dep1.app):tag(dep1.app) -``` - - - diff --git a/docs/versioned_docs/version-5.16/fragments/selector-label-selector.mdx b/docs/versioned_docs/version-5.16/fragments/selector-label-selector.mdx deleted file mode 100644 index fad0db8fad..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/selector-label-selector.mdx +++ /dev/null @@ -1 +0,0 @@ -The `labelSelector` option expects a key-value map of strings with Kubernetes labels. This can be used to select the correct target pod with labels instead of the image name like `imageSelector` or `imageName`. If the pod you want to select has multiple containers, make sure to use `containerName` as well. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.16/fragments/tip-print-config.mdx b/docs/versioned_docs/version-5.16/fragments/tip-print-config.mdx deleted file mode 100644 index 0be65df779..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/tip-print-config.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The following command is useful to verify that the profile modifies the config as intended: -```bash -devspace print -p profile-1 -p profile-2 -``` -The above command would print the config after applying all profile `patches` and `replace` statements from `profile-1` first and then `profile-2`. diff --git a/docs/versioned_docs/version-5.16/fragments/tip-use-namespace.mdx b/docs/versioned_docs/version-5.16/fragments/tip-use-namespace.mdx deleted file mode 100644 index 91299c6d90..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/tip-use-namespace.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::tip Kube-Context Namespace -Running the command above will change the default namespace of your kube-context, i.e. instead of using the `default` namespace, `kubectl` and other tools will now use a different namespace when working with this kube-context. That also means, you will not always need to use the `--namespace / -n` flag. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/vars-default.mdx b/docs/versioned_docs/version-5.16/fragments/vars-default.mdx deleted file mode 100644 index ccff61b813..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/vars-default.mdx +++ /dev/null @@ -1,27 +0,0 @@ -The `default` option expects a string, integer or boolean defining the default value for the variable. You can also use other variables in a default value, with one of the following conditions being true: -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable - -:::note Type Casting -If a default value is specified, DevSpace will assume the type of the default value as the type for the variable, i.e. when `default: "123"` is defined and a value of `123` (int) is provided it would be casted to `"123"` (string). To explicitly use the value of a variable as a string within `devspace.yaml`, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: - -Example: -```yaml -images: - default: - image: ${IMAGE} -vars: - - name: IMAGE_REPOSITORY - default: myrepository - source: none - - name: IMAGE_NAME - default: devspace - source: none - - name: IMAGE - default: ${IMAGE_REPOSITORY}/${IMAGE_NAME} - source: none - - name: NAMESPACE - default: ${DEVSPACE_NAMESPACE} - source: none -``` diff --git a/docs/versioned_docs/version-5.16/fragments/vars-force-string.mdx b/docs/versioned_docs/version-5.16/fragments/vars-force-string.mdx deleted file mode 100644 index 524029a624..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/vars-force-string.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note Variable Type -By default, the type (string, int, bool) of variable will be determined by the type of its `default` value (if defined) or automatically detected if no default value is defined. To explicitly use the value of a variable as a string, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/vars-name.mdx b/docs/versioned_docs/version-5.16/fragments/vars-name.mdx deleted file mode 100644 index 49014a7d7e..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/vars-name.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The `name` option expects a string stating the name of the config variable that will be used to reference it within the remainder of the configuration. - -:::info Must be unique -The `name` of a config variable must be unique and is mandatory when defining a config variable. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/warning-build-tool-priority.mdx b/docs/versioned_docs/version-5.16/fragments/warning-build-tool-priority.mdx deleted file mode 100644 index f709c200df..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/warning-build-tool-priority.mdx +++ /dev/null @@ -1,7 +0,0 @@ -:::warning Build Tool Priority -If you specify multiple build tools, DevSpace will try to use them in the following order: -1. `disabled` -2. `custom` -3. `docker` (uses kaniko as fallback if Docker host not reachable) -4. `kaniko` -::: diff --git a/docs/versioned_docs/version-5.16/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-5.16/fragments/warning-multiple-dev.mdx deleted file mode 100644 index 652cdbedd9..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/warning-multiple-dev.mdx +++ /dev/null @@ -1,8 +0,0 @@ -:::warning -It is highly discouraged to run `devspace dev` multiple times in parallel because multiple instances of port forwarding and file synchronization will disturb each other. Instead: - -- Run `devspace enter` to open additional terminal sessions without port forwarding and file sync -- Run `devspace logs` to start log streaming without port forwarding and file sync -- Run `devspace sync` to sync files on-demand without starting port forwarding etc. -- Run `devspace ui` to open the localhost development UI in the browser -::: diff --git a/docs/versioned_docs/version-5.16/fragments/workflow-build-images.mdx b/docs/versioned_docs/version-5.16/fragments/workflow-build-images.mdx deleted file mode 100644 index fc3261d5d8..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/workflow-build-images.mdx +++ /dev/null @@ -1 +0,0 @@ -DevSpace triggers the image building process for the images specified in the `images` section of the `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.16/fragments/workflow-deploy-dependencies.mdx b/docs/versioned_docs/version-5.16/fragments/workflow-deploy-dependencies.mdx deleted file mode 100644 index dc4766551b..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/workflow-deploy-dependencies.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace loads the `dependencies` section from the `devspace.yaml` and creates a dependency tree. The current project will represent the root of this tree. Based on this dependency tree, DevSpace will start from the leaves and run these steps for each dependency: -- Build images of the dependency as configured in the `images` section of the dependency's `devspace.yaml` (unless `skipBuild: true`) -- Deploy the dependency as configured in the `deployments` section of the dependency's `devspace.yaml` - -:::note What are Dendencies? -Dependencies allow you to deploy microservices, that the project you are currently deploying relies on. Dependencies can be located in a subpath of your project or they can be automatically loaded from a different git repository. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/workflow-deploy-project.mdx b/docs/versioned_docs/version-5.16/fragments/workflow-deploy-project.mdx deleted file mode 100644 index cc11700257..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/workflow-deploy-project.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace iterates over every item in the `deployments` array defined in the `devspace.yaml` and deploys each of the deployments using the respective deployment tool: -- `kubectl` deployments will be deployed with `kubectl` (optionally using `kustomize` if `kustomize: true`) -- `helm` deployments will be deployed with the `helm` client that comes in-built with DevSpace - -:::info kubectl Required -Deployments with `kubectl` require `kubectl` to be installed. -::: diff --git a/docs/versioned_docs/version-5.16/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-5.16/fragments/workflow-open-links.mdx deleted file mode 100644 index cb54a95ec2..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/workflow-open-links.mdx +++ /dev/null @@ -1,4 +0,0 @@ - -1. DevSpace starts to periodically send `HTTP GET` requests to the URLs provideded via `dev.open[*].url`. -2. As soon as the first HTTP response has a status code which is neither 502 (Bad Gateway) nor 503 (Service Unavailable), DevSpace assumes that the application is now started, stops sending any further requests and opens the provided URL in the browser. -3. If the URL is still returning status code 502 or 503 after 4min, DevSpace will stop trying to open it. To not disturb the log streaming or the interactive terminal session, DevSpace will not show an error when hitting the 4min timeout. diff --git a/docs/versioned_docs/version-5.16/fragments/workflow-replace-tags.mdx b/docs/versioned_docs/version-5.16/fragments/workflow-replace-tags.mdx deleted file mode 100644 index 7c5a7300d2..0000000000 --- a/docs/versioned_docs/version-5.16/fragments/workflow-replace-tags.mdx +++ /dev/null @@ -1,13 +0,0 @@ -After finishing the image building process, DevSpace searches your deployments for references to the images that are specified in the `images` section of the `devspace.yaml`. If DevSpace finds that an image is used by one of your deployments and the deployment does not explicitly define a tag for the image, DevSpace will append the tag that has been auto-generated as part of the automated image tagging during the image building process. - -:::warning Prevent Hard-Coded Tags -To use automated tag replacement, make sure you do **not** specify image tags in the deployment configuration. -::: - -Replacing or appending tags to images that are used in your deployments makes sure that your deployments are always started using the most recently pushed image tag. This automated process saves a lot of time compared to manually replacing image tags each time before you deploy something. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - diff --git a/docs/versioned_docs/version-5.16/getting-started/cleanup.mdx b/docs/versioned_docs/version-5.16/getting-started/cleanup.mdx deleted file mode 100644 index 8b7f52208e..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/cleanup.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Cleanup -sidebar_label: 5. Cleanup ---- - -To tell DevSpace to remove the deployments from your cluster again, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.16/getting-started/deployment.mdx b/docs/versioned_docs/version-5.16/getting-started/deployment.mdx deleted file mode 100644 index 4995196d3c..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/deployment.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Deployment ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; - - -Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. - -
- -
DevSpace CLI - Deployment
-
- - -## Kube-Context & Namespace -For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. - - - - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -p production -``` - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -Running `devspace deploy -p production` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Understand Profiles -As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. - -Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). - -By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: -```yaml -profiles: -- name: production - patches: - - op: remove - path: images.app.build.disabled -``` - -You can print the config after a profile has been applied to see what the profile actually changes: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: -```bash -devspace dev -p start-debugger -``` diff --git a/docs/versioned_docs/version-5.16/getting-started/development.mdx b/docs/versioned_docs/version-5.16/getting-started/development.mdx deleted file mode 100644 index a44cbdc581..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/development.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Development with DevSpace -sidebar_label: 3. Development ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; -import StartAppFragment from '../fragments/start-app.mdx'; -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; - -DevSpace allows you to develop applications directly inside a Kubernetes cluster. - -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. - -
- -
DevSpace - Development Mode
-
- - -## Kube-Context & Namespace -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. - - - - -## Start Development Mode -Run the following command to start the development mode: -```bash -devspace dev -``` - - -Running `devspace dev` will do the following: - -1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) -2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) -3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) -4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) -5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container - -Once the terminal session starts, run the command to start your application: - - - - - -
- -## Workflows - -### 1. File Sync -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. - -**Try it and just edit a file!** - - -### 2. DevSpace UI -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) - -
- -
DevSpace - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: - - -## Notes - - diff --git a/docs/versioned_docs/version-5.16/getting-started/initialize-project.mdx b/docs/versioned_docs/version-5.16/getting-started/initialize-project.mdx deleted file mode 100644 index 8d1cedbb1b..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/initialize-project.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Initialize a Project -sidebar_label: 2. Initialize Project ---- - -import ChooseProjectFragment from '../fragments/choose-project.mdx'; - -## Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - - -
- -## Initialize Your Project -Run this command in your project directory to create a `devspace.yaml` config file for your project: -```bash -devspace init -``` - -```bash - - ____ ____ - | _ \ _____ __/ ___| _ __ __ _ ___ ___ - | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \ - | |_| | __/\ V / ___) | |_) | (_| | (_| __/ - |____/ \___| \_/ |____/| .__/ \__,_|\___\___| - |_| - - -? How do you want to deploy this project? [Use arrows to move, type to filter] -> helm: Use Component Helm Chart [QUICK START] (https://devspace.sh/component-chart/docs) - helm: Use my own Helm chart (e.g. local via ./chart/ or any remote chart) - kubectl: Use existing Kubernetes manifests (e.g. ./kube/deployment.yaml) - kustomize: Use an existing Kustomization (e.g. ./kube/kustomization/) -``` - -DevSpace will ask you a couple of questions about this project and then generate a `devspace.yaml` for you to start with. If you are using the quickstart projects, choose `Component Helm Chart` for the first question. - -After running `devspace init`, you will see a `devspace.yaml` file in your project which should look like this: -```yaml -version: v1beta10 - -# `images` specifies all images that may need to be built for this project -images: - app: # This image is called `app` and this name `app` is referenced multiple times in the config below - image: registry.tld/username/image - dockerfile: ./Dockerfile - build: - disabled: true - -# `deployments` tells DevSpace how to deploy this project -deployments: -- name: quickstart-kubectl - # This deployment uses `kubectl` but you can also define `helm` deployments - kubectl: - manifests: - - kube/deployment.yaml -# OR: -- name: quickstart-helm # Name of this deployment - helm: # Deploy using Helm - componentChart: true # Use the Component Helm Chart - values: # Override Values for chart (can also be set using valuesFiles option) - containers: # Defines an array of containers that run in the same pods started by this component - - image: image(app):tag(app) # Image of this container - service: # Expose this component with a Kubernetes service - ports: # Array of container ports to expose through the service - - port: 3000 # Exposes container port 3000 on service port 3000 - -# Settings for development mode (will be explained later) -dev: ... - -# Settings for development mode (will be explained later) -profiles: ... -``` diff --git a/docs/versioned_docs/version-5.16/getting-started/installation.mdx b/docs/versioned_docs/version-5.16/getting-started/installation.mdx deleted file mode 100644 index 6a04d2ece3..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/installation.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Install DevSpace -sidebar_label: 1. Download CLI ---- - -import InstallFragment from '../fragments/install-cli.mdx'; - - diff --git a/docs/versioned_docs/version-5.16/getting-started/next-steps.mdx b/docs/versioned_docs/version-5.16/getting-started/next-steps.mdx deleted file mode 100644 index b47c788da0..0000000000 --- a/docs/versioned_docs/version-5.16/getting-started/next-steps.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Next Steps -sidebar_label: 6. Next Steps ---- - -## Loft Plugin For Teams -If you plan to use DevSpace with your team, make sure to check out [www.loft.sh](https://loft.sh) and the Loft plugin for DevSpace, which you can install using this command: -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -Loft allows you to efficiently share Kubernetes clusters with a large number of engineers rather than letting everyone set up their own cluster and having to struggle to manage and administrate it on their own. - -Installing the Loft plugin will add commands like these to DevSpace: -```bash -devspace login # to login to Loft via DevSpace -devspace create space my-namespace # for creating namespace on-demand via Loft -devspace create vcluster my-vcluster # for creating virtual Kubernetes clusters via Loft -``` - -## Guides -- [Onboarding Guide](../guides/basics.mdx) to share with the rest of your team -- [Network & Domains Guide](../guides/networking-domains.mdx) -- [CI/CD Integration Guide](../guides/ci-cd-integration.mdx) - -## Best Practices -- [Image Building](../guides/image-building.mdx) -- [Dev vs Staging vs Production](../guides/dev-staging-production.mdx) -- [Remote Debugging](../guides/remote-debugging.mdx) diff --git a/docs/versioned_docs/version-5.16/guides/basics.mdx b/docs/versioned_docs/version-5.16/guides/basics.mdx deleted file mode 100644 index 49055f2690..0000000000 --- a/docs/versioned_docs/version-5.16/guides/basics.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Onboarding Guide -sidebar_label: Onboarding ---- - -## View Help & Flags -To see help information and a list of all flags for any command, simply use the `-h` flag: -```bash -devspace -h # Shows all major commands and flags -devspace dev -h # Shows sub-commands and specific flags for this command -``` - -
- ---- - - -## Project-Specific Commands - -:::note devspace.yaml required -The project-specific commands require that your project is already [initialized](../getting-started/initialize-project.mdx), i.e. there is a `devspace.yaml` config file. -::: - - -### Start Development -This command deploys the project and then starts the development mode: -```bash -devspace dev -``` - - -### Deploy Project -This command deploys the project to Kubernetes: -```bash -devspace deploy # -p / --profile production => see: devspace list profiles -``` - -Run this command to just build, tag and push all images to a registry without deploying the project: -```bash -devspace build -``` - - -### Port Forwarding -To get a list of all ports that are being forwarded as defined in `devspace.yaml`, run: -```bash -devspace list ports -``` - - -### Commands -This command lists all available command: -```bash -devspace list commands -``` - -Use this command to run one of the custom commands: -```bash -devspace run command [command-name] -- --some-flag --another-flag=value -``` - - -### Profiles -This command lists all available profiles: -```bash -devspace list profiles -``` - -Use this command to switch to a different profile: -```bash -devspace use profile [optional:profile-name] -``` - -Use the `-p` flag to just run a single command with a different profile without switching it permanently: -```bash -devspace deploy -p [profile-name] -``` - -Use this command to print the config after a profile has been applied: -```bash -devspace print -p [profile-name] -``` - - -### Variables -This command lists all variables as well as their values: -```bash -devspace list vars -``` - -To change the value of a variable, run: -```bash -devspace set var VAR_NAME=value # VAR_NAME_2=value2 VAR_NAME_3=value3 -``` - -Use this command to reset all variables, i.e. delete variable values from the variable cache: -```bash -devspace reset vars -``` - -Use this command to print the config after all variables have been replaced: -```bash -devspace print -``` - - -### Dependencies -Use this command to update git-based dependencies: -```bash -devspace update dependencies -``` -This command performs a `git fetch && git pull` for all git-based dependencies. - -Use this command to clear the dependencies cache: -```bash -devspace reset dependencies -``` - - -### Open Project -This command opens the current project in the browser: -```bash -devspace open -``` - -:::note Must be deployed -This command requires that the project has already been deployed. -::: - -
- ---- - -## General Purpose Commands - -### Open UI -This command opens the localhost development UI: -```bash -devspace ui -``` -:::note Development Mode -The localhost development UI starts automatically in the background when running: `devspace dev` -::: - - -### Stream Logs -This command streams logs of a container: -```bash -devspace logs -``` - - -### Terminal & Commands -This command opens an interactive terminal session for a container: -```bash -devspace enter -``` - -To run just a single command inside a container, use: -```bash -devspace enter -- my-command --my-flag=my-value ... -``` - - -### File Sync -This command starts an on-demand file synchronization between localhost and a container: -```bash -devspace sync -``` - -:::note Development Mode -If file sync is configured in your project, it automatically starts when running: `devspace dev` -::: - - - -
- ---- - - -## Clusters & Namespaces -This command sets a different namespace as default namespace for the current kube-context/cluster: -```bash -devspace use namespace [optional:namespace] -``` - -:::info Not for Spaces -The command `devspace use namespace` does **not** work for Loft spaces. Use `devspace use space` instead. -::: - -This command creates a new space using Loft: -```bash -devspace create space [space-name] -``` - -This command switches to a different spaces: -```bash -devspace use space [optional:space-name] -``` - -This command switches to a different kube-context/cluster: -```bash -devspace use context [optional:context-name] -``` - - - -
- -## Advanced - -### Clean up Images -When using Docker for image building, disk space on your local computer can get sparse after a lot of Docker builds. DevSpace provides a convenient command to clean up all images that were built with your local Docker daemon using DevSpace. This command does not remove any pushed images remotely and just clears local images and space. - -In order to clean up all created images locally, simply run the following command in your project folder: -```bash -devspace cleanup images -``` - -### Clean up Docker -In addition, it also makes sense to prune your Docker environment to free additional space with the following command: - -```bash -docker system prune -``` - -This command will remove: -- all stopped containers -- all networks not used by at least one container -- all dangling images -- all build cache - -These commands should free up a lot of space for new image builds to come. diff --git a/docs/versioned_docs/version-5.16/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-5.16/guides/ci-cd-integration.mdx deleted file mode 100644 index 099c3b5799..0000000000 --- a/docs/versioned_docs/version-5.16/guides/ci-cd-integration.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: CI/CD Integration -sidebar_label: CI/CD Integration ---- - -DevSpace is designed to work in non-interactive environments the same way it does in interactive environments. To use DevSpace inside a CI/CD pipeline, simply install it as part of your pipeline or start the pipeline with a VM or container image that already contains DevSpace and run any of the DevSpace commands. - -## Docker Image -DevSpace provides an official Docker image that [can be found on Docker Hub](https://hub.docker.com/r/devspacesh/devspace). The Dockerfile for this image is [available on GitHub](https://github.com/loft-sh/devspace/blob/master/Dockerfile). - -Use this image as shown here: -```bash -docker run devspacesh/devspace devspace [command] [args] -``` - -#### Example: Get Version -```bash -docker run devspacesh/devspace devspace --version -``` - -#### Example: Deployment -```bash -docker run -v ${PWD}:/project -w /project devspacesh/devspace devspace deploy -``` -1. Mounts current working directory into `/project` within the container -2. Sets `/project` as working dir -3. Runs `devspace deploy` inside working dir - -#### Example: Start Interactive Terminal Session -```bash -docker run -it -v ${PWD}:/project -w /project devspacesh/devspace -``` - -
- - -## Deployment Tips - -### Avoid Pickers -If you want to run commands such as `devspace enter`, make sure you specify a label selector using `-l`, a container using `-c` etc. to make sure DevSpace can find the right pod/container without having to ask you to select one (which would lead to your pipeline getting stuck). - -### `--wait` Flag -DevSpace is configured to deploy and terminate when you run `devspace deploy`. In CI/CD pipelines, it is common to wait until the deployment is actually up and running before continuing the pipeline. You can achieve this by using `--wait`: -```bash -devspace deploy --wait --timeout=120 -``` -The above command will wait until the desired number of pods is created for all ReplicaSets and until none of the pods are failing anymore. If this is not achieved within the number of seconds specified in `--timeout`, DevSpace will exit with a fatal error. - -### Define Profiles -It is often useful to [define profiles in `devspace.yaml`](../configuration/profiles/basics.mdx) for staging, review or production deployments using CI/CD. You can deploy a project using such a profile using the `-p / --profile` flag: -```bash -devspace deploy -p production -``` - -### Separate Build & Deploy -DevSpace allows you to split up the build and deployment process into two separate commands: -```bash -devspace build # Build, tag and push images -devspace deploy --skip-build # Deploy project without rebuilding images -``` - -### Run Tests -To run unit or integration tests in your CI/CD pipeline, you have multiple options: -- [Split up build and deployment command](#separate-build--deploy) and run tests before after or in between the commands -- [Define hooks](../configuration/hooks/basics.mdx) that execute commands before/after certain image builds or deployments - -
diff --git a/docs/versioned_docs/version-5.16/guides/community-projects.mdx b/docs/versioned_docs/version-5.16/guides/community-projects.mdx deleted file mode 100644 index 3f1d93fc49..0000000000 --- a/docs/versioned_docs/version-5.16/guides/community-projects.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Community Projects -sidebar_label: Community Projects ---- - -:::note Submit Your Project -To submit a project: - -1. Make sure the project has a `LICENSE` file containing an **MIT** or **Apache 2.0** license. -2. Make sure to add a `README.md` file to your project describing what the project does and how to use it. -3. Click on the "**Edit this page**" button or follow **[this link](https://github.com/loft-sh/devspace/edit/master/docs/pages/guides/community-projects.mdx)**. -4. Add your project to the list **in alphabetical order**. -5. **Submit a pull request** containing your changes. - -❤️ Thank you! -::: - -The following projects are contributed and maintained by community members. - -|Project|Description|Maintainer| -|-|-|-| -|[nginx-auth-jwt](https://github.com/FactFiber/devspace-nginx-auth-jwt)|Auth requests through NGINX with JWT tokens|[shaunc](https://github.com/shaunc)| -|[nginx-s3](https://github.com/FactFiber/devspace-nginx-s3)|Serves static files from private S3 bucket using NGINX|[shaunc](https://github.com/shaunc)| -|[trilium](https://github.com/Addono/trilium-devspace)|Host a [trilium](https://github.com/zadam/trilium) server|[Addono](https://github.com/Addono)| diff --git a/docs/versioned_docs/version-5.16/guides/dev-staging-production.mdx b/docs/versioned_docs/version-5.16/guides/dev-staging-production.mdx deleted file mode 100644 index 3eaeaac13f..0000000000 --- a/docs/versioned_docs/version-5.16/guides/dev-staging-production.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Dev vs Staging vs Production -sidebar_label: Dev vs Staging vs Prod ---- - -To configure the differences between development, staging and production environments, there are several techniques which may be used separately or combined in certain use cases: -- For image building: - 1. Using [different Dockerfiles](../configuration/images/dockerfile-context.mdx) for each environment - 2. Using the same Dockerfile and: - - [overriding the `ENTRYPOINT` or the `CMD` of the Dockerfile](../configuration/images/entrypoint-cmd.mdx) for each environment - - using multi-stage builds and [setting the `target`](../configuration/images/docker.mdx#target) during the build process - - using [different `buildArgs`](../configuration/images/docker.mdx#buildargs) for different environments -- For deployments: - 1. Using a different `cmd` and/or `args` for your containers depending on the environment - 2. Using a different `image` name or `image` tag for your containers depending on the environment - 3. Setting different `env` variables for your containers depending on the environment - -No matter which options are working for your use case, the following DevSpace features will allow you to set up the desired differences: -- [Config Profiles & Patches](../configuration/profiles/basics.mdx) -- [Config Variables](../configuration/variables/basics.mdx) -- [Hooks](../configuration/hooks/basics.mdx) diff --git a/docs/versioned_docs/version-5.16/guides/file-synchronization.mdx b/docs/versioned_docs/version-5.16/guides/file-synchronization.mdx deleted file mode 100644 index 959848e35f..0000000000 --- a/docs/versioned_docs/version-5.16/guides/file-synchronization.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: File Synchronization -sidebar_label: File Synchronization ---- - -There are two types of file synchronzation processes: -- on-demand file sync using `devspace sync` and -- file synchronization during development mode using `devspace dev`. - - -## Start On-Demand File Sync -To establish an on-demand file synchronization between your local computer and the containers running inside Kubernetes, use the following command: -```bash -devspace sync # common flags: --local-path=./ --container-path=/app --no-watch --config=./devspace.yaml -``` -[Learn more about the `devspace sync` command.](https://devspace.cloud/blog/2019/10/18/release-devspace-v4.1.0-kubectl-cp-file-synchronization) - - -## Configure File Sync -If you want to start file synchronization every time you run `devspace dev`, you can configure it within `devspace.yaml`. - -[Learn more about configuring file synchronization using `devspace.yaml`.](../configuration/development/file-synchronization.mdx) - -
- - -## Troubleshooting - -### Check `sync.log` -DevSpace logs all sync activity in `.devspace/logs/sync.log`. Check this file to get more detailed error information. - -### Verbose Sync -DevSpace provides the flag `--verbose-sync` to print additional information while running `devspace dev`: -```bash -devspace dev --verbose-sync -``` - -For an even cleaner output (sync-only logs, without container logs), deploy your application using `devspace dev` once, then abort the dev mode and start a standalone sync process using the `--verbose` flag: -```bash -devspace sync --config=devspace.yaml --verbose -``` - -### Ignore `.git/` -The sync can fail when files are constantly being changed while they are being synchronized. DevSpace will retry failing sync attempts but for folder such as `.git/` which contain continuously changing information and files which may be locked by the IDE, we recommmend to [ignore them via the `excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) in `devspace.yaml`. - -### File Permissions -Without file write permission, the sync will not be able to work. If you start your containers (in production) using a different user than `root` and this user does not have sufficient permissions to read and write certain files, you can: -- exclude these files using the [`excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) -- exclude these files using the [`uploadExcludePaths` option](../configuration/development/file-synchronization.mdx#uploadexcludepaths) -- run the containers using a different user during development\* - -\* You can achieve this by: -- Adding a `USER` statement in your Dockerfile: This is especially recommended when you are using multi-stage builds because you can add the `USER` statement for your development/build stage and add another `USER` statement to your production stage. Then, control the build target using the [`options.target` option](../configuration/images/docker.mdx#target) for Docker and kaniko builds and define a profile for removing the build stage for production deployments. -- Setting `runAsUser` and `runAsGroup` to `0` within the `securityContext` of your Kubernetes pods. diff --git a/docs/versioned_docs/version-5.16/guides/image-building.mdx b/docs/versioned_docs/version-5.16/guides/image-building.mdx deleted file mode 100644 index 5ebad20b8f..0000000000 --- a/docs/versioned_docs/version-5.16/guides/image-building.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Image Building -sidebar_label: Image Building ---- - -Take a look at the following best practices to speed up image building and to set up DevSpace for an ideal workflow. - -## Optimize Dockerfiles -You can drastically speed up image building by optimizing your Dockerfiles with the following tips: -- Use a small base image (e.g. alpine version) -- Use layer caching for dependencies: Add dependency file, install dependencies, then add the rest of your source code as shown in the example snippet below - -```Dockerfile -FROM 8.16.1-alpine - -# Set working dir -WORKDIR /app - -# Copy dependency file to WORKDIR -ADD package.json - -# Install dependencies -RUN npm install - -# Copy remaining source code from local WORKDIR to image WORKDIR -COPY . . -``` - -## `.dockerignore` For Better Caching -DevSpace respects the `.dockerignore` file when defined on the root level of your context directory. This file follows a similar syntax as the `.gitignore` file but instead of excluding files from git, the `.dockerignore` file defines files and folders which should not be included in the context for building an image. - -:::info Skip Image Building -Adding paths to the `.dockerignore` file makes sure that DevSpace is not forced to rebuild images when files belonging to these paths change. -::: - -It can often be useful to: -- Add `devspace.yaml` to `.dockerignore` to prevent config changes from triggering image rebuilding (`devspace init` does this by default) -- Add temporary files (e.g. `.DS_Store`) to `.dockerignore` (DevSpace ALWAYS ignores `.devspace/` temp folder even if not specified in `.dockerignore`) -- Add dependency folders to `.dockerignore`, here are a few examples of dependency folders for different languages: - -### Recommended Paths for `.dockerignore` -| Language / Dependency Tool | `.dockerignore` statements | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| All Languages | `devspace.yaml` | -| PHP / composer | `composer.phar`
`vendor/` | -| Node.js / npm | `node_modules/`
`npm-debug.log*`
`report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json`
`pids`
`*.pid*`
`*.seed*`
`*.pid.lock*` | -| Python / pip | `__pycache__/`
`wheels/`
`pip-log.txt`
`pip-wheel-metadata/` | - - -## Different Images for Development vs. Staging vs. Production -Generally, there are several options to achieve this: -- using multiple Dockerfiles (e.g. `Dockerfile`, `Dockerfile_production`) -- using one Dockerfile in combination with `BUILD_ARGS` and `ENTRYPOINT` overrides for each environment -- using one Dockerfile in combination with multi-stage builds with targets for each environment - -All options have their benefits and caveats. Which one is the best for your project depends on your use case and your priorities. diff --git a/docs/versioned_docs/version-5.16/guides/localhost-ui.mdx b/docs/versioned_docs/version-5.16/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/versioned_docs/version-5.16/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/versioned_docs/version-5.16/guides/networking-domains.mdx b/docs/versioned_docs/version-5.16/guides/networking-domains.mdx deleted file mode 100644 index c2388aa259..0000000000 --- a/docs/versioned_docs/version-5.16/guides/networking-domains.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Services, Ingresses & Domains -sidebar_label: Networking & Domains ---- - -import FragmentInfoComponentChart from '../fragments/info-component-chart.mdx'; - -The easiest way to connect a domain to your deployment is to run the following command within your project directory: -```bash -devspace open -``` -Choose **via domain** to connect a domain or choose **via localhost** to use port-forwarding. - -
- -## Component Chart -If you are looking for the documentation of the component chart values that let you configure the ingress and service for a component in `devspace.yaml`, please look into the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. - - - -
- -## Troubleshooting -Here are some steps to debug issues with your application when your domain is not able to reach your application. - -### Listen On All Interfaces -Make sure your application is running on `0.0.0.0` and not on `localhost`. If you see a log message in your container logs such as `Listening on localhost:PORT` or `Listening on 127.0.0.1:PORT`, you need to change the configuration of your application, so that it starts listening on `0.0.0.0` instead of `localhost`/`127.0.0.1`. - -:::info Only Localhost Works -This is often the problem when you are able to use `devspace open` with `via localhost` but not with the `via domain` option. -::: - -### Check For Failing Containers -Make sure none of your containers is constantly restarting (`Restarts` > 0) or unable to starting (`Status` != Running): -```bash -kubectl get po -``` - -### Check Services and Endpoints -Make sure you have at least one service for your main application configured: -```bash -kubectl get svc -``` - -And make sure all your services have at least one endpoint: -```bash -kubectl get ep -``` diff --git a/docs/versioned_docs/version-5.16/guides/plugins.mdx b/docs/versioned_docs/version-5.16/guides/plugins.mdx deleted file mode 100644 index 39e98177a6..0000000000 --- a/docs/versioned_docs/version-5.16/guides/plugins.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: DevSpace Plugins -sidebar_label: Plugins ---- - -The functionality of DevSpace can be extended and changed via plugins. Plugins are managed through DevSpace and are contained in a single binary or shell script. Plugins are able to extend DevSpace in the following ways: -- Add new commands to DevSpace (e.g. `devspace login` or `devspace list users`) -- Add new [predefined variables](../configuration/variables/basics.mdx) -- Execute hooks at specific events (like a command execution) - -## Installing a plugin - -Plugins can be installed from an URL, Git Repository or local file. To install a plugin run: -``` -# Add a plugin from a git repository -devspace add plugin https://github.com/my-organization/my-repo - -# Add a plugin from an URL -devspace add plugin https://myorg.com/path/to/plugin.yaml - -# Add a plugin from a local path -devspace add plugin ./plugin.yaml -``` - -After installing a plugin you can check all your existing plugins via: -``` -devspace list plugins -``` - -## Updating a plugin - -To update a DevSpace plugin run the following command: - -``` -# Enter the name and not the path -devspace update plugin PLUGIN_NAME - -# This only works for GIT plugins -devspace update plugin PLUGIN_NAME --version GIT_TAG -``` - -## Removing a plugin - -To remove a plugin via the DevSpace command line: -``` -# Enter the name and not the path -devspace remove plugin PLUGIN_NAME -``` - -If the plugin cannot be removed because a certain hook fails (or any other reason), you can also delete the plugin manually. DevSpace saves all plugin data in `$HOME/.devspace/plugins`. You will have to check each folders `plugin.yaml` to see which plugin is stored in the folder. To remove a plugin, simply delete the complete plugin folder. - -## Developing a custom DevSpace plugin - -Creating an own DevSpace plugin is quite easy. You only need a `plugin.yaml` that specifies where DevSpace can find the plugin binary and how DevSpace should execute it. You can also take a look at the [devspace-plugin-example](https://github.com/loft-sh/devspace-plugin-loft) project for a complete example. -For each installed plugin, DevSpace will create a folder in `$HOME/.devspace/plugins` with a `plugin.yaml` and a downloaded or copied `binary` that will be executed. - -### plugin.yaml - -The `plugin.yaml` specifies how the plugin is installed and integrates into DevSpace and consists of the following parts. - -#### `name` - -Name of the plugin as shown in devspace list plugins and used for devspace update plugin and devspace remove plugin. (e.g. `my-devspace-plugin`) - -#### `version` - -The semantic current version of the plugin (e.g. `0.0.1`) - -#### `binaries` - -This section states where DevSpace can retrieve the plugin binary for the current operating system and architecture. If devspace cannot find a binary for the current [runtime.GOOS](https://golang.org/pkg/runtime/#pkg-constants) and [runtime.GOARCH](https://golang.org/pkg/runtime/#pkg-constants) it will not install the plugin. -The `binaries` section expects an array with objects that can have the following properties: -* `os` is the runtime.GOOS name of the operating system (e.g. darwin, windows, linux etc.) -* `arch` is the runtime.GOARCH name of the system (e.g. amd64, 386 etc.) -* `path` is the URL to the binary to download or the local path to the binary to copy - -#### `commands` - -This section specifies which commands should be added to DevSpace. It expects an array with objects that can have the following properties: -* `name` of the command that should be added to devspace (e.g. `login` will add `devspace login`) -* `baseArgs` these args are prepended to the plugin binary, so when a user will call 'devspace login other --flag 123', devspace will call the plugin binary with 'plugin-binary baseArgs... other --flag 123' -* `usage` the usage of the command to print in `devspace --help` -* `description` the description of the command to print in `devspace --help` -* `subCommand` (Optional) the subcommand to append the command to (e.g. `add` will add the command to `devspace add`) - -DevSpace will forward all passed arguments and flags to the plugin command. - -#### `vars` - -This section specifies which [predefined variables](../configuration/variables/basics.mdx) are added to DevSpace. These variable values will be retrieved from the plugin binary instead of asking the user. It expects an array with objects that can have the following properties: -* `name` of the predefined variable to add (e.g. `EXAMPLE_VARIABLE` which can then be used in a `devspace.yaml` as `${EXAMPLE_VARIABLE}`) -* `baseArgs` these args are appended to the plugin binary (e.g. `["print", "var", "test"]` will cause devspace to call the plugin binary with: `plugin-binary print var test`) - -DevSpace expects the plugin binary to either fail (exit code unequal zero) or print the variable value to the stdout stream. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables: -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the value of `--namespace` if set (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the value of `--kube-context` if set (e.g. `my-kube-context`) - -#### `hooks` - -This section specifies certain plugin commands that should be executed at certain DevSpace events. It expects an array with objects that can have the following properties: -* `event` name of the event when to execute the command. The following events exist: - * `after:installPlugin` executed after the plugin was installed - * `before:updatePlugin` executed before the plugin will be updated - * `after:updatePlugin` executed after the plugin was updated - * `before:removePlugin` executed before the plugin will be removed - * `before:build`, `before:build:*`, `after:build`, `after:build:*`, `error:build:*` executed when DevSpace will build an image. The environment variables `DEVSPACE_PLUGIN_IMAGE_CONFIG_NAME`, `DEVSPACE_PLUGIN_IMAGE_NAME`, `DEVSPACE_PLUGIN_IMAGE_TAGS` and `DEVSPACE_PLUGIN_IMAGE_CONFIG` will be available in the hook - * `before:deploy`, `after:deploy`, `before:deploy:*`, `after:deploy:*`, `error:deploy:*`, `skip:deploy:*`, `before:render`, `after:render`, `before:render:*`, `after:render:*`, `error:render:*`, `before:purge`, `after:purge`, `before:purge:*`, `after:purge:*`, `error:purge:*` executed when DevSpace will deploy a defined deployment. The environment variables `DEVSPACE_PLUGIN_DEPLOY_CONFIG` will be available in the hook - * `before:resolveDependency:*`, `after:resolveDependency:*`, `error:resolveDependency:*`, `before:buildDependency:*`, `after:buildDependency:*`, `error:buildDependency:*`, `before:deployDependency:*`, `after:deployDependency:*`, `error:deployDependency:*`, `before:renderDependency:*`, `after:renderDependency:*`, `error:renderDependency:*`, `before:purgeDependency:*`, `after:purgeDependency:*`, `error:purgeDependency:*` executed before, after or onError during dependency handling. The environment variables `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG`, `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG_PATH`and `DEVSPACE_PLUGIN_DEPENDENCY_NAME` will be available in the hook - * `before:configLoad`, `after:configLoad`, `error:configLoad` executed when DevSpace tries to load a `devspace.yaml`. The environment variables `DEVSPACE_PLUGIN_LOAD_PATH`, `DEVSPACE_PLUGIN_LOADED_RAW`, `DEVSPACE_PLUGIN_LOADED_VARS` and `DEVSPACE_PLUGIN_LOADED_CONFIG` (only in `config.afterLoad`) will be available in the hook - * `start:sync:*`, `stop:sync:*`, `error:sync:*`, `restart:sync:*` executed when DevSpace will start syncing a new sync config, closing a running one or restarting/stopping because of an error. The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `before:initialSync:*`, `after:initialSync:*`, `error:initialSync:*` executed right before DevSpace will do an initial sync and afterwards (if successful). The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `start:portForwarding:*`, `restart:portForwarding:*`, `error:portForwarding:*`, `stop:portForwarding:*` executed when DevSpace will start, restart, stop port forwarding. The environment variables `DEVSPACE_PLUGIN_PORT_FORWARDING_CONFIG` will be available in the hook - * `start:reversePortForwarding:*`, `restart:reversePortForwarding:*`, `error:reversePortForwarding:*`, `stop:reversePortForwarding:*` executed when DevSpace will start, restart, stop reverse port forwarding. The environment variables `DEVSPACE_PLUGIN_REVERSE_PORT_FORWARDING_CONFIG` will be available in the hook - * `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` - * `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`, `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:interrupt`, `devCommand:error` executed at different checkpoints when `devspace dev` is executed - * `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed - * `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed - * `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed - * `command:before:execute`, `command:after:execute`, `command:error` executed at the beginning, ending or if an error occurs during any DevSpace command execution - * `analyze`, `attach`, `build`, `deploy`, `dev`, `enter`, `init`, `logs`, `open`, `print`, `purge`, `render`, `restart`, `run`, `sync`, `ui`, `upgrade` are executed after the corresponding devspace command has loaded the config and created a kubernetes client (if there is a config to load or a kubernetes client to create) -* `baseArgs` these args are appended to the plugin binary (e.g. `["run", "my", "command"]` will cause devspace to call the plugin binary with: `plugin-binary run my command`) -* `background` if true will execute the hook in the background and continue DevSpace command execution - -If a non-background hook fails (exit code unequals zero) DevSpace will stop command execution and the complete DevSpace command fails. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables (if they apply for the event): -- `DEVSPACE_PLUGIN_EXECUTION_ID` a unique identifier that stays the complete duration of a command but will change each time DevSpace is re-executed -- `DEVSPACE_PLUGIN_EVENT` the event that has triggered the hook -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_CONFIG` the config that was loaded for the command as yaml encoded (all profiles and variables are resolved at this point) -- `DEVSPACE_PLUGIN_COMMAND` the name of the DevSpace command that was executed (e.g. `dev`) -- `DEVSPACE_PLUGIN_COMMAND_LINE` the complete name of the DevSpace command that was executed (e.g. `devspace dev [FLAGS]`) -- `DEVSPACE_PLUGIN_COMMAND_FLAGS` the flags that were passed to the DevSpace command encoded as JSON (e.g. `["--namespace", "test", "--skip-build", "true"]`) -- `DEVSPACE_PLUGIN_COMMAND_ARGS` the arguments that were passed to the DevSpace command encoded as JSON (without any flags) (e.g. `["arg1"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the kubernetes namespace where DevSpace will operate in (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the kubernetes context where DevSpace will operate in (e.g. `my-kube-context`) -- `DEVSPACE_PLUGIN_ERROR` the error that occurred at a certain event (usually only supplied in the `error` or `restart` events) - -### Example - -An example `plugin.yaml` could look like this: -```yaml -name: devspace-plugin-example -version: 0.0.1 -commands: - # This will add the command devspace login - - name: "login" - # these args are prepended to the plugin binary, so when a user will call 'devspace login test test2 --flag 123' - # devspace will call the plugin binary with 'plugin-binary other command test test2 --flag 123' - baseArgs: ["other", "command"] - usage: "short description of command" - description: "long description of command" - # You can also add commands under already existing devspace subcommands - # This will add the devspace command: devspace list env - - name: "env" - baseArgs: ["list", "env"] - subCommand: "list" -# Hooks are called before certain already existing commands are executed -# in devspace, for example devspace dev -hooks: - # will be executed when devspace print is run by the user - - event: print - # this will call the plugin binary before devspace print is called with: 'plugin-binary list env' - baseArgs: ["list", "env"] - # root is executed before any other event and command execution except for other plugin commands - - event: root - baseArgs: ["login"] -# You can also add predefined variables for the config via plugins -vars: - # the name of the predefined variable - # that can be used within any devspace.yaml - - name: EXAMPLE_USER - # this will call the plugin binary when resolving this variable and expects the variable - # output on stdout. - baseArgs: ["print", "env", "USER"] - - name: EXAMPLE_HOME - baseArgs: [ "print", "env", "HOME" ] -# In this section the plugin binaries (or scripts) and their locations are defined -# if devspace cannot find a binary for the current runtime.GOOS and runtime.GOARCH -# it will not install the plugin -binaries: - - os: darwin - arch: amd64 - # can be either an URL or local path - path: ./main - - os: linux - arch: amd64 - path: main - - os: linux - arch: "386" - path: main - - os: windows - arch: amd64 - path: path/to/main.exe - - os: windows - arch: "386" - path: https://my-domain.url/path/to/windows.exe -``` diff --git a/docs/versioned_docs/version-5.16/guides/remote-debugging.mdx b/docs/versioned_docs/version-5.16/guides/remote-debugging.mdx deleted file mode 100644 index d2be954168..0000000000 --- a/docs/versioned_docs/version-5.16/guides/remote-debugging.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Remote Debugging -sidebar_label: Remote Debugging ---- - -DevSpace lets you easily [start applications in development mode](../getting-started/development.mdx) and connect remote debuggers for your application using the following steps: - -1. Configure DevSpace to use a development Dockerfile that: - - ships with the appropriate tools for debugging your application - - starts your application together with the debugger, e.g. setting the `ENTRYPOINT` of your Dockerfile to `node --inspect=0.0.0.0:9229 index.js` would start the Node.js remote debugger on port `9229` -2. Define port-forwarding for the port of your remote debugger (e.g. `9229`) within the `dev.ports` section of your `devspace.yaml` -3. Connect your IDE to the remote debugger (see the docs of your IDE for help) -4. Set breakpoints and debug your application directly inside Kubernetes diff --git a/docs/versioned_docs/version-5.16/introduction.mdx b/docs/versioned_docs/version-5.16/introduction.mdx deleted file mode 100644 index b474f724bd..0000000000 --- a/docs/versioned_docs/version-5.16/introduction.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: What is DevSpace? -sidebar_label: Introduction ---- - -DevSpace is a client-only, open-source developer tool for Kubernetes: -- **Build, test and debug applications directly inside Kubernetes** -- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers -- **Unify deployment workflows** within your team and across dev, staging and production -- **Automate repetitive tasks** for image building and deployment - -## How does it work? -DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - - - - -## Why DevSpace? -Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. - - -### Declarative Workflows -DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` -- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. -- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) -- **Share your workflows** with your team mates - - -### Made For Teams -DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. -- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git -- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project -- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) - - -### Hot Reloading -Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: -- Simply edit your files with your IDE and see how your application reloads within the running container. -- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes -- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. - - -### Automation -Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: -- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command -- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. - - -### Compatibility -DevSpace is battle tested with many Kubernetes distributions including: -- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind -- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) -- **Self-managed Kubernetes clusters** (e.g. created with Rancher) - -
- diff --git a/docs/versioned_docs/version-5.16/quickstart.mdx b/docs/versioned_docs/version-5.16/quickstart.mdx deleted file mode 100644 index e1508c12a3..0000000000 --- a/docs/versioned_docs/version-5.16/quickstart.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Quickstart -sidebar_label: Quickstart ---- - -import InstallFragment from './fragments/install-cli.mdx'; -import ChooseProjectFragment from './fragments/choose-project.mdx'; -import StartAppFragment from './fragments/start-app.mdx'; - -This is a 2-minute quickstart guide. For additional details and explanations, see the [Getting Started Guide](./getting-started/installation.mdx). - -## 1. Download CLI - - -## 2. Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - -## 3. Initialize Project -```bash -devspace init -``` -Choose `Component Chart` and `Based on this existing Dockerfile` for quickstart projects. - - -## 4. Start Development -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace dev -``` - -As soon as the terminal opens up, you can start your application: - - - -**Hot Reloading**: Now, change a file on your local computer and re-run the application inside the container terminal. - -**Port Forwarding**: You can access your application via `localhost:PORT` if your port is specified in `dev.ports` within `devspace.yaml`. - -When you're done testing development, type `exit` or hit `Ctrl-d` to exit the container terminal. - -## 5. Deploy Project -To build your container image and deploy a clean version of this project, run: -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace deploy -p production -``` - -## 6. Cleanup -To purge your deployment from the cluster, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.17/commands/devspace.md b/docs/versioned_docs/version-5.17/commands/devspace.md deleted file mode 100644 index 77355f7887..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Command - devspace" -sidebar_label: devspace ---- - -## devspace - -Welcome to the DevSpace! - -### Synopsis - -DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes. Get started by running the init command in one of your projects: - - devspace init - -### Options - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - -h, --help help for devspace - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - -``` - -``` - - -## Flags -## Global & Inherited Flags \ No newline at end of file diff --git a/docs/versioned_docs/version-5.17/commands/devspace_add.md b/docs/versioned_docs/version-5.17/commands/devspace_add.md deleted file mode 100644 index 93dd2af1d8..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_add.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Command - devspace add" -sidebar_label: devspace add ---- - - -Convenience command: adds something to devspace.yaml - -## Synopsis - - -``` -####################################################### -#################### devspace add ##################### -####################################################### -Adds config sections to devspace.yaml -``` - - -## Flags - -``` - -h, --help help for add -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_add_plugin.md b/docs/versioned_docs/version-5.17/commands/devspace_add_plugin.md deleted file mode 100644 index 75d19eb6d8..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_add_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace add plugin" -sidebar_label: devspace add plugin ---- - - -Add a plugin to devspace - -## Synopsis - - -``` -devspace add plugin [flags] -``` - -``` -####################################################### -############### devspace add plugin ################### -####################################################### -Adds a new plugin to devspace - -devspace add plugin https://github.com/my-plugin/plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_analyze.md b/docs/versioned_docs/version-5.17/commands/devspace_analyze.md deleted file mode 100644 index 4210991039..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_analyze.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace analyze" -sidebar_label: devspace analyze ---- - - -Analyzes a kubernetes namespace and checks for potential problems - -## Synopsis - - -``` -devspace analyze [flags] -``` - -``` -####################################################### -################## devspace analyze ################### -####################################################### -Analyze checks a namespaces events, replicasets, services -and pods for potential problems - -Example: -devspace analyze -devspace analyze --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for analyze - --ignore-pod-restarts If true, analyze will ignore the restart events of running pods - --patient If true, analyze will ignore failing pods and events until every deployment, statefulset, replicaset and pods are ready or the timeout is reached - --timeout int Timeout until analyze should stop waiting (default 120) - --wait Wait for pods to get ready if they are just starting (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_attach.md b/docs/versioned_docs/version-5.17/commands/devspace_attach.md deleted file mode 100644 index 1a83ebc447..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_attach.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Command - devspace attach" -sidebar_label: devspace attach ---- - - -Attaches to a container - -## Synopsis - - -``` -devspace attach [flags] -``` - -``` -####################################################### -################# devspace attach ##################### -####################################################### -Attaches to a running container - -devspace attach -devspace attach --pick # Select pod to enter -devspace attach -c my-container -devspace attach -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for attach - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to open a shell to -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_build.md b/docs/versioned_docs/version-5.17/commands/devspace_build.md deleted file mode 100644 index 1df6012752..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_build.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace build" -sidebar_label: devspace build ---- - - -Builds all defined images and pushes them - -## Synopsis - - -``` -devspace build [flags] -``` - -``` -####################################################### -################## devspace build ##################### -####################################################### -Builds all defined images and pushes them -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Builds only the specific named dependencies - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -h, --help help for build - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-dependency strings Skips building the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_cleanup.md b/docs/versioned_docs/version-5.17/commands/devspace_cleanup.md deleted file mode 100644 index 553b048918..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_cleanup.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace cleanup" -sidebar_label: devspace cleanup ---- - - -Cleans up resources - -## Synopsis - - -``` -####################################################### -################## devspace cleanup ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for cleanup -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-5.17/commands/devspace_cleanup_images.md deleted file mode 100644 index 833487d134..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_cleanup_images.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace cleanup images" -sidebar_label: devspace cleanup images ---- - - -Deletes all locally created images from docker - -## Synopsis - - -``` -devspace cleanup images [flags] -``` - -``` -####################################################### -############# devspace cleanup images ################# -####################################################### -Deletes all locally created docker images from docker -####################################################### -``` - - -## Flags - -``` - -h, --help help for images -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_deploy.md b/docs/versioned_docs/version-5.17/commands/devspace_deploy.md deleted file mode 100644 index 748ce6e054..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_deploy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace deploy" -sidebar_label: devspace deploy ---- - - -Deploy the project - -## Synopsis - - -``` -devspace deploy [flags] -``` - -``` -####################################################### -################## devspace deploy #################### -####################################################### -Deploys the current project to a Space or namespace: - -devspace deploy -devspace deploy -n some-namespace -devspace deploy --kube-context=deploy-context -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to (re-)build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to (re-)deploy every deployment - -h, --help help for deploy - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips building of images - --skip-dependency strings Skips deploying the following dependencies - --skip-deploy Skips deploying and only builds images - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --timeout int Timeout until deploy should stop waiting (default 120) - --verbose-dependencies Deploys the dependencies verbosely (default true) - --wait If true will wait for pods to be running or fails after given timeout -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_dev.md b/docs/versioned_docs/version-5.17/commands/devspace_dev.md deleted file mode 100644 index a2f5c6eaf8..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_dev.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: "Command - devspace dev" -sidebar_label: devspace dev ---- - - -Starts the development mode - -## Synopsis - - -``` -devspace dev [flags] -``` - -``` -####################################################### -################### devspace dev ###################### -####################################################### -Starts your project in development mode: -1. Builds your Docker images and override entrypoints if specified -2. Deploys the deployments via helm or kubectl -3. Forwards container ports to the local computer -4. Starts the sync client -5. Streams the logs of deployed containers - -Open terminal instead of logs: -- Use "devspace dev -t" for opening a terminal -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specified named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - --exit-after-deploy Exits the command after building the images and deploying the project - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to deploy every deployment - -h, --help help for dev - -i, --interactive DEPRECATED: DO NOT USE ANYMORE - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --open Open defined URLs in the browser, if defined (default true) - --portforwarding Enable port forwarding (default true) - --print-sync If enabled will print the sync log to the terminal - --skip-build Skips building of images - --skip-dependency strings Skips the following dependencies for deployment - -x, --skip-pipeline Skips build & deployment and only starts sync, portforwarding & terminal - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --sync Enable code synchronization (default true) - -t, --terminal Open a terminal instead of showing logs - --terminal-reconnect Will try to reconnect the terminal if an unexpected exit code was encountered (default true) - --timeout int Timeout until dev should stop waiting and fail (default 120) - --ui Start the ui server (default true) - --ui-port int The port to use when opening the ui server - --verbose-dependencies Deploys the dependencies verbosely (default true) - --verbose-sync When enabled the sync will log every file change - --wait If true will wait first for pods to be running or fails after given timeout - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_enter.md b/docs/versioned_docs/version-5.17/commands/devspace_enter.md deleted file mode 100644 index 8c331d309b..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_enter.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace enter" -sidebar_label: devspace enter ---- - - -Open a shell to a container - -## Synopsis - - -``` -devspace enter [flags] -``` - -``` -####################################################### -################## devspace enter ##################### -####################################################### -Execute a command or start a new terminal in your -devspace: - -devspace enter -devspace enter --pick # Select pod to enter -devspace enter bash -devspace enter -c my-container -devspace enter bash -n my-namespace -devspace enter bash -l release=test -devspace enter bash --image-selector nginx:latest -devspace enter bash --image-selector "image(app):tag(app)" -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for enter - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod / container if multiple are found (default true) - --pod string Pod to open a shell to - --reconnect Will reconnect the terminal if an unexpected return code is encountered - --wait Wait for the pod(s) to start if they are not running - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_init.md b/docs/versioned_docs/version-5.17/commands/devspace_init.md deleted file mode 100644 index 3590599258..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_init.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace init" -sidebar_label: devspace init ---- - - -Initializes DevSpace in the current folder - -## Synopsis - - -``` -devspace init [flags] -``` - -``` -####################################################### -#################### devspace init #################### -####################################################### -Initializes a new devspace project within the current -folder. Creates a devspace.yaml with all configuration. -####################################################### -``` - - -## Flags - -``` - --context string Context path to use for intialization - --dockerfile string Dockerfile to use for initialization (default "./Dockerfile") - -h, --help help for init - --provider string The cloud provider to use - -r, --reconfigure Change existing configuration -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list.md b/docs/versioned_docs/version-5.17/commands/devspace_list.md deleted file mode 100644 index d10b138b1e..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace list" -sidebar_label: devspace list ---- - - -Lists configuration - -## Synopsis - - -``` -####################################################### -#################### devspace list #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for list -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_commands.md b/docs/versioned_docs/version-5.17/commands/devspace_list_commands.md deleted file mode 100644 index 64fb860ad8..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_commands.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace list commands" -sidebar_label: devspace list commands ---- - - -Lists all custom DevSpace commands - -## Synopsis - - -``` -devspace list commands [flags] -``` - -``` -####################################################### -############## devspace list commands ################# -####################################################### -Lists all DevSpace custom commands defined in the -devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for commands -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_contexts.md b/docs/versioned_docs/version-5.17/commands/devspace_list_contexts.md deleted file mode 100644 index 51f8bdf4de..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_contexts.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace list contexts" -sidebar_label: devspace list contexts ---- - - -Lists all kube contexts - -## Synopsis - - -``` -devspace list contexts [flags] -``` - -``` -####################################################### -############## devspace list contexts ################# -####################################################### -Lists all available kube contexts - -Example: -devspace list contexts -####################################################### -``` - - -## Flags - -``` - -h, --help help for contexts -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_deployments.md b/docs/versioned_docs/version-5.17/commands/devspace_list_deployments.md deleted file mode 100644 index f0dddddde8..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_deployments.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list deployments" -sidebar_label: devspace list deployments ---- - - -Lists and shows the status of all deployments - -## Synopsis - - -``` -devspace list deployments [flags] -``` - -``` -####################################################### -############# devspace list deployments ############### -####################################################### -Shows the status of all deployments -####################################################### -``` - - -## Flags - -``` - -h, --help help for deployments -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-5.17/commands/devspace_list_namespaces.md deleted file mode 100644 index 1ebfa230b6..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_namespaces.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list namespaces" -sidebar_label: devspace list namespaces ---- - - -Lists all namespaces in the current context - -## Synopsis - - -``` -devspace list namespaces [flags] -``` - -``` -####################################################### -############ devspace list namespaces ################# -####################################################### -Lists all namespaces in the selected kube context -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespaces -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_plugins.md b/docs/versioned_docs/version-5.17/commands/devspace_list_plugins.md deleted file mode 100644 index cb5bc0d884..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_plugins.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list plugins" -sidebar_label: devspace list plugins ---- - - -Lists all installed devspace plugins - -## Synopsis - - -``` -devspace list plugins [flags] -``` - -``` -####################################################### -############# devspace list plugins ################## -####################################################### -Lists all installed plugins - -devspace list plugins -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugins -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_ports.md b/docs/versioned_docs/version-5.17/commands/devspace_list_ports.md deleted file mode 100644 index e1fde513b4..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_ports.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list ports" -sidebar_label: devspace list ports ---- - - -Lists port forwarding configurations - -## Synopsis - - -``` -devspace list ports [flags] -``` - -``` -####################################################### -############### devspace list ports ################### -####################################################### -Lists the port forwarding configurations -####################################################### -``` - - -## Flags - -``` - -h, --help help for ports -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_profiles.md b/docs/versioned_docs/version-5.17/commands/devspace_list_profiles.md deleted file mode 100644 index c048b8cf8e..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_profiles.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list profiles" -sidebar_label: devspace list profiles ---- - - -Lists all DevSpace profiles - -## Synopsis - - -``` -devspace list profiles [flags] -``` - -``` -####################################################### -############## devspace list profiles ################# -####################################################### -Lists all DevSpace configurations for this project -####################################################### -``` - - -## Flags - -``` - -h, --help help for profiles -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_sync.md b/docs/versioned_docs/version-5.17/commands/devspace_list_sync.md deleted file mode 100644 index 69e6fd706b..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_sync.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list sync" -sidebar_label: devspace list sync ---- - - -Lists sync configuration - -## Synopsis - - -``` -devspace list sync [flags] -``` - -``` -####################################################### -################# devspace list sync ################## -####################################################### -Lists the sync configuration -####################################################### -``` - - -## Flags - -``` - -h, --help help for sync -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_list_vars.md b/docs/versioned_docs/version-5.17/commands/devspace_list_vars.md deleted file mode 100644 index cc32ef92c0..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_list_vars.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list vars" -sidebar_label: devspace list vars ---- - - -Lists the vars in the active config - -## Synopsis - - -``` -devspace list vars [flags] -``` - -``` -####################################################### -############### devspace list vars #################### -####################################################### -Lists the defined vars in the devspace config with their -values -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars - -o, --output string The output format of the command. Can be either empty, keyvalue or json -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_logs.md b/docs/versioned_docs/version-5.17/commands/devspace_logs.md deleted file mode 100644 index f2d7157c94..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_logs.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace logs" -sidebar_label: devspace logs ---- - - -Prints the logs of a pod and attaches to it - -## Synopsis - - -``` -devspace logs [flags] -``` - -``` -####################################################### -#################### devspace logs #################### -####################################################### -Logs prints the last log of a pod container and attachs -to it - -Example: -devspace logs -devspace logs --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -f, --follow Attach to logs afterwards - -h, --help help for logs - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, image(app), nginx:tag(app)) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --lines int Max amount of lines to print from the last log (default 200) - --pick Select a pod (default true) - --pod string Pod to print the logs of - --wait Wait for the pod(s) to start if they are not running -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_open.md b/docs/versioned_docs/version-5.17/commands/devspace_open.md deleted file mode 100644 index 955d0566bf..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_open.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace open" -sidebar_label: devspace open ---- - - -Opens the space in the browser - -## Synopsis - - -``` -devspace open [flags] -``` - -``` -####################################################### -#################### devspace open #################### -####################################################### -Opens the space domain in the browser - -Example: -devspace open -####################################################### -``` - - -## Flags - -``` - -h, --help help for open - --port int The port on the localhost to listen on - --provider string The cloud provider to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_print.md b/docs/versioned_docs/version-5.17/commands/devspace_print.md deleted file mode 100644 index a9601ce337..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_print.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace print" -sidebar_label: devspace print ---- - - -Print displays the configuration - -## Synopsis - - -``` -devspace print [flags] -``` - -``` -####################################################### -################## devspace print ##################### -####################################################### -Prints the configuration for the current or given -profile after all patching and variable substitution -####################################################### -``` - - -## Flags - -``` - -h, --help help for print - --skip-info When enabled, only prints the configuration without additional information -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_purge.md b/docs/versioned_docs/version-5.17/commands/devspace_purge.md deleted file mode 100644 index fe7f236a63..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_purge.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace purge" -sidebar_label: devspace purge ---- - - -Delete deployed resources - -## Synopsis - - -``` -devspace purge [flags] -``` - -``` -####################################################### -################### devspace purge #################### -####################################################### -Deletes the deployed kuberenetes resources: - -devspace purge -devspace purge --dependencies -devspace purge -d my-deployment -####################################################### -``` - - -## Flags - -``` - -a, --all When enabled purges the dependencies as well - --dependencies DEPRECATED: Please use --all instead - --dependency strings Purges only the specific named dependencies - -d, --deployments string The deployment to delete (You can specify multiple deployments comma-separated, e.g. devspace-default,devspace-database etc.) - -h, --help help for purge - --skip-dependency strings Skips the following dependencies from purging - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_remove.md b/docs/versioned_docs/version-5.17/commands/devspace_remove.md deleted file mode 100644 index a6c5e71bef..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_remove.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace remove" -sidebar_label: devspace remove ---- - - -Changes devspace configuration - -## Synopsis - - -``` -####################################################### -################## devspace remove #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for remove -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_remove_context.md b/docs/versioned_docs/version-5.17/commands/devspace_remove_context.md deleted file mode 100644 index 41f1c2013b..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_remove_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace remove context" -sidebar_label: devspace remove context ---- - - -Removes a kubectl-context - -## Synopsis - - -``` -devspace remove context [flags] -``` - -``` -####################################################### -############# devspace remove context ################# -####################################################### -Removes a kubectl-context - -Example: -devspace remove context myspace -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_remove_plugin.md b/docs/versioned_docs/version-5.17/commands/devspace_remove_plugin.md deleted file mode 100644 index 91f9b76b86..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_remove_plugin.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace remove plugin" -sidebar_label: devspace remove plugin ---- - - -Removes a devspace plugin - -## Synopsis - - -``` -devspace remove plugin [flags] -``` - -``` -####################################################### -############# devspace remove plugin ################## -####################################################### -Removes a plugin - -devspace remove plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_render.md b/docs/versioned_docs/version-5.17/commands/devspace_render.md deleted file mode 100644 index d8744a1159..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_render.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace render" -sidebar_label: devspace render ---- - - -Render builds all defined images and shows the yamls that would be deployed - -## Synopsis - - -``` -devspace render [flags] -``` - -``` -####################################################### -################## devspace render ##################### -####################################################### -Builds all defined images and shows the yamls that would -be deployed via helm and kubectl, but skips actual -deployment. -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Renders only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to build every image - -h, --help help for render - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips image building - --skip-dependencies Skips rendering the dependencies - --skip-dependency strings Skips rendering the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_reset.md b/docs/versioned_docs/version-5.17/commands/devspace_reset.md deleted file mode 100644 index 6e4d8ceb1a..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_reset.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace reset" -sidebar_label: devspace reset ---- - - -Resets an cluster token - -## Synopsis - - -``` -####################################################### -################## devspace reset ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for reset -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-5.17/commands/devspace_reset_dependencies.md deleted file mode 100644 index 9ac4018f4a..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_reset_dependencies.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset dependencies" -sidebar_label: devspace reset dependencies ---- - - -Resets the dependencies cache - -## Synopsis - - -``` -devspace reset dependencies [flags] -``` - -``` -####################################################### -############ devspace reset dependencies ############## -####################################################### -Deletes the complete dependency cache - -Examples: -devspace reset dependencies -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_reset_pods.md b/docs/versioned_docs/version-5.17/commands/devspace_reset_pods.md deleted file mode 100644 index afea2011ca..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_reset_pods.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset pods" -sidebar_label: devspace reset pods ---- - - -Resets the replaced pods - -## Synopsis - - -``` -devspace reset pods [flags] -``` - -``` -####################################################### -############### devspace reset pods ################### -####################################################### -Resets the replaced pods to its original state - -Examples: -devspace reset pods -####################################################### -``` - - -## Flags - -``` - -h, --help help for pods -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_reset_vars.md b/docs/versioned_docs/version-5.17/commands/devspace_reset_vars.md deleted file mode 100644 index 9b18a646d1..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_reset_vars.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset vars" -sidebar_label: devspace reset vars ---- - - -Resets the current config vars - -## Synopsis - - -``` -devspace reset vars [flags] -``` - -``` -####################################################### -############### devspace reset vars ################### -####################################################### -Resets the saved variables of the current config - -Examples: -devspace reset vars -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_restart.md b/docs/versioned_docs/version-5.17/commands/devspace_restart.md deleted file mode 100644 index 9c4872213d..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_restart.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace restart" -sidebar_label: devspace restart ---- - - -Restarts containers where the sync restart helper is injected - -## Synopsis - - -``` -devspace restart [flags] -``` - -``` -####################################################### -################## devspace restart ################### -####################################################### -Restarts containers where the sync restart helper -is injected: - -devspace restart -devspace restart -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod to restart - -h, --help help for restart - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --name string The sync path name to restart - --pick Select a pod (default true) - --pod string Pod to restart -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_restore.md b/docs/versioned_docs/version-5.17/commands/devspace_restore.md deleted file mode 100644 index 279d29b0af..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_restore.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace restore" -sidebar_label: devspace restore ---- - - -Restore configuration - -## Synopsis - - -``` -####################################################### -################## devspace restore ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for restore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_restore_vars.md b/docs/versioned_docs/version-5.17/commands/devspace_restore_vars.md deleted file mode 100644 index 86ce4d55f9..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_restore_vars.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace restore vars" -sidebar_label: devspace restore vars ---- - - -Restores variable values from kubernetes - -## Synopsis - - -``` -devspace restore vars [flags] -``` - -``` -####################################################### -############### devspace restore vars ################# -####################################################### -Restores devspace config variable values from a kubernetes -secret. - -Examples: -devspace restore vars -devspace restore vars --namespace test -devspace restore vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_run.md b/docs/versioned_docs/version-5.17/commands/devspace_run.md deleted file mode 100644 index 0addeec7f1..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_run.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace run" -sidebar_label: devspace run ---- - - -Run executes a predefined command - -## Synopsis - - -``` -devspace run [flags] -``` - -``` -####################################################### -##################### devspace run #################### -####################################################### -Run executes a predefined command from the devspace.yaml - -Examples: -devspace run mycommand --myarg 123 -devspace run mycommand2 1 2 3 -devspace --dependency my-dependency run any-command --any-command-flag -####################################################### -``` - - -## Flags - -``` - --dependency string Run a command from a specific dependency - -h, --help help for run -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_save.md b/docs/versioned_docs/version-5.17/commands/devspace_save.md deleted file mode 100644 index 6eb1fe6b87..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_save.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace save" -sidebar_label: devspace save ---- - - -Save configuration - -## Synopsis - - -``` -####################################################### -#################### devspace save #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for save -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_save_vars.md b/docs/versioned_docs/version-5.17/commands/devspace_save_vars.md deleted file mode 100644 index db54e3dcdc..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_save_vars.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Command - devspace save vars" -sidebar_label: devspace save vars ---- - - -Saves variable values to kubernetes - -## Synopsis - - -``` -devspace save vars [flags] -``` - -``` -####################################################### -################ devspace save vars ################### -####################################################### -Saves devspace config variable values into a kubernetes -secret. Variable values can be shared or restored via -devspace restore vars. - -Examples: -devspace save vars -devspace save vars --namespace test -devspace save vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_set.md b/docs/versioned_docs/version-5.17/commands/devspace_set.md deleted file mode 100644 index 96298bc808..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_set.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace set" -sidebar_label: devspace set ---- - - -Make global configuration changes - -## Synopsis - - -``` -####################################################### -#################### devspace set ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for set -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_set_var.md b/docs/versioned_docs/version-5.17/commands/devspace_set_var.md deleted file mode 100644 index 38842faab4..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_set_var.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace set var" -sidebar_label: devspace set var ---- - - -Sets a variable - -## Synopsis - - -``` -devspace set var [flags] -``` - -``` -####################################################### -################# devspace set var #################### -####################################################### -Sets a specific variable - -Examples: -devspace set var key=value -devspace set var key=value key2=value2 -####################################################### -``` - - -## Flags - -``` - -h, --help help for var - --overwrite If true will overwrite the variables value even if its set already (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_sync.md b/docs/versioned_docs/version-5.17/commands/devspace_sync.md deleted file mode 100644 index b4802709a1..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_sync.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Command - devspace sync" -sidebar_label: devspace sync ---- - - -Starts a bi-directional sync between the target container and the local path - -## Synopsis - - -``` -devspace sync [flags] -``` - -``` -####################################################### -################### devspace sync ##################### -####################################################### -Starts a bi-directionaly sync between the target container -and the current path: - -devspace sync -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -devspace sync --container-path=/my-path -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to sync to - --container-path string Container path to use (Default is working directory) - --download-on-initial-sync DEPRECATED: Downloads all locally non existing remote files in the beginning (default true) - --download-only If set DevSpace will only download files - -e, --exclude strings Exclude directory from sync - -h, --help help for sync - --initial-sync string The initial sync strategy to use (mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --local-path string Local path to use (Default is current directory - --no-watch Synchronizes local and remote and then stops - --pick Select a pod (default true) - --pod string Pod to sync to - --upload-only If set DevSpace will only upload files - --verbose Shows every file that is synced -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_ui.md b/docs/versioned_docs/version-5.17/commands/devspace_ui.md deleted file mode 100644 index a96da5bf09..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_ui.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace ui" -sidebar_label: devspace ui ---- - - -Opens the localhost UI in the browser - -## Synopsis - - -``` -devspace ui [flags] -``` - -``` -####################################################### -##################### devspace ui ##################### -####################################################### -Opens the localhost UI in the browser -####################################################### -``` - - -## Flags - -``` - --dev Ignore errors when downloading UI - -h, --help help for ui - --host string The host to use when opening the ui server (default "localhost") - --port int The port to use when opening the ui server - --server If enabled will force start a server (otherwise an existing UI server is searched) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_update.md b/docs/versioned_docs/version-5.17/commands/devspace_update.md deleted file mode 100644 index d2f87e33f1..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_update.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace update" -sidebar_label: devspace update ---- - - -Updates the current config - -## Synopsis - - -``` -####################################################### -################## devspace update #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for update -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-5.17/commands/devspace_update_dependencies.md deleted file mode 100644 index fb3b98f886..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_update_dependencies.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace update dependencies" -sidebar_label: devspace update dependencies ---- - - -Updates the git repositories of the dependencies defined in the devspace.yaml - -## Synopsis - - -``` -devspace update dependencies [flags] -``` - -``` -####################################################### -############ devspace update dependencies ############# -####################################################### -Updates the git repositories of the dependencies defined -in the devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_update_plugin.md b/docs/versioned_docs/version-5.17/commands/devspace_update_plugin.md deleted file mode 100644 index e234901371..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_update_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace update plugin" -sidebar_label: devspace update plugin ---- - - -Updates a devspace plugin - -## Synopsis - - -``` -devspace update plugin [flags] -``` - -``` -####################################################### -############# devspace update plugin ################## -####################################################### -Updates a plugin - -devspace update plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_upgrade.md b/docs/versioned_docs/version-5.17/commands/devspace_upgrade.md deleted file mode 100644 index eba126f39f..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_upgrade.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace upgrade" -sidebar_label: devspace upgrade ---- - - -Upgrade the DevSpace CLI to the newest version - -## Synopsis - - -``` -devspace upgrade [flags] -``` - -``` -####################################################### -################## devspace upgrade ################### -####################################################### -Upgrades the DevSpace CLI to the newest version -####################################################### -``` - - -## Flags - -``` - -h, --help help for upgrade - --version string The version to update devspace to. Defaults to the latest stable version available -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_use.md b/docs/versioned_docs/version-5.17/commands/devspace_use.md deleted file mode 100644 index 096ad1ebdc..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_use.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace use" -sidebar_label: devspace use ---- - - -Use specific config - -## Synopsis - - -``` -####################################################### -#################### devspace use ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_use_context.md b/docs/versioned_docs/version-5.17/commands/devspace_use_context.md deleted file mode 100644 index 3b4cb52d5f..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_use_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace use context" -sidebar_label: devspace use context ---- - - -Tells DevSpace which kube context to use - -## Synopsis - - -``` -devspace use context [flags] -``` - -``` -####################################################### -############### devspace use context ################## -####################################################### -Switch the current kube context - -Example: -devspace use context my-context -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_use_namespace.md b/docs/versioned_docs/version-5.17/commands/devspace_use_namespace.md deleted file mode 100644 index ee11acc7f9..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_use_namespace.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace use namespace" -sidebar_label: devspace use namespace ---- - - -Tells DevSpace which namespace to use - -## Synopsis - - -``` -devspace use namespace [flags] -``` - -``` -####################################################### -############## devspace use namespace ################# -####################################################### -Set the default namespace to deploy to - -Example: -devspace use namespace my-namespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespace - --reset Resets the default namespace of the current kube-context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/commands/devspace_use_profile.md b/docs/versioned_docs/version-5.17/commands/devspace_use_profile.md deleted file mode 100644 index 2e531b7836..0000000000 --- a/docs/versioned_docs/version-5.17/commands/devspace_use_profile.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace use profile" -sidebar_label: devspace use profile ---- - - -Use a specific DevSpace profile - -## Synopsis - - -``` -devspace use profile [flags] -``` - -``` -####################################################### -################ devspace use profile ################# -####################################################### -Use a specific DevSpace profile - -Example: -devspace use profile production -devspace use profile staging -devspace use profile --reset -####################################################### -``` - - -## Flags - -``` - -h, --help help for profile - --reset Don't use a profile anymore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.17/configuration/commands/basics.mdx b/docs/versioned_docs/version-5.17/configuration/commands/basics.mdx deleted file mode 100644 index a01e314f4e..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/commands/basics.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Custom Commands -sidebar_label: commands ---- - -The idea of custom commands is that someone on a team defines a set of useful commands and stores them in the `devspace.yaml`, then commits and pushes this config to the code repository. Now, others can run these custom commands without having to remember all the details or having to read through endless pages of documentation. - -Custom commands are being shared in the `commands` section of `devspace.yaml`: -```yaml -# File: devspace.yaml -images: - default: - image: john/backend -commands: -- name: debug-backend - command: "devspace dev --profile=debug-backend $@" -profiles: -- name: debug-backend - patches: - - op: replace - path: images.default.entrypoint - value: ["npm", "run", "debug"] -``` - -:::note -Custom commands can be used for more than just running `devspace` commands, e.g. they can run any other script or command, set environment variables etc. If you are familiar with the `scripts` section of the `package.json` for Node.js, you will find that `devspace run [name]` works pretty much the same way as `npm run [name]` -::: - -The above example configuration would allow everyone to run the custom command `debug-backend` like this: -```bash -devspace run debug-backend -devspace run debug-backend --verbose-dependencies -devspace run debug-backend -- --verbose-dependencies -s -``` - -And `devspace run` would execute the following commands internally: -```bash -devspace dev --profile=debug-backend -devspace dev --profile=debug-backend --verbose-dependencies -devspace dev --profile=debug-backend --verbose-dependencies -s -``` - -:::note `--` End of Options Separator -The `--` between the command name and the additional flags for the command tells your terminal that the arguments and flags that follow after the `--` do not belong to `devspace run` and should not be parsed. It is not required but often helpful to use `--` when executing commands using `devspace run`. -::: - -:::info Interactive Commands -Custom commands proxy input and output streams, so you can even share interactive commands such as `devspace enter`. -::: - - -## Configuration - -### `name` -The `name` option is mandatory and expects a string with name that serves as an alias for the command provided in the `command` option. - - -### `command` -The `command` option is mandatory and expects a string with an arbitrary terminal command. - -While you can run any `devspace` command, you can also run other commands (if installed), set environment variables or use `bash` style expressions such as `&&`, `||` or `;`. To ensure that many of your team mates can run the command on any platform, it is highly recommended to keep your command expressions as simple as possible. - -:::info Cross-Platform -Write all commands in `bash` style. DevSpace is using a library to make them cross-platform executable. -::: - -### `appendArgs` -The `appendArgs` option expects either true or false and will append given arguments to the command. If not specified, this option defaults to false. - -Example: -```yaml -commands: -# Running 'devspace run append my-value' will print 'my-value' -- name: append - command: echo $@ -# Running 'devspace run no-append my-value' will print '' -- name: no-append - command: echo -# Running 'devspace run append-option my-value' will print 'my-value' -- name: append-option - appendArgs: true - command: echo -``` - -### `description` -The `description` option is optional and expects a string with a description of what this command does and when it should be used. This is only used for helping other users to understand the meaning of a command and will be shown when the user runs: `devspace list commands` - - -
- -## Useful Commands - -### `devspace list commands` -Run this command to list all custom commands that are configured: -```bash -devspace list commands -``` - - -### `devspace run dependency1.command` -You can run a command defined in one of the dependencies of the current project like this: -```bash -devspace run [dependency].[command] [command-flags-and-args] -``` - -:::note Working Directory -When running a command of a dependency, DevSpace will use the root folder of the dependency as current working directory when executing the command. -::: diff --git a/docs/versioned_docs/version-5.17/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-5.17/configuration/dependencies/basics.mdx deleted file mode 100644 index 360731a33b..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/dependencies/basics.mdx +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Dependencies -sidebar_label: "Basics" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: - -- You want to reuse an already existing `devspace.yaml` of another project -- You want to define a more complex pipeline with multiple build, hook and deploy steps -- You want to define a common build / deploy step for other projects - -Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. - - - - -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - ports: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - vars: - - name: ROOT_PASSWORD - value: ${ROOT_PASSWORD} -``` - - - - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - - - - -## Dependency Source -DevSpace is able to work with dependencies from the following sources: -- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration -- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) - - -## Execution Order - -Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 - dev: - sync: true -- name: dep2 - source: - path: dep2 - dev: - ports: true -images: - image1: - image: myimage/image -deployments: -- name: deployment1 - helm: - ... -dev: - ports: ... - sync: ... -``` - -### Explanation -In the above `devspace.yaml`, execution order would be as followed: -* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) -* Execute dependency dep2's pull secrets, image building & deployments -* Build image `image1` -* Deploy deployment `deployment1` -* Start merged portforwarding from `dep2` and `dev.ports` -* Start sync from `dep1` and `dev.sync` - -## Referencing Dependencies - -### Reference Image Names -You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageName: dep1.image1 -``` - -With `dep1/devspace.yaml`: -```yaml -images: - image1: - image: myusername/devspace -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: myusername/devspace -``` - -### Referencing Nested Dependencies - -You can also reference nested dependencies (dependencies of dependencies) via: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep2 that is a dependency of dep1 - terminal: - imageName: dep1.dep2.image1 -``` - -### Referencing Dependencies in Deployment Values / Manifests - -It is also possible to reference a dependency's image with the helpers `image()` or `tag()` in a deployment: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: image(dep1.image1):tag(dep1.image1) # -> replaced with 'myusername/devspace:xxxx' -``` - -With a dependency `dep1/devspace.yaml` that looks like: -```yaml -images: - image1: - image: myusername/devspace -``` - -## Dependency Resolution -When a DevSpace project has dependencies, DevSpace will: - -1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository -2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) -3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets -4. Remove the leave node from the tree and repeat step 3 until everything has been deployed - -The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. - -### Redundant Dependencies -If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. - -### Circular Dependencies -If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. - -## Useful Commands - -### `devspace update dependencies` -If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.17/configuration/dependencies/git-repository.mdx b/docs/versioned_docs/version-5.17/configuration/dependencies/git-repository.mdx deleted file mode 100644 index 07f33635c0..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/dependencies/git-repository.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Deploy Git-based Dependencies -sidebar_label: "source.git" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - sync: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - dev: - ports: true -dev: - terminal: - imageName: api-server.server-image -``` - -:::info Authentication -DevSpace is using the git credential store. So, if you are able to clone or pull from the specified repository, DevSpace will also be able clone or pull this repository. -::: - -## `source` - -### `source.git` -The `source.git` option expects a string with the URL of a git repository. DevSpace will use the `master` branch by default and assumes that the `devspace.yaml` is located at the root directory of the git repository. To customize this behavior, use the following, complementary config options: -- [`branch` for a different git branch](#sourcebranch) -- [`tag` for a specific git tag or release](#sourcetag) -- [`revision` for a specific git commit hash](#sourcerevision) -- [`subPath` for custom location of `devspace.yaml` within the repository](#sourcesubpath) - -:::note Caching -DevSpace will clone the git repository which is defined as a dependency and cache the project in the global cache folder (i.e. `$HOME/.devspace`). DevSpace will also pull new commits before deploying the dependency. -::: - -#### Example: Git Projects as Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable -- source: - git: https://github.com/my-auth-server - revision: c967392 -- source: - git: https://github.com/my-auth-server - tag: v3.0.1 -``` -**Explanation:** -- When you run `devspace deploy` or `devspace dev` for the first time after defining the dependencies, DevSpace will check out all git projects into the global cache folder `$HOME/.devspace`. -- Whenever you run `devspace deploy` or `devspace dev` (even the first time), DevSpace will: - - Run a `git pull` for all cached repositories. - - Load the `devspace.yaml` files of the dependency projects and resolve their dependencies respectively. - - Deploy all dependency projects according to their `devspace.yaml` files. - -### `source.branch` -The `source.branch` option expects a string stating the branch of the git repository referenced via `source.git` that should be used when deploying this dependency. - -#### Default Value For `source.branch` -```yaml -branch: master -``` - -### `source.tag` -The `source.tag` option expects a string stating a tag of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.revision` -The `source.revision` option expects a string stating a commit hash of the git repository referenced via `source.git` that should be used when deploying this dependency. - -### `source.subPath` -The `source.subPath` option expects a string stating a folder within the git repository referenced via `source.git` that contains the `devspace.yaml` for this dependency. - -#### Default Value For `source.subPath` -```yaml -subPath: / -``` - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name within the git repository's `source.subPath` folder. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file dev.yaml for the dependency's DevSpace configuration -# at the root folder of the repository's "stable" branch -dependencies: -- source: - git: https://github.com/my-api-server - branch: stable - configName: dev.yaml -``` - - -## Git Options - -### `source.disableShallow` -The `source.disableShallow` option expects a boolean that prevents DevSpace from using shallow clones (git flag `--depth 1`) when retrieving a dependency via git clone. - -:::info Shallow Clone By Default -DevSpace uses shallow clones of git dependencies which reduces the time to retrieve the dependency. -::: - -#### Default Value For `source.disableShallow` -```yaml -disableShallow: false -``` - -### `source.cloneArgs` -The `source.cloneArgs` option expects an array of additional arguments that DevSpace will pass when cloning a git dependency using the `git clone` command. - -#### Default Value For `source.cloneArgs` -```yaml -cloneArgs: [] -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.17/configuration/dependencies/local-folder.mdx b/docs/versioned_docs/version-5.17/configuration/dependencies/local-folder.mdx deleted file mode 100644 index 8e4f935dd8..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/dependencies/local-folder.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Deploy Path-Based Local Dependencies -sidebar_label: "source.path" ---- - -import FragmentDependencyProfile from '../../fragments/dependency-profile.mdx'; -import FragmentDependencySkipBuild from '../../fragments/dependency-skipBuild.mdx'; -import FragmentDependencyIgnoreDependencies from '../../fragments/dependency-ignoreDependencies.mdx'; -import FragmentDependencyNamespace from '../../fragments/dependency-namespace.mdx'; -import FragmentDependencyName from '../../fragments/dependency-name.mdx'; -import FragmentDependencyVars from '../../fragments/dependency-vars.mdx'; -import FragmentDependencyDev from '../../fragments/dependency-dev.mdx'; -import FragmentDependencyOverwriteVars from '../../fragments/dependency-overwrite-vars.mdx'; - - -## Example -```yaml -dependencies: -- name: component-1 - source: - path: ./different/component-1 -- name: component-2 - source: - path: ./different/component-2 -deployments: -- name: use-dependency-image - helm: - componentChart: true - values: - containers: - - image: image(component-1.image1):tag(component-1.image1) -``` - -## `source` - -### `source.path` -The `source.path` option expects a string with a relative path to a folder that contains a `devspace.yaml` which marks a project that is a dependency of the project referencing it. - -#### Example: Local Project as Dependency -```yaml -dependencies: -- source: - path: ../other-project -- source: - path: ./different/subproject -``` -**Explanation:** -- Whenever you run `devspace deploy` or `devspace dev`, DevSpace will: - - Load the `devspace.yaml` files of both dependencies and resolve their dependencies respectively. - - Deploy both projects according to their `devspace.yaml` files. - -### `source.configName` -The `source.configName` option is optional and specifies the dependency's DevSpace configuration file name. If not provided, `devspace.yaml` at the dependency `source.path` will be used. - -#### Default Value For `source.configName` -```yaml -configName: devspace.yaml -``` - -#### Example: Use dev.yaml for Dependency's DevSpace Configuration -```yaml -# This will use the file component-1/dev.yaml -# for the dependency's DevSpace configuration -dependencies: -- source: - path: component-1 - configName: dev.yaml -``` - -## General Options - -### `profile` - - - - -### `skipBuild` - - - - -### `ignoreDependencies` - - - - -### `name` - - - - -### `namespace` - - - -### `vars` - - - -### `overwriteVars` - - - -### `dev` - - diff --git a/docs/versioned_docs/version-5.17/configuration/deployments/basics.mdx b/docs/versioned_docs/version-5.17/configuration/deployments/basics.mdx deleted file mode 100644 index bc80d1e7af..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/deployments/basics.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Deployments -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; - -Deployments are configured within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction - -- name: "deployment-2" # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml - -- name: "deployment-3" # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... - -- name: "deployment-4" # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction -``` - - - - -```yaml -deployments: -- name: database # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... -- name: backend # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - kustomize: true - manifests: - - app/kustomization/ -``` - - - - -:::info Sequential Deployment -Unlike images which are build in parallel, deployments will be deployed sequentially following the order in which they are specified in the `devspace.yaml`. -::: - -## Run Deployments -When you run one of the following commands, DevSpace will run the deployment process: -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger the deployment process: -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - -## Deployment Process -DevSpace loads the `deployments` configuration from `devspace.yaml` and builds one deployment after another in the order that they are specified in the `deployments` array. Additionally, DevSpace also deploys related projects speficied in `dependencies`. - - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - -
- ---- - -## Useful Commands - -### `devspace list deployments` -This command lists all deployments and their status: -```bash -devspace list deployments -``` - -### `devspace render` -This command prints all Kubernetes manifests that would be created when running `devspace deploy` or `devspace dev` but without actually deploying them to the cluster: -```bash -devspace render -``` -In case of Helm deployments, this command behaves similar to `helm install --dry-run --debug` - -:::info Image Building & Tag Replacement -This command will build images (if necessary) and update the tags within manifests and Helm chart values. -::: diff --git a/docs/versioned_docs/version-5.17/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-5.17/configuration/deployments/helm-charts.mdx deleted file mode 100644 index 8782b9719e..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/deployments/helm-charts.mdx +++ /dev/null @@ -1,554 +0,0 @@ ---- -title: Deploy Helm Charts -sidebar_label: helm ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentInfoComponentChart from '../../fragments/info-component-chart.mdx'; - -To deploy Helm charts, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - - - - - - -```yaml {5,6} -deployments: -- name: backend - helm: - chart: - name: chart-name - repo: https://my-charts.company.tld/ - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - -```yaml {5} -deployments: -- name: backend - helm: - chart: - name: ./path/to/chart - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: image(registry.url/repo/image) - # If registry.url/repo/image was found under images as well, will be - # rewritten to generated_tag - onlyTag: tag(registry.url/repo/image) - ingress: - enabled: true -``` - - - - - -## Chart - -### `componentChart` -The `componentChart` option expects a boolean which states if the Component Helm Chart should be used for deployment. - - - -:::warning -If `componentChart: true` is configured, all options under `chart` will be ignored. -::: - -#### Default Value for `componentChart` -```yaml -componentChart: false -``` - -#### Example: Component Chart Deployment -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - -### `chart.name` -The `name` option is mandatory and expects a string stating either: -- **a path to a local chart** that is stored on the filesystem -- **or the name of a remote chart** that is stored in a repository (one specified via [`repo` option](#chartrepo)) or in the form of `repo/name`, where `repo` was added via `helm repo add repo https://repo.url` beforehand - -DevSpace follows the same behavior as `helm install` and first checks if the path specified in `name` exists on the file system and is a valid chart. If not, DevSpace will assume that the `name` is not a path but the name of a remote chart located in a chart repository. - -#### Example: Simple Helm Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -``` - -### `chart.version` -The `version` option expects a string stating the version of the chart that should be used. - -#### Default Value for `version` -```yaml -version: "" -``` - -:::note Latest Version -If no version is specified, Helm will by default use the latest version of the chart. -::: - -#### Example: Custom Chart Version -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - version: "1.3.1" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --version="1.3.1" -``` - -### `chart.repo` -The `repo` option expects a string with a URL to a [Helm Chart Repository](https://helm.sh/docs/chart_repository/). This is equivalent of using the `--repo` flag in `helm install` - -#### Example: Custom Chart Repository -```yaml -deployments: -- name: database - helm: - chart: - name: custom-chart - repo: https://my-repo.tld/ -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database custom-chart --repo "https://my-repo.tld/" -``` - -### `chart.username` -The `username` option expects a string that specifies the user that should be used to access `chart.repo`. Will be used as value for the helm flag `--username` - -### `chart.password` -The `password` option expects a string that specifies the password that should be used to access `chart.repo`. Will be used as value for the helm flag `--password` - -## Values -Helm charts can be configured by overriding the default values of the chart. - -### `values` -The `values` option expects an object with values that should be overriding the default values of this Helm chart. - -Compared to the `valuesFiles` option, using `values` has the following advantages: -- It is easier to comprehend and faster to find (no references) -- It allows you to use [dynamic config variables](../../configuration/variables/basics.mdx) - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `values` -```yaml -values: {} -``` - -#### Example: Using Values in devspace.yaml -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - values: - mysqlRootPassword: ${MYSQL_ROOT_PASSWORD} - mysqlUser: db_user - mysqlDatabase: app_database -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --set mysqlRootPassword="$MYSQL_ROOT_PASSWORD" --set mysqlUser="db_user" --set mysqlDatabase="app_database" -``` - -### `valuesFiles` -The `valuesFiles` option expects an array of paths to yaml files which specify values for overriding the values.yaml of the Helm chart. - -Compared to the `values` option, using `valuesFiles` has the following advantages: -- It reduces the size of your `devspace.yaml` especially when setting many values for a chart -- It allows you to run Helm commands directly without DevSpace, e.g. `helm upgrade [NAME] -f mysql/values.yaml` - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `valuesFiles` -```yaml -valuesFiles: [] -``` - -#### Example: Using Values Files -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - valuesFiles: - - mysql/values.yaml - - mysql/values.production.yaml -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -f mysql/values.yaml -f mysql/values.production.yaml -``` - - -### `replaceImageTags` -The `replaceImageTags` option expects a boolean stating if DevSpace should do [Image Tag Replacement](../../configuration/deployments/basics.mdx#3-tag-replacement). - -By default, DevSpace searches all your values (specified via `values` or `valuesFiles`) for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - replaceImageTags: false -``` - - -## Helm Options - -### `upgradeArgs` -The `upgradeArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm upgrade` during deployment. - -### `templateArgs` -The `templateArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm template` during `devspace render`. - -### `deleteArgs` -The `deleteArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm delete` during `devspace purge`. - -### `wait` -The `wait` option expects a boolean that will be used for the [helm flag `--wait`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `wait` -```yaml -wait: false -``` - -#### Example: Helm Flag Wait -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - wait: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --wait -``` - -### `displayOutput` - -The `displayOutput` option expects a boolean and allows helm output to be printed to the console after `helm install` and `helm upgrade`. This can be used to display `notes.txt` from your helm charts. - -#### Default Value for `displayOutput` -```yaml -displayOutput: false -``` - -#### Example: displayOutput -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - displayOutput: true -``` - -**Explanation:** -Deploying the above example would print the helm output and the `notes.txt` from the bitnami/mysql chart. - - -### `timeout` -The `timeout` option expects an integer representing a number of seconds that will be used for the [helm flag `--timeout`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `timeout` -```yaml -timeout: 5m0s # defined by helm -``` - -#### Example: Helm Flag Timeout -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - timeout: 300s -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --timeout=300s -``` - -### `force` -The `force` option expects a boolean that will be used for the [helm flag `--force`](https://helm.sh/docs/helm/helm_upgrade). - -#### Default Value for `force` -```yaml -force: false -``` - -#### Example: Helm Flag Force -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - force: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --force -``` - -### `recreate` -The `recreate` option expects a boolean that states if DevSpace should set the Helm flag `--recreate-pods`. It tells Helm to restart all pods for applicable resources (e.g. Deployments). - -#### Default Value for `recreate` -```yaml -recreate: false -``` - -#### Example: Enable Recreate Pods -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - recreate: true -``` - -### `atomic` -The `atomic` option expects a boolean that states if DevSpace should pass the `--atomic` flag to Helm. If set, the upgrade process rolls back all changes in case the upgrade fails. This flag also sets the [`--wait` option](#wait). - -#### Default Value for `atomic` -```yaml -atomic: false -``` - -#### Example: Enable Atomic Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - atomic: true -``` - -### `cleanupOnFail` -The `cleanupOnFail` option expects a boolean that states if DevSpace should set the Helm flag `--cleanup-on-fail`. It allows that Helm deletes newly created resources during a rollback in case the rollback fails. - -#### Default Value for `cleanupOnFail` -```yaml -cleanupOnFail: false -``` - -#### Example: Enable Cleanup On Fail -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - cleanupOnFail: true -``` - -### `disableHooks` -The `disableHooks` option expects a boolean that tells DevSpace to disable hooks when executing Helm commands. - -#### Default Value for `disableHooks` -```yaml -disableHooks: false -``` - -#### Example: Disable Hooks -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - disableHooks: true -``` - -### `v2` -The `v2` option expects a boolean that tells DevSpace to use the legacy version 2 of Helm instead of Helm v3. - -#### Default Value for `v2` -```yaml -v2: false -``` - -### `tillerNamespace` -The `tillerNamespace` option expects a string that will be used for the [helm flag `--tiller-namespace`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning Deprecated -This config option is deprecated because Tiller is not necessary anymore since DevSpace supports Helm v3. -::: - -#### Default Value for `tillerNamespace` -```yaml -tillerNamespace: "" # defaults to default namespace of current context -``` - -#### Example: Change Tiller Namespace -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - tillerNamespace: my-tiller-ns - v2: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -# Helm v2 CLI -helm install --name database bitnami/mysql --tiller-namespace=my-tiller-ns -``` - - -### `path` -The `path` option is optional and expects a string with the path of an Helm v2 binary / executable file which should be used for Helm v2 deployments. - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning -Setting `path` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `helm` to your `$PATH` environment variable instead. -::: - - -## General Options - -### `name` -The `name` option is required and expects a string with the name of the release used to deploy this Helm chart. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the Helm chart to. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: database - namespace: some-namespace - helm: - chart: - name: bitnami/mysql -``` diff --git a/docs/versioned_docs/version-5.17/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-5.17/configuration/deployments/kubernetes-manifests.mdx deleted file mode 100644 index 033550ece8..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/deployments/kubernetes-manifests.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kubernetes Manifests -sidebar_label: kubectl (manifests) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kubernetes manifests with `kubectl apply`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -- name: frontend - kubectl: - manifests: - - frontend/manifest.yaml -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -f backend/ -kubectl apply -f backend-extra/ -kubectl apply -f frontend/manifest.yaml -``` - -:::note Kubectl -Deployments with `kubectl` require `kubectl` to be installed. If the `kubectl` binary cannot be found within the `$PATH` variable and it is not specified by specifying the [`cmdPath` option](#cmdpath), DevSpace will download the `kubectl` binary into the `$HOME/.devspace/bin` folder. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths or path globs that point to Kubernetes manifest files (yaml or json files) or to folders containing Kubernetes manifests or Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ - - glob/path/to/manifests/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `createArgs` -The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize create` to render the manifests using the default flags `--dry-run --output yaml --validate=false`. The actual deployment will be executed using `kubectl apply` after DevSpace has replaced the image tags within the rendered manifests in memory. -::: - -#### Default Value for `createArgs` -```yaml -createArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - createArgs: - - "--recursive" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.17/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-5.17/configuration/deployments/kustomizations.mdx deleted file mode 100644 index 74d10d7539..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/deployments/kustomizations.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Deploy Kustomizations -sidebar_label: kubectl (kustomize) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kustomizations using `kustomize` / `kubectl apply -k`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml {4} -deployments: -- name: my-deployment - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -k my-kustomization/ -kubectl apply -k another-kustomization/ -``` - -:::warning Kubectl or Kustomize Required -Kustomization deployments require `kubectl` or `kustomize` to be installed. If both are available, DevSpace will use the `kustomize` binary by default. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths that point to directories containing Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `kustomizeArgs` -The `kustomizeArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kustomize build`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize build` to render the manifest templates. The actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `kustomizeArgs` -```yaml -kustomizeArgs: [] -``` - -#### Example: Custom Kustomize Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - kustomize: true - kustomizeArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kustomize build --timeout=10s --grace-period=30 -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` diff --git a/docs/versioned_docs/version-5.17/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-5.17/configuration/development/auto-reloading.mdx deleted file mode 100644 index cfb89112b9..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/auto-reloading.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Configure Auto-Reloading -sidebar_label: autoReload ---- - -There are certain use cases where you want to rebuild and redeploy the whole application instead of using the file synchronization and hot reloading. DevSpace provides you the options to specify special paths that are watched during `devspace dev` and any change to such a path will trigger a redeploy. - -Auto-reloading can be configured in the `dev.autoReload` section of `devspace.yaml`. -```yaml {19-26} -images: - backend: - image: john/devbackend - database: - image: john/database -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -- name: custom-manifests - kubectl: - manifests: - - manifests/ - - more/manifests/ -dev: - autoReload: - paths: - - ./package.json - - ./important-config-files/* - images: - - database - deployments: - - custom-manifests -``` - -Take a look at the [redeploy-instead-of-hot-reload exmaple](https://github.com/loft-sh/devspace/tree/master/examples/redeploy-instead-of-hot-reload) to see how to disable hot reloading at all and enable redeployment on every file change instead. - - -## Configuration - -### `paths` -The `paths` option expects an array of strings with paths that should be watched for changes. If a change occurs in any of the specified paths, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `images` -The `images` option expects an array of strings with image names from the `images` section of the `devspace.yaml`. If a change occurs to the `dockerfile` or to one of the files within the `context` of this image (if its context has changed), DevSpace will stop the development mode, rebuild the images, redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -### `deployments` -The `deployments` option expects an array of strings with names of deployments from the `deployments` section of the `devspace.yaml`. If a change occurs to any of the files that belong to this deployment, DevSpace will stop the development mode, rebuild the images (if the context has changed), redeploy the application and restart the development mode (sync, port-forwarding, log streaming etc.) afterwards. - -:::note Manifest Deployments -For `kubectl` deployments, DevSpace watches for all paths configured under `manifests`. -::: - -:::note Helm Chart Deployments -For `helm` deployments, DevSpace watches for changes in the `valuesFiles` or changes in the chart path of a local chart (configured as `chart.name`). -::: diff --git a/docs/versioned_docs/version-5.17/configuration/development/basics.mdx b/docs/versioned_docs/version-5.17/configuration/development/basics.mdx deleted file mode 100644 index b0116b8e6a..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/basics.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Development Mode -sidebar_label: Basics ---- - -import FragmentWarningMultipleDev from '../../fragments/warning-multiple-dev.mdx'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; -import FragmentNoteGeneralPurposeCommand from '../../fragments/note-general-purpose-command.mdx'; -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -## Why? -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. - -Kubernetes-based development can be useful in the following cases: -- Your applications needs to access cluster-internal services (e.g. Cluster DNS) -- You want to test your application in a production-like environment -- You want to debug issues that are hard to reproduce on your local machine - -The development experience is very similar to using `docker-compose`, so if you are already familiar on how to develop with `docker-compose`, DevSpace will behave very similar. One of the major benefits of DevSpace versus docker-compose is that DevSpace allows you to develop in any Kubernetes cluster, either locally using minikube, Docker Kubernetes etc. or in any remote Kubernetes cluster. - - -## Start Development Mode -Start the development mode using this command: -```bash -devspace dev -``` - - - -### Important Flags for `devspace dev` -The following flags are available for all commands that trigger image building: -- `-t / --terminal` starts a terminal to a container -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - - -## Development Process -The development process first runs the [deployment process](../../configuration/deployments/basics.mdx) (1. - 4.) and then continues with starting the development-specific features. - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - - -### 5. Start Port-Forwarding -DevSpace iterates over every item in the `dev.ports` array defined in the `devspace.yaml` and starts port-forwarding for each of the entries and the port mappings they define in the `forward` section. - -:::note -Before starting the actual port-forwarding threads, DevSpace waits until the containers and services are ready. -::: - -:::info -Port-Fowarding allows you to access your containers and Kubernetes services via localhost. -::: - -For detailed logs about the port-forwarding, take a look at `.devspace/logs/portforwarding.log`. - - -### 6. Start File Synchronization -DevSpace iterates over every item in the `dev.sync` array defined in the `devspace.yaml` and starts a bi-directional, real-time code synchronization for each of the entries and the path mappings they define. - -:::note Initial Sync -Right after starting the file synchronization, DevSpace runs the so-called initial sync which quickly computes the differences between your local folders and the remote container filesystems. If DevSpace detects changes, it synchronizes them first to get a clean state before starting the real-time synchronization which is invoked every time a file changes. -::: - -For detailed logs about the file synchronzation, take a look at `.devspace/logs/sync.log` for the current session and `.devspace/logs/sync.log.old` for previous logs. - - -### 7. Stream Logs or Open Terminal -DevSpace provides two options to develop applications in Kubernetes: -- using multi-container log streaming (default) -- using an interactive terminal session (run `devspace dev -i`) - -:::note Multi-Container Log Streaming (default) -The first option starts your application as defined in your Dockerfile or in your Kubernetes pod definition. After the pods are started, DevSpace streams the logs of all containers that are started with an image that was built during the image building process. Each log line is prefixed with the image name or alternatively with the pod name of the container. Before starting the actual log streaming, DevSpace prints the last 50 log lines of each container by default. - -Learn how to [customize which containers should be included in the log stream and how many log lines should be shown in the beginning](../../configuration/development/log-streaming.mdx). -::: - -:::note Terminal Session -To start a terminal mode, run: -```bash -devspace dev -t -``` -Instead of starting the multi-container log streaming, you can also start development mode using a terminal session. - -Terminal is configurable by [using the `dev.terminal` configuration section](../../configuration/development/terminal.mdx). -::: - -### 8. Open Links (optional) -DevSpace iterates over every item in the `dev.open` array defined in the `devspace.yaml` and tries to open the URL you provide for each item using the following method: - - - -Learn more about [configuring auto-opening links](../../configuration/development/open-links.mdx). - - - -## Useful Commands - -### `devspace enter` -The command `devspace dev -t` starts a terminal but it also starts port-forwarding and file synchronization which can only be opened once. However, you often need additional terminal sessions. To open a simple terminal session without starting port-forwarding and file sync, run the following command: -```bash -devspace enter -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace logs [-f]` -If you want to print or stream the logs of a single container, run: -```bash -# Print logs -devspace logs - -# Stream logs -devspace logs -f -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace sync` -If you want to start code synchronization on-demand (and even outside a DevSpace project), you can run commands like the ones shown here: -```bash -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace open` -To view your project in the browser either via port-forwarding or via ingress (domain), run the following command: -```bash -devspace open -``` -When DevSpace asks you how to open your application, you have two options as shown here: -```bash -? How do you want to open your application? - [Use arrows to move, space to select, type to filter] -> via localhost (provides private access only on your computer via port-forwarding) - via domain (makes your application publicly available via ingress) -``` -To use the second option, you need to make sure that the DNS of your domain points to your Kubernetes cluster and that you have an ingress-controller running in your cluster. - -:::info Automatic Error Analytics -If your application does not open as exepected, run [`devspace analyze` and DevSpace will try to identify the issue](#devspace-analyze). -::: - - -### `devspace analyze` -If your application is not starting as expected or there seems to be some kind of networking issue, you can let DevSpace run an automated analysis of your namespace using the following command: -```bash -devspace analyze -``` -After analyzing your namespace, DevSpace compiles a report with potential issues, which is a good starting point for debugging and fixing issues with your deployments. - - -### `devspace list commands` -DevSpace allows you to share commands for common development tasks which can be executed with `devspace run [command-name]`. To get a list of available commands, run: -```bash -devspace list commands -``` -Learn how to [configure shared commands for `devspace run`](../../configuration/commands/basics.mdx). - - -### `devspace list deployments` -To get a list of all deployments as well as their status and other information, run the following command: -```bash -devspace list deployments -``` - - -### `devspace purge` -If you want to delete a deployment from Kubernetes you can run: -```bash -# Removes all deployments remotely -devspace purge -# Removes deployment with given name -devspace purge --deployments=my-deployment-1,my-deployment-2 -``` - -:::warning -Purging a deployment does not remove it from the `deployments` section in the `devspace.yaml`. It just removes the deployment from the Kubernetes cluster. To remove a deployment from `devspace.yaml`, run `devspace remove deployment [NAME]`. -::: - -### `devspace update dependencies` -If you are using dependencies from other git repositories, use the following command to update the cached git repositories of dependencies: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.17/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-5.17/configuration/development/file-synchronization.mdx deleted file mode 100644 index 29183a9a5a..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/file-synchronization.mdx +++ /dev/null @@ -1,750 +0,0 @@ ---- -title: Configure File Synchronization -sidebar_label: sync ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -The code synchronization feature of DevSpace allows you to use hot reloading during development. Especially when using programming languages and frameworks that support hot reloading with tools like nodemon, re-building and re-deploying containers is very annoying and time consuming. Therefore, DevSpace uses a smart syncing mechanism that is able to sync local file changes to remote containers directly without the need of rebuilding or restarting the container. - -When starting the development mode, DevSpace starts the file sync as configured in the `dev.sync` section of the `devspace.yaml`. -```yaml {15-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - sync: - - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -``` - -:::info Start Sync Only -To only start the file sync without the other functions of the development mode, use `devspace sync` or `devspace sync --config=devspace.yaml` (to load the config). -::: - -Every sync configuration consists of two essential parts: -- [Pod/Container Selection](#podcontainer-selection) -- [Sync Path Mapping via `localSubPath` and `containerPath`](#sync-path-mapping) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this sync configuration. This can be used as a: -* Steady identifier when using profile patches -* When targeting this sync configuration with the before or after initial sync hook -* To override the log message prefix for this sync configuration. - -For example: -```yaml {3} -dev: - sync: - - name: devbackend - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -hooks: -- events: ["after:initialSync:devbackend"] - command: |- - /app/rebuild.sh - container: - imageSelector: john/devbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which the file synchronization should be established to: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Auto Reconnect -If the sync is unable to establish a connection to the selected container or loses it after starting the sync, DevSpace will try to restart the sync several times. -::: - -### `imageSelector` - - -#### Example: Select Container by Image -```yaml -vars: - - name: backend-image - value: john/devbackend - - name: backend-debugger-image - value: john/debugger -images: - backend: - image: ${backend-image} - backend-debugger: - image: ${backend-debugger-image} -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: ${backend-image} - - name: container-1 - image: ${backend-debugger-image} -dev: - sync: - - imageSelector: ${backend-image} - excludePaths: - - node_modules/ - - logs/ - - imageSelector: ${backend-debugger-image} - localSubPath: ./debug-logs - containerPath: /logs -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` or `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first sync configuration in the `dev.sync` section references the same image as `images.backend`. That means DevSpace would select the first container for file synchronization, that would match `john/devbackend:tag(backend)`, where `tag(backend)` is the last built tag of `images.backend` -- The first sync configuration does not define `localSubPath`, so it defaults to the project's root directory (location of `devspace.yaml`). -- The first sync configuration does not define `containerPath`, so it defaults to the container's working directory (i.e. `WORKDIR`). -- The `imageSelector` option of the second sync configuration in the `dev.sync` section references the same image as `images.backend-debugger`. That means DevSpace would select the second container for file synchronization, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following sync processes would be started when using the above config example assuming the local project root directoy `/my/project/`: - -1. `localhost:/my/project/` forwards to `container-0:$WORKDIR` **\*** -2. `localhost:/my/project/debug-logs/` forwards to `container-1:/logs` - -**\* Changes on either side (local and container filesystem) that occur within the sub-folders `node_modules/` and `logs/` would be ingored.** - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - sync: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - containerName: container-0 - localSubPath: ./src - containerPath: /app/src -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because the selected pod has two containers, we also need to specify the `containerName` option which defines the container that should be used for the file synchronization. - - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -#### Example -**See "[Example: Select Container by Label](#example-select-container-by-label)"** - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - - -
- -## Sync Path Mapping - -### `localSubPath` -The `localSubPath` option expects a string with a path that is relative to the location of `devspace.yaml`. - -#### Default Value For `localSubPath` -```yaml -localSubPath: ./ # Project root directory (folder containing devspace.yaml) -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -### `containerPath` -The `containerPath` option expects a string with an absolute path on the container filesystem. - -#### Default Value For `containerPath` -```yaml -containerPath: $WORKDIR # working directory, set as WORKDIR in the Dockerfile -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -
- -## Exclude Paths -The config options for excluding paths use the same syntax as `.gitignore`. - -:::note -An exclude path that matches a folder recursively excludes all files and sub-folders within this folder. -::: - -### `excludePaths` -The `excludePaths` option expects an array of strings with paths that should not be synchronized between the local filesystem and the remote container filesystem. - -#### Default Value For `excludePaths` -```yaml -excludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example: Exclude Paths from Synchronization -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ - downloadExcludePaths: - - tmp/ -``` -**Explanation:** -- Files in `logs/` and in `more/logs/` would not be synchronized at all. -- Files in `node_modules/` would only be synchronized from the container to the local filesystem but not the other way around. -- Files in `tmp/` would only be synchroniyed from the local to the container filesystem but not the other way around. - -#### Example: Only Sync Specific Folders -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - '**' - - '!/my-folder-1/' - - '!/my-folder-2/' -``` -**Explanation:** -- All files will be excluded except those in folders `./my-folder-1/` and `./my-folder-2/` - -### `excludeFile` -The `excludeFile` option expects a path to a file from which the exclude paths can be loaded. Once loaded, the behavior is identical to the `excludePaths` option. This is useful for sharing a common list of exclude paths between many components. The earlier example, [Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization), can be converted to files as follows: - -#### Example: Exclude Paths from Synchronization using files -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludeFile: .gitignore - uploadExcludeFile: upload.gitignore - downloadExcludeFile: download.gitignore -``` - -#### Example: `.gitignore` -``` -log/ -more/logs/ -``` - -#### Example: `upload.gitignore` -``` -node_modules/ -``` - -#### Example: `download.gitignore` -``` -tmp/ -``` - -### `downloadExcludePaths` -The `downloadExcludePaths` option expects an array of strings with paths that should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludePaths` -```yaml -downloadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `downloadExcludeFile` -The `downloadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludeFile` -```yaml -downloadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -### `uploadExcludePaths` -The `uploadExcludePaths` option expects an array of strings with paths that should not be synchronized from the local filesystem to the remote container filesystem. - -:::info -This option is often useful if you want to download a dependency folder (e.g. `node_modules/`) for code completion but you never want to upload anything from there because of compiled binaries that are not portable between local filesystem and container filesystem (e.g. when your local system is Windows but your containers run Linux). -::: - -#### Default Value For `uploadExcludePaths` -```yaml -uploadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `uploadExcludeFile` -The `uploadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the local filesystem to the remote container filesystem. - -#### Default Value For `uploadExcludeFile` -```yaml -uploadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -
- -## Post-Sync Commands -Sometimes it is useful to execute commands after the sync uploads files/directories between the local filesystem and the container. - -:::warning -Make sure that post-sync commands will **not** trigger a new sync process which could lead to an **endless loop**. -::: - -### `onUpload.restartContainer` -The `restartContainer` option expects a boolean which defines if DevSpace should restart the container every time either a single file or even a batch of files have been uploaded to the container using file sync. - -:::caution Restart Helper Required -Setting `restartContainer: true` requires to set `injectRestartHelper: true` for the image that is used to run the affected container. Otherwise, this option does not have any effect. -::: - -:::note When not to use this option -Using `restartContainer: true` is most useful if your application runs based on a compiled language and you are **not** using a framework or language specific tool which provides hot reloading capabilities. If you are using tools like nodemon or frameworks like React, Rails or Flask, they allow you to enable hot reloading which may be much faster than restarting the entire container. In this case you should disable `restartContainer`. -::: - -#### Example: Enable Container Restart -```yaml {4,16} -images: - backend: - image: john/devbackend - injectRestartHelper: true -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - restartContainer: true -``` - - -### `onUpload.exec` -The `onUpload.exec` option defines command(s) that should be executed after DevSpace uploaded files and folder to the container. DevSpace will make sure that those commands are not executed while initially syncing the state and command execution will also halt any syncing activities. - -If this is defined together with `onUpload.restartContainer`, DevSpace will make sure that the commands are always executed **before** the container is restarted. - -#### Example: Post-Upload Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - # These post-sync commands will be executed after DevSpace synced changes to the container in the given order - exec: - - name: npm-install - command: |- - npm install - onChange: ["./package.json"] - - command: |- - echo 123 > local.txt - local: true # Execute this command locally instead of in the container - - command: "touch abc.txt" # string | Command that should be executed after DevSpace made changes - args: [] # string[] | Optional args that will force DevSpace to not execute the command in a shell - failOnError: false # bool | If true, DevSpace will restart the sync if the command fails (default: false) - local: false # bool | If true, DevSpace will run the command locally instead of in the container (default: false) - onChange: ["package.json"] # string[] | Optional array of file patterns that will trigger this command -``` - -## One-Directional Sync -These flags allow for local or remote container file systems to be ignored during synchronization. - -### `disableDownload` -The `disableDownload` option expects a boolean which enables/disables all synchronization from the remote container filesystem to the local filesystem. - -#### Default Value For `disableDownload` -```yaml -disableDownload: false # Do not ignore remote container files during synchronization -``` - -#### Example: Synchronize Local Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableDownload: true - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ -``` - -### `disableUpload` -The `disableUpload` option expects a boolean which enables/disables all synchronization from the local filesystem to the remote container filesystem. - -#### Default Value For `disableUpload` -```yaml -disableUpload: false # Do not ignore local files during synchronization -``` - -#### Example: Synchronize Remote Container Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableUpload: true - excludePaths: - - logs/ - - more/logs/ - downloadExcludePaths: - - tmp/ -``` - - -
- -## Initial Sync - -### `initialSync` -The `initialSync` option expects a string with an initial sync strategy. The following strategies are available: - -#### • `mirrorLocal` mirrors the local filesystem inside the container (default) - -1. deletes all files inside the conainer that are not existing on the local filesystem -2. uploads all files which are existing on the local filesystem but are missing within the container -3. resolves all file conflicts (different content on local filesystem than in inside the container) by preferring the file on the local filesystem (i.e. all files in the container will be replaced if they are different than on the local filesystem) - -#### • `preferLocal` is like `mirrorLocal` but skips step 1. - -#### • `mirrorRemote` mirrors the container files to the local filesystem: - -1. deletes all files on the local filesystem that are not existing inside the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the file within the container (i.e. all files on the local filesystem will be replaced if they are different than inside the container) - -#### • `preferRemote` is like `mirrorRemote` but skips step 1. - -#### • `preferNewest` merges local and remote filesystem while resolving all conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the newest file (i.e. compares last modified timestamps and replaces all outdated files) - -#### • `keepAll` merges local and remote filesystem without resolving any conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem - -#### Default Value For `initialSync` -```yaml -initialSync: mirrorLocal -``` - -#### Example: Configuring Initial Sync -```yaml {19} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - node_modules/* - - imageSelector: john/devbackend - localSubPath: ./node_modules/ - containerPath: /app/node_modules/ - initialSync: preferRemote -``` -**Explanation:** -With this configuration, `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- The first sync config section would synchronize all files except files within `node_modules/`. This means that during initial sync, all remote files that are not existing locally would be deleted and other files would be updated to the most recent version. -- The second sync config section would only synchronize files within `node_modules/` and because of `initialSync: preferRemote`, DevSpace would download all remote files which are not present on the local filesystem and override all local files which are different than the files within the container. - - -### `waitInitialSync` -The `waitInitialSync` option expects a boolean which defines if DevSpace should wait until the initial sync process has terminated before opening the container terminal or the multi-container log streaming. - -#### Default Value For `waitInitialSync` -```yaml -waitInitialSync: false # Start container terminal or log streaming before initial sync is completed -``` - -#### Example: Wait For Initial Sync To Complete -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - waitInitialSync: true -``` -**Explanation:** -With the configuration `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- After the initial sync process is finished, DevSpace starts the multi-container log streaming. - - -
- -## Network Bandwidth Limits -Sometimes it is useful to throttle the file synchronization, especially when large files or a large number of files are expected to change during development. The following config options provide these capabilities: - -### `bandwidthLimits.download` -The `bandwidthLimits.download` option expects an integer representing the max file download speed in KB/s, e.g. `download: 100` would limit the file sync to a download speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example: Limiting Network Bandwidth -```yaml {14-16} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - bandwidthLimits: - download: 200 - upload: 100 -``` -**Explanation:** -- Downloading files from the container to the local filesystem would be limited to a transfer speed of `200 KB/s`. -- Upload files from the local filesystem to the container would be limited to a transfer speed of `100 KB/s`. - -### `bandwidthLimits.upload` -The `bandwidthLimits.upload` option expects an integer representing the max file upload speed in KB/s, e.g. `upload: 100` would limit the file sync to a upload speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example -**See "[Example: Limiting Network Bandwidth](#example-limiting-network-bandwidth)"** - -## Advanced Options - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. - -### `polling` - -Polling specifies if the DevSpace helper should traverse over all watched files and folders periodically in the container to identify file changes. By default, DevSpace will use [inotify](https://man7.org/linux/man-pages/man7/inotify.7.html) to detect changes which is more efficient, however sometimes it might be unsupported or not feasible in certain situations, in which polling might be preferred. - -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - polling: true -``` - -:::info -Polling might increase CPU consumption of the container drastically, depending on the amount of files and folders watched -::: - -:::info -If you are using a DevSpace config version below `v1beta10`, polling will be enabled by default, as it was the default syncing method in older DevSpace versions -::: - -## Useful Commands - -### `devspace sync` -If you want to start file synchronzation on-demand without having to configure it in `devspace.yaml` and without starting port-forwarding or log streaming etc, you can use the `devspace sync` command as shown in the examples below: -```bash -# Select pod with a picker -devspace sync --local-path=subfolder --container-path=/app - -# Select pod and container by name and use current working directory as local-path -devspace sync --pod=my-pod --container=my-container --container-path=/app -``` - - - -## FAQ - -
-How does the sync work? - -
- -DevSpace establishes a bi-directional code synchronization between the specified local folders and the remote container folders. It automatically recognizes any changes within the specified folders during the session and will update the corresponding files locally and remotely in the background. It uses a small helper binary that is injected into the target container to accomplish this. - -The algorithm roughly works like this: - -1. Inject a small helper binary via `kubectl cp` into the target container -2. Run initial sync accoring to the [`initialSync` config option](#initial-sync) -3. Watch for file changes on both sides (local and remote) and sync them according to the [sync path mappings](#sync-path-mapping) -4. After every sync process, [restart the container](#onuploadrestartcontainer) or run other custom [post-sync commands](#post-sync-commands) (optional) - -
- -
- -
-Are there any requirements for the sync to work? - -
- -The `tar` command has to be present in the container otherwise `kubectl cp` does not work and the helper binary cannot be injected into the container. - -Other than that, no server-side component or special container privileges for code synchronization are required, as the sync algorithm runs completely client-only within DevSpace. The synchronization mechanism works with any container filesystem and no special binaries have to be installed into the containers. File watchers running within the containers like nodemon will also recognize changes made by the synchronization mechanism. - -
- -
- -
-What is the performance impact on using the file sync? - -
- -The sync mechanism is normally very reliable and fast. Syncing several thousand files is usually not a problem. Changes are packed together and compressed during synchronization, which improves performance especially for transferring text files. Transferring large compressed binary files is possible, but can affect performance negatively. Remote changes can sometimes have a delay of 1-2 seconds till they are downloaded, depending on how big the synchronized folder is. It should be generally avoided to sync the complete container filesystem. - -
- -
diff --git a/docs/versioned_docs/version-5.17/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-5.17/configuration/development/log-streaming.mdx deleted file mode 100644 index a8725c3b02..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/log-streaming.mdx +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Configure Log Streaming -sidebar_label: logs ---- - -By default, DevSpace streams the logs of all containers that use one of the images defined in the `images` section of the `devspace.yaml`. - -To control which container logs should be streamed, you can configure the `dev.logs` section in the `devspace.yaml`. -```yaml {9-17} -images: - frontend: - image: gcr.io/my-org/appfrontend - backend: - image: john/appbackend - database: - image: john/database -dev: - logs: - showLast: 200 - # To display the sync log as well - sync: true - selectors: - - imageSelector: john/appbackend - - imageSelector: john/database -``` - -DevSpace will continously check what pods match the given selectors and start or end log streaming accordingly. - -## Configuration - -### `selectors` - -DevSpaces allows log streaming from pods and containers based on label or image selectors. You can configure them under the option `selectors`. - -```yaml -dev: - logs: - selectors: - # Selects all pods with the given label selectors and streams the logs to the console - - labelSelector: - abc: def - containerName: optional - namespace: optional - - labelSelector: - other: selector - - imageSelector: nginx - namespace: optional -``` - -### `sync` -The `sync` option expects an boolean which defines if the sync log should be merged with the pod and container logs. By default this option is true. - -### `showLast` -The `showLast` option expects an integer which defines how many log lines DevSpace will print for each container before starting to stream the container's logs in real-time. - -#### Default Value For `showLast` -```yaml -showLast: 50 -``` - -#### Example: Show Last 200 Log Lines -```yaml {22} -images: - frontend: - image: john/appfrontend - backend: - image: john/appbackend -deployments: -- name: app-frontend - helm: - componentChart: true - values: - containers: - - image: john/appfrontend -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - showLast: 200 -``` -**Explanation:** -- The above example defines 2 images and 2 deployments. -- DevSpace would stream the logs of: - - The container of deployment `app-frontend` because the image is `john/appfrontend` = `images.frontend.image` - - Only the first container of deployment `app-backend` because the image is `john/appbackend` = `images.backend.image` -- For each of the two containers, DevSpace would print the last 200 log lines before starting to stream the logs - - -### `disabled` -The `disabled` option expects a boolean which defines if DevSpace should start multi-container log streaming when running `devspace dev` or if DevSpace should just start other services (e.g. port-forwarding and sync) without starting the log stream. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disable Log Streaming -```yaml {14} -images: - backend: - image: john/appbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - disabled: true -``` diff --git a/docs/versioned_docs/version-5.17/configuration/development/open-links.mdx b/docs/versioned_docs/version-5.17/configuration/development/open-links.mdx deleted file mode 100644 index 41c1af1852..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/open-links.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Open Links in Browser -sidebar_label: open ---- - -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -DevSpace allows you to define URLs that should open after deploying an application in development mode, i.e. using `devspace dev`. - -The configuration for automatically opening URLs can be found in the `dev.open` section of `devspace.yaml`. -```yaml -dev: - open: - - url: http://localhost:3000/ - - url: http://localhost:8089/ # DevSpace UI -``` - -:::note -Setting `dev.open` only affects `devspace dev`. To open your application after running `devspace deploy`, run `devspace open`. -::: - - -## Workflow - - - -## Configuration - -### `open` -The `open` option expects an array of auto-open configurations with exactly one of the following properties: -- `url` to open a URL in the default browser - -#### Default Value For `open` -```yaml -open: [] -``` - -#### Example: Open URL when Starting Dev Mode -```yaml -dev: - open: - - url: http://localhost:3000/login -``` -**Explanation:** -Running `devspace dev` using the above configuration would do the following: -- Build images and deploy the application -- Start port-forwarding and code-synchronization -- DevSpace opens the browser with URL `http://localhost:3000/login` diff --git a/docs/versioned_docs/version-5.17/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-5.17/configuration/development/port-forwarding.mdx deleted file mode 100644 index 6bd9eefb45..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/port-forwarding.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Configure Port-Forwarding -sidebar_label: ports[].forward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -Port-forwarding allows you to access your application on `localhost:[PORT]` by forwarding the network traffic from a localhost port to a specified port of a container. - -When starting the development mode, DevSpace starts port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {15-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -``` - -:::warning Unique Local Port -The `port` option must be unique across your entire `ports` section, e.g. you can only use the value `8080` once for the `port` option in your `ports` section. -::: - -Every port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-forward) - -## Configuration - -### `name` -The `name` option is optional and expects a string stating the name of this port-forwarding configuration. This can be used as a steady identifier when using profile patches or to override the log message prefix for this port configuration. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod Selection -The following config options are needed to determine the pod to which the traffic should be forwarded: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a port-forwarding connection to the selected pod or loses it after starting the port-forwarding, DevSpace will try to restart port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - forward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageName` option of the second port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following port-forwarding processes would be started when using the above config example: -- `localhost:8080` forwards to `container-0:80` -- `localhost:3000` forwards to `container-1:3000` - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - forward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `forward` -The `forward` section defines which localhost `port` should be forwarded to the `remotePort` of the selected container. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "localhost" # listen on all network interfaces -``` diff --git a/docs/versioned_docs/version-5.17/configuration/development/replace-pods.mdx b/docs/versioned_docs/version-5.17/configuration/development/replace-pods.mdx deleted file mode 100644 index d891686a06..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/replace-pods.mdx +++ /dev/null @@ -1,306 +0,0 @@ ---- -title: Replacing Pods for Development -sidebar_label: replacePods ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -`replacePods` gives you the option to exchange an already running or just deployed pod with a modified version. This is especially useful if you: - -- Need to configure or disable an option on a pod which is not configurable via your helm chart or manifests -- Do not want to use DevSpace for your pipeline and instead only want to use DevSpace for development -- Want to debug a setup in an already deployed app by exchanging a single pod temporarily with modifications - -For example: -```yaml -vars: -- name: IMAGE - value: idonotexist:neverexisted -deployments: -- name: my-app - helm: - componentChart: true - values: - containers: - - image: ${IMAGE} -dev: - # DevSpace will try to find a pod with the given image selector. If found (even if its currently in a failed state) - # DevSpace will copy the pod, scale down the owning ReplicaSet, Deployment or StatefulSet - # and create the new modified pod in the cluster. - replacePods: - - imageSelector: ${IMAGE} - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - # This will create a terminal to the replaced pod - terminal: - imageSelector: ${IMAGE} - # This will sync to the replaced pod's working directory - sync: - - imageSelector: ${IMAGE} -``` - -## How does it work? - -Each entry that you specify under `dev.replacePods` will tell DevSpace to search for a pod that should be replaced with the given configuration. If DevSpace finds a pod to replace, it does the following things: -- Copy the pod.metadata and pod.spec of the already running pod -- Scale down the owning ReplicaSet, Deployment or StatefulSet replicas to 0 -- Apply the patches to the copied pod -- Create the copied pod through a replica set in the cluster - -Within the `dev` part of DevSpace, replacing pods is the first step that is executed, which means that all other services such as port-forwarding, sync, log streaming or terminal forwarding will wait until DevSpace has either replaced the pods or already found replaced pods. The services will then target the newly created patched pod instead of the old one. - -:::note -DevSpace will automatically recognize changes to the parent Deployment, ReplicaSet or StatefulSet and apply them to the replaced pod automatically in the next run. -::: - -## Configuration - -### `name` -The `name` option is optional and expects a string stating the name of this replace pods configuration. This can be used as a steady identifier when using profile patches or to override the log messages for this replace pods configuration. - -For example: -```yaml {3} -dev: - replacePods: - - name: devbackend - imageSelector: john/devbackend - replaceImage: ubuntu:latest -profiles: -- name: production - patches: - - op: replace - path: dev.replacePods.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which should be replaced: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -### `imageSelector` - - -#### Example: Select Container by Image Selector -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend -dev: - replacePods: - - imageSelector: john/devbackend - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - terminal: - imageSelector: john/devbackend -``` - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: idontexist -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - sync: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Pod Modifications - -### `replaceImage` - -`replaceImage` expects a string with the new image name (inclusive tag) that should be used for the selected pod. For example: `replaceImage: my-repo/my-debug-image:1.0`. In addition, DevSpace will also replace the following things: - -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `xApsTn` - -### `patches` - -`patches` define more generic patches that should be applied to the pod. You can basically modify anything in the pod here. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as implemented by the [yaml-patch](https://github.com/krishicks/yaml-patch) library. - -The `patches` option expects a patch object which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the pod (e.g. `metadata.annotations`, `spec.containers.name=backend.env`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `metadata.annotations`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `spec.containers`), you have two options: - -1. Use the index of the array item you want to patch, e.g. `spec.containers[0]` -2. Use a property selector matching the array item(s) you want to patch, e.g. `spec.containers.name=backend` - -Using a property selector is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A property selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -#### Example: Overwrite command and args of a pod -```yaml -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] -``` - -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -## Persistence - -Replace pods offer you the ability to easily persist certain folders in the exchanged pod through a [persistent volume claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). This might be useful if you have to sync large amounts of files that are needed in multiple containers or the replaced pod might get rescheduled or killed often. - -:::info Cleanup of Persistent Volume Claims -If DevSpace creates the persistent volume claim, it will also get cleaned up on a `devspace reset pods` or if config changes in the `replacePods` section are detected. -::: - -### `persistPaths` - -The `persistPaths` option expects an array of paths that should get persisted on the replaced pod. - -#### Example: Persist the folders -```yaml -dev: - replacePods: - - imageSelector: my-app/dev - persistPaths: - - path: /app - # Optional path on the persistent volume to mount - # volumePath: my-volume/app - # Optional name of the container to persist this path - # containerName: my-container -``` - -**Explanation:** -- The `imageSelector` would select the pod with image `my-app/dev`. -- DevSpace would create a new persistent volume claim for the pod if the pod was not yet replaced -- DevSpace would replace the pod with a pod which has a volume mount for the path `/app` that references the created persistent volume claim - -### `persistenceOptions` - -`persistenceOptions` is an object that defines additional options for `persistPaths`. You can configure the following options: - -- `size`: the size of the persistent volume to request. (Defaults to `10Gi`) -- `storageClassName`: the storage class name to use for the persistent volume claim. (Defaults to empty) -- `accessModes`: the access modes to use for the persistent volume claim. (Defaults to `ReadWriteOnce`) -- `readOnly`: if the persistent volume claim should get mounted in read only mode. (Defaults to `false`) -- `name`: the name of the persistent volume claim to use or create. (Defaults to name of the replaced pod) - -#### Example: Share a single persistent volume across two pods -```yaml -dev: - sync: - - imageSelector: my-image/frontend - containerPath: /app - replacePods: - - imageSelector: my-image/frontend - persistPaths: - - path: /app - volumePath: app - persistenceOptions: - name: my-pvc - - imageSelector: my-image/backend - persistPaths: - - path: /backend - volumePath: app - persistenceOptions: - name: my-pvc - readOnly: true -``` - -**Explanation:** -- DevSpace will create a persistent volume claim `my-pvc` if it does not exist -- DevSpace will replace the pods with image `my-image/frontend` and `my-image/backend` with pods that mount the persistent volume claim called `my-pvc` -- DevSpace will sync the local files into the persisted folder `/app` of the replaced pod with image `my-image/frontend`. Since the replaced pods share a common persistent volume claim, also the backend container will get the updated files. - -## Reset replaced pods - -If you want to reset replaced pods and revert the cluster state to before, you can run -``` -devspace reset pods -``` diff --git a/docs/versioned_docs/version-5.17/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-5.17/configuration/development/reverse-port-forwarding.mdx deleted file mode 100644 index 79cc8c7138..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/reverse-port-forwarding.mdx +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Configure Reverse Port-Forwarding -sidebar_label: ports[].reverseForward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -Reverse port-forwarding allows you to forward traffic from within your containers to your local machine. This can be useful when: -- using certain remote debuggers that connect to your IDE instead of the other way around -- developing a service on localhost which should be accessed from other services that run within the cluster, i.e. using the [Telepresence development model](https://www.telepresence.io/discussion/why-telepresence) but with DevSpace to get better performance and cross-platform support - -With reverse port-forwarding, you can access `localhost:[PORT]` inside the container and it will redirect to a program that runs on your local dev machine. - -When starting the development mode, DevSpace starts reverse port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {20-23} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - reverseForward: - - port: 5678 - remotePort: 5678 - - port: 3303 -``` - -:::warning Unique Remote Port -The `remotePort` option must be unique across your entire `ports` section for all selectors that match the same pods, e.g. you can only use the value `8080` once for the `remotePort` option in your `ports` section unless multiple port mappings target different pods. -::: - -Every reverse port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-reverseforward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this reverse port-forwarding configuration. This can be used as a steady identifier when using profile patches or to override the log message prefix for this port configuration. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - - -## Pod Selection -The following config options are needed to determine the pod from which the traffic should be forwarded to localhost: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a reverse port-forwarding connection to the selected pod or loses it after starting the reverse port-forwarding, DevSpace will try to restart reverse port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - reverseForward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first reverse port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for reverse port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageSelector` option of the second reverse port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for reverse port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following reverse port-forwarding processes would be started when using the above config example: -- `localhost:80` inside the container will forward to `localhost:8080` on your local machine -- `localhost:3000` inside the container will forward to `localhost:3000` on your local machine - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - reverseForward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `containerName` -The `containerName` option expects a string with the name of the container to use within the pod selected by `labelSelector`. This option is not required if `imageName` is used or there is only one container inside the selected pod. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `reverseForward` -The `reverseForward` section defines which `remotePort` inside the selected container should be forwarded to the `port` on your local machine. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` - -## Container Architecture - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. diff --git a/docs/versioned_docs/version-5.17/configuration/development/terminal.mdx b/docs/versioned_docs/version-5.17/configuration/development/terminal.mdx deleted file mode 100644 index 8a5661d640..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/development/terminal.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Configure Terminal -sidebar_label: terminal ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -There are two main modes how to develop with DevSpace, by streaming the log output of pods in DevSpace or by opening a terminal to the pod you would like to develop with. If you prefer the latter, you can configure the `dev.terminal` option to tell DevSpace to open a terminal to a target container. - -In the `dev.terminal` section in the `devspace.yaml` you can configure the terminal: -```yaml {18-23} -images: - frontend: - image: myregistry/appfrontend -dependencies: -- name: backend - source: - path: backend -deployments: -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appfrontend - workDir: '/path/to/my/workdir' - # If you would like to open a different shell or start - # it with a different command you can also use - command: ["bash"] -``` - -:::warning Sleeping Container -You will need to make sure that the container has a terminal equipped and is sleeping so that you can start your application. -::: - -## Configuration - -### `imageSelector` - - -#### Example: Setting imageName -```yaml {25-34} -images: - frontend: - image: myregistry/appfrontend - backend: - image: myregistry/appbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: myregistry/appbackend -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appbackend -``` - -### `labelSelector` - - -#### Example: Setting labelSelector -```yaml {25-34} -dev: - terminal: - labelSelector: - app: my-app - # If the pod has multiple containers make sure to set this - containerName: container1 -``` - -### `containerName` -If you select a pod via `labelSelector` and the pod has multiple containers, you'll need to specify a container name with this option. - -### `namespace` -If this option is specified DevSpace will search the pod in this namespace. - -### `workDir` -If this option is specified DevSpace will open the shell in the specified working directory. - -### `command` -The `command` option expects a string array as optional configuration for how to open the shell for terminal forwarding. If this option is specified, `workDir` will not work anymore. - -:::note Command Termination -If `command` is a non-interactive command that terminates, DevSpace will run the command and exits after the command has terminated. -::: diff --git a/docs/versioned_docs/version-5.17/configuration/env-file.mdx b/docs/versioned_docs/version-5.17/configuration/env-file.mdx deleted file mode 100644 index d196a4fc62..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/env-file.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Environment Variable File -sidebar_label: .env ---- - -Besides reading environment variables available in your terminal session, DevSpace also reads environment variables from the `.env` file inside your project. The syntax of the `.env` file is the [same as for docker-compose](https://docs.docker.com/compose/env-file/): - -- Each line should have the format `VAR_NAME=VAR_VALUE`. -- **There is *no* special handling of quotation marks. This means that they are part of the `VAR_VALUE`.** -- Lines beginning with # are processed as comments and ignored. - -## Precedence -- Environment variables defined in your terminal session (including system variables) always take precendence over the variables in your `.env` file. -- Variables defined in your `.env` file take precende over the default values defined for config variables (configured in the `vars` section of `devspace.yaml`). - -## Define Default Flags -A common use case for the `.env` file is to set default flags for the `devspace` commands such as `devspace dev` or `devspace deploy`. You can define the following environment variables to set default flags: -- `DEVSPACE_FLAGS` for global flags that should be added to each commands (e.g. `DEVSPACE_FLAGS=-s -p dev`) -- `DEVSPACE_[COMMAND]_FLAGS` to add default flags for single commands (e.g. `DEVSPACE_DEV_FLAGS=-s --verbose-dependencies`) - -:::note Overriding Default Flags -Specifying flags for a command will override the default flags, e.g. if `DEVSPACE_FLAGS=-s -p dev` is configured and you run `devspace dev -p production`, the following command would be executed: `devspace dev -s -p production` -::: - -#### Example: Setting Default Flags for DevSpace -```bash -# File: .env -DEVSPACE_FLAGS=-s -p dev -DEVSPACE_DEV_FLAGS=-s --verbose-dependencies -``` diff --git a/docs/versioned_docs/version-5.17/configuration/expressions.mdx b/docs/versioned_docs/version-5.17/configuration/expressions.mdx deleted file mode 100644 index 85f5f7e61f..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/expressions.mdx +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Config Expressions -sidebar_label: $(expression) ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Config expressions are a powerful feature to load the `devspace.yaml` in a more dynamic way. A config expression works by specifying `$( my bash expression )` instead of a field and the stdout of the bash expression is taken as value for the option or complete section. Config expressions are evaluated after variables and profiles are applied to the config and can change parts of the config. - - - - -Load a deployment specification from file: -```yaml -deployments: - - $(cat deployment.yaml) -``` - - - - -You can use either inline or multi-line if else: -```yaml -deployments: - -# Inline If-Else -- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" ) - -# Multi-Line If-Else -- |- - $( - if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then - cat minikube.yaml - else - echo "" - fi - ) -``` - - - - -Disable image building during `devspace dev`: -```yaml -images: - deploy: - build: - disabled: $( [ $1 == "dev" ] && echo "true" || echo "false" ) -``` - - - - -Add sync path if profile is "debug" - -```yaml -dev: - sync: - - |- - $( - if [ "${DEVSPACE_PROFILE}" == "debug" ]; then - syncConfig=" - imageSelector: test - excludePaths: - - test - - test2 - " - - echo "$syncConfig" - else - echo "" - fi - ) -``` - - - - -Generate a whole section through a script: -```yaml -dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE}) -``` - - - - -Since json is a subset of yaml, you can also return regular json in a expression: -```yaml -images: - test: - image: my-image/image - build: '$( echo {"disabled": true} )' -``` - - - - -By default, DevSpace will try to convert the stdout to a number, bool or yaml value, however you can also force the return value to be a string by using `$!()`: -```yaml -deployments: - - name: quickstart - helm: - componentChart: true - values: - labels: - test: '$!(echo true)' -``` - - - - -:::info -Expressions are run in a golang shell that is syntax compatible to a regular POSIX shell and works on all operating systems. Check the [github repository](https://github.com/mvdan/sh/blob/master/interp/builtin.go#L23) for a complete list of available commands -::: - -:::info -Variables are resolved before and after applying expressions, which means that you can load a section from file within an expression that contains a variable which will still be resolved afterwards. -::: - -### Testing Config Expressions - -The command `devspace print` can be used to test your config expressions and shows the config after all profiles, variables and expressions were applied. diff --git a/docs/versioned_docs/version-5.17/configuration/hooks/basics.mdx b/docs/versioned_docs/version-5.17/configuration/hooks/basics.mdx deleted file mode 100644 index fba12b2a59..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/hooks/basics.mdx +++ /dev/null @@ -1,278 +0,0 @@ ---- -title: Hooks -sidebar_label: hooks ---- - -DevSpace allows you to define certain actions that should be executed during the pipeline. This makes it possible to customize the deployment and development process with DevSpace. The following actions can be executed with hooks: -- Execute a command on the local machine (in a golang shell or directly on the system) -- Execute a command in a container -- Upload a file or folder into a container -- Download a file or folder from a container -- Wait for a container to start or terminate -- Print the logs of container - -Hooks can be defined in the `hooks` section of `devspace.yaml`: -```yaml -hooks: -# Execute the hook in a golang shell (cross operating system compatible) -- name: "pre-image-build-hook" - command: "echo before image building" - events: ["before:build"] -# Execute the hook in a golang shell (cross operating system compatible) -- name: "post-image-build-hook" - command: | - echo Built Image image(image-1):tag(image-1) - events: ["after:build:image-1"] -# Execute the hook directly on the system (echo binary must exist) -- command: "echo" - args: ["before image building"] - events: ["before:build:image-1", "before:build:image-2"] -# Execute the hook only on windows -- command: "echo before each image" - os: windows - events: ["before:build:*"] -``` - -This tells DevSpace to execute the command `echo before image building` before any image will be built. - -## Lifecycle Events - -You are able to define hooks for the following lifecycle events: -- `before:deploy`, `after:deploy`, `before:deploy:[name]`, `after:deploy:[name]`, `error:deploy:[name]`, `skip:deploy:[name]`: executed while DevSpace deploys `deployments`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:render`, `after:render`, `before:render:[name]`, `after:render:[name]`, `error:render:[name]`: executed while DevSpace renders `deployments` during `devspace render`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:purge`, `after:purge`, `before:purge:[name]`, `after:purge:[name]`, `error:purge:[name]`: executed while DevSpace purges `deployments` during `devspace purge`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:build`, `after:build`, `before:build:[name]`, `after:build:[name]`, `error:build:[name]`, `skip:build:[name]`: executed while DevSpace builds `images`. `[name]` can be replaced with the config name of an image or `*` to match all. -- `start:sync:[name]`, `stop:sync:[name]`, `error:sync:[name]`, `restart:sync:[name]`, `before:initialSync:[name]`, `after:initialSync:[name]`, `error:initialSync:[name]`: executed while DevSpace syncs files with `dev.sync`. `[name]` can be replaced with the config name of a sync configuration or `*` to match all. -- `start:portForwarding:[name]`, `restart:portForwarding:[name]`, `error:portForwarding:[name]`, `stop:portForwarding:[name]`: executed while DevSpace port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `start:reversePortForwarding:[name]`, `restart:reversePortForwarding:[name]`, `error:reversePortForwarding:[name]`, `stop:reversePortForwarding:[name]`: executed while DevSpace reverse port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` -- `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:error`, `devCommand:interrupt`, `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`: executed at certain lifecycle events during the `devspace dev` command -- `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed -- `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed -- `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed - -:::info Errors in Hooks -If any hook returns a non zero exit code, DevSpace will abort and print an error message. -::: - -For `error:` events the actual error will be passed to the hook via the environment variable `DEVSPACE_HOOK_ERROR`. For example: -```yaml -# This will print the error to the console that has occured during a deployment -hooks: -- events: ["error:deploy:*"] - command: "echo The following error has occurred during deploying $DEVSPACE_HOOK_DEPLOY_NAME: $DEVSPACE_HOOK_ERROR" - os: darwin,windows - name: "error-hook" -``` - -## Execute hooks in a container - -DevSpace allows you to execute commands directly in a container instead of the local system. You can specify this in the `container` section of the hook: - -```yaml -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - events: ["after:deploy:my-deployment"] -... -``` - -By default, DevSpace will wait for all pods / containers that were selected with the given selector to come up. As soon as all targets are running, DevSpace will execute the hook and wait for it to finish. You can define if DevSpace should wait and how long it should wait with `wait` and `timeout`: - -```yaml -... -hooks: -- command: "echo" - args: ["Hello from within the container!"] - container: - imageSelector: image(app):tag(app) - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - wait: true # This is the default - timeout: 300 # Timeout in seconds - events: ["after:deploy:my-deployment"] -... -``` - -## Upload or Download files from a container - -Hooks can be used to upload or download files from a container. In the background, DevSpace will basically do a `kubectl cp` to the specified container. Example: -```yaml -hooks: -# Upload the complete local bin folder to the container path ./bin -- upload: - localPath: bin - containerPath: bin - container: - imageSelector: image(test):tag(test) - events: ["after:deploy:my-deployment"] - name: "upload-hook" -# Download a single file from the container to the local path -- download: - localPath: build/artifact.jar - containerPath: /abs/path/build/artifact-test.jar - container: - imageSelector: image(java):tag(java) - events: ["after:deploy:my-deployment-2"] - name: "download-hook" -``` - -## Wait for a pod to be running - -This hook action can be useful if you want to ensure a certain pod is running before you continue with the pipeline. An example configuration could look like this: -```yaml -... -deployments: -- name: my-database - helm: - componentChart: true - values: - ... -hooks: -# This hook will ensure that every time the deployment -# my-database is deployed that DevSpace will wait until -# all pods and containers that match the labelSelector -# app.kubernetes.io/component: my-database are running -- wait: - # DevSpace will wait for all containers that match the label selector below to become running. - # If there are init containers, make sure to set terminatedWithCode as well. - running: true - # This can be needed if there are for example init containers - # that terminate instead of become running. - terminatedWithCode: 0 - container: - labelSelector: - app.kubernetes.io/component: my-database - # You could also select just a specific container with - # containerName: database-container - events: ["after:deploy:my-database"] - name: "wait-for-pod-hook" -... -``` - -## Print the logs of a container - -This action can be useful to print logs of jobs or print the logs of init containers that would not be printed otherwise during `devspace dev`. An example configuration could look like this: - -`job.yaml`: -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: my-pod - labels: - app.kubernetes.io/component: my-job -spec: - restartPolicy: Never - containers: - - command: ["sh"] - args: ["-c", "echo 'Job Start' && sleep 5 && echo 'Doing Things...' && sleep 5 && echo 'Job End'"] - image: alpine - name: job -``` - -`devspace.yaml`: -```yaml -version: ... -deployments: -- name: my-job - kubectl: - manifests: - - job.yaml -hooks: -# This hook will wait until the selected container is either running or already -# terminated and then print the logs of it until it terminates. -- logs: {} - container: - labelSelector: - app.kubernetes.io/component: my-job - events: ["after:deploy:my-job"] - name: "print-logs-hook" -``` - -## Execute hooks in the background - -By default, DevSpace will wait for a hook to finish and then move on with the pipeline. However, in some cases it might be desired that a hook is executed in the background to speed up a process. You can specify a background hook with the `background` option: - -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - events: ["after:deploy"] - name: "background-hook" -... -``` - -If you do not want to stream the output of the hook to the console, you can also mark the hook as silent, which will prevent any hook output: -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - silent: true - events: ["after:deploy"] - name: "silent-background-hook" -... -``` - -## Execute hooks only on certain operating systems - -Hooks can be executed only on certain operating systems: - -```yaml {3,6} -hooks: -- command: echo before image building on windows - os: windows - events: ["after:build"] - name: windows-hook -- command: echo before image building on mac and linux - os: darwin,linux - events: ["after:build"] - name: darwin-linux-hook -``` - -## Execute hooks once - -Hooks can be executed only once for each targeted container. This means as long as the container where the hook was executed stays running, the hook will not be executed for this container again until it restarts. This can be useful for running one-time development tasks without using init containers. In the following example, the command would only run once for the newest container running with the image `nginx:1.21`. - -```yaml {8} -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx:1.21 - once: true - events: ["after:deploy"] - name: one-time-hook -... -``` - -If you run `devspace dev` or `devspace deploy` now multiple times and the container is not replaced or restarted, the hook is only executed once. - -## Hook Context Information - -DevSpace passes certain environment variables to the hook execution: -- **DEVSPACE_HOOK_KUBE_CONTEXT**: the name of the kube context that was used -- **DEVSPACE_HOOK_KUBE_NAMESPACE**: the name of the kube namespace that was used -- **DEVSPACE_HOOK_OS_ARGS**: json encoded os.Args that were used to call devspace -- **DEVSPACE_HOOK_ERROR**: if an error has occured contains the error string (only for onError hooks) -- **DEVSPACE_HOOK_EVENT**: the event that has triggered the hook - -Depending on the hook there will be other context variables set that are prefixed with `DEVSPACE_HOOK_`. diff --git a/docs/versioned_docs/version-5.17/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-5.17/configuration/images/append-dockerfile-instructions.mdx deleted file mode 100644 index 78fc212199..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/append-dockerfile-instructions.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Append Build Instructions In-Memory -sidebar_label: appendDockerfileInstructions ---- - - -## `appendDockerfileInstructions` -The `appendDockerfileInstructions` expects an array of strings with each string containing a Dockerfile instruction, e.g. `RUN chmod...`, `USER root`. - -This option is very useful to add development-specific instructions (installing dev tooling like debuggers, setting a different runtime user for the container etc.) without the need to change the actual Dockerfile. - -:::info In-Memory -DevSpace adds these instructions dynamically to your Dockerfile when building images. However, this happens in-memory and does **not** change the Dockerfile. -::: - -:::tip Combination with Profiles -It is often useful to create a [profile](../profiles/basics.mdx) `production` with a patch that removes the `appendDockerfileInstructions` entirely. This way, you can also evaluate what you are working on in a more production-like way using a single command: `devspace deploy -p production` -::: diff --git a/docs/versioned_docs/version-5.17/configuration/images/basics.mdx b/docs/versioned_docs/version-5.17/configuration/images/basics.mdx deleted file mode 100644 index 9c2eec5ada..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/basics.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Image Building -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; -import WarningBuildToolPriority from '../../fragments/warning-build-tool-priority.mdx'; - -Images are configured within the `images` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {3} -images: - backend: - image: my-docker-username/appbackend - database: - image: my-docker-company/appbackend -``` - - - - -```yaml {3} -images: - backend: - image: image.company.tld/appbackend - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-9} -images: - backend: - image: image.company.tld/appbackend - tags: - - latest - # This will be replaced during build time with - # something like dev-ads13as1-sA4ve. Each hashtag - # represents a random character. - - dev-${DEVSPACE_GIT_COMMIT}-##### - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -:::info What is BuildKit? -[BuildKit](https://github.com/moby/buildkit) is an open-source concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit that lets you build images inside containers that run on top of Kubernetes or in your local docker daemon. To force image building using BuildKit, set `build.buildKit: {}`. To tell DevSpace to use in cluster building set `build.buildKit.inCluster: {}` as shown above. Learn more about [configuring BuildKit builds](../../configuration/images/buildkit.mdx). -::: - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true -``` - -:::info What is kaniko? -Kaniko is an open-source tool that lets you build images inside containers that run on top of Kubernetes. DevSpace uses kaniko as automatic fallback if Docker is not installed. To force image building using kaniko, set `build.kaniko.cache: true` as shown above. Learn more about [configuring kaniko builds](../../configuration/images/kaniko.mdx). -::: - - - - -```yaml {4-11} -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "arg-value-1" - - "--arg2" - - "arg-value-2" -``` - - - - -```yaml {5} -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` - - - - -:::note Parallel Image Building -To speed up the build process, the images you specify under `images` will all be built in parallel (unless you use the `--build-sequential` flag). -::: - - - - -## Run Image Building -When you run one of the following commands, DevSpace will run the image building process: -- `devspace build` (only image building without deployment) -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger image building: -- `--build-sequential` build images sequentially instead of in parallel (provides more detailed logs for each image) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed since the latest build) - -## Image Building Process -DevSpace loads the `images` configuration from `devspace.yaml` and builds all images in parallel. The multi-threaded, parallel build process of DevSpace speeds up image building drastically, especially when building many images and using remote build methods. - -### 1. Load Dockerfile -DevSpace loads the contents of the Dockerfile specified in `image[*].dockerfile` (defaults to `./Dockerfile`). - -:::info Use Relative Paths -Dockerfile paths used in `dockerfile` should be relative to the `devspace.yaml`. -::: - -### 2. Override Entrypoint (if needed) -DevSpace allows you to apply an in-memory override of a Dockerfile's `ENTRYPOINT` by configuring the `entrypoint` option for the image. Similar to the Dockerfile `ENTRYPOINT`, the `images[*].entrypoint` option should be defined as an array. - -:::note Useful for Profiles -Configuring `ENTRYPOINT` overrides can be particularly useful when defining different [config profiles](../../configuration/profiles/basics.mdx) in your `devspace.yaml`. -::: - -### 3. Load Build Context -DevSpace loads the context to build this image as specified in `context` (defaults to `./`). The context path serves as root directory for Dockerfile statements like `ADD` or `COPY`. - -:::info Use Relative Paths -Context paths used in `context` should be relative to the `devspace.yaml`. -::: - - - -### 4. Skip Build & Push (if possible) -DevSpace tries to speed up image building by skipping images when they have not changed since the last build process. To do this, DevSpace caches the following information after building an image: -- a hash of the `Dockerfile` used to build the image (including ENTRYPOINT override) -- a hash over all files in the `context` used to build this image (excluding files in `.dockerignore`) - -The next time you trigger the image building process, DevSpace will generate these hashes again and compare them to the hashes of the last image building process. If all newly generated hashes are equal to the old ones stored during the last image building process, then nothing has changed and DevSpace will skip this image. - -:::note Force Build -You can use the `-b / --force-build` flag to tell DevSpace to build all images even if nothing has changed. -::: - -### 5. Build Image -DevSpace uses one of the following [build tools](../../configuration/images/basics.mdx) to create an image based on your Dockerfile and the provided context: -- [`docker`](../../configuration/images/docker.mdx) for building images using a Docker daemon (default, prefers Docker daemon of local Kubernetes clusters) -- [`kaniko`](../../configuration/images/kaniko.mdx) for building images directly inside Kubernetes (automatic fallback for `docker`) -- [`custom`](../../configuration/images/custom.mdx) for building images with a custom build command (e.g. for using Google Cloud Build) -- [`disabled`](../../configuration/images/disabled.mdx) if this image should not be built (especially useful for [config `profiles`](../../configuration/profiles/basics.mdx)) - -### 6. Tag Image -DevSpace automatically tags all images after building them using a tagging schema that you can customize using the `tag` option. By default, this option is configured to generate a random string consisting of 5 characters. - -[Learn more about defining a custom tagging schema.](../../configuration/images/image-tagging.mdx#tags-tagging-schema) - -:::info Tag Replacement -Before deploying your application, DevSpace will use the newly generated image tags and replace them in-memory in the values for your [Helm charts](../../configuration/deployments/helm-charts.mdx) and [Kubernetes manifests](../../configuration/deployments/kubernetes-manifests.mdx), so they will be deployed using the newest image tag. -::: - -### 7. Push Image -DevSpace automatically pushes your images to the respective registry that should be specified as part of the `image` option. Just as with regular Docker images, DevSpace uses Docker Hub if no registry hostname is provided within `image`. - - -:::note -You can skip this step when proving the `--skip-push` flag. Beware that deploying your application after using `--skip-push` will only work when your images have already been pushed to the registry or when you are using a local Kubernetes cluster (e.g. minikube). -::: - -### 8. Create Pull Secrets -When deploying your application via DevSpace, Kubernetes needs to be able to pull your images from the registry that is used to store your images when pushing them. For this purpose, Kubernetes relies on so-called image pull secrets. DevSpace can automatically create these secrets for you, if you configure `createPullSecret: true` for the respective image in your `devspace.yaml`. - -:::note -You do **not** need to change anything in your Kubernetes manifests or Helm charts to use the image pull secrets that DevSpace creates because DevSpace [adds these secrets to the default service account in the namespace](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) used to deploy your project. - -After running `devspace build`, `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the following command: -```bash -kubectl get serviceaccount default -o yaml -``` -Take a look at the `imagePullSecrets` section of the output showing the yaml definition of the service account `default`. -::: - -## Advanced Topics - -### Authentication (Registry) -DevSpace uses the same credential store as Docker. So, if you already have Docker installed and you have logged in to a private registry before, DevSpace will be able to push to this registry. So, if you want to push to a registry using DevSpace, simply authenticate using this command: -```bash -docker login # for Docker Hub -docker login [REGISTRY] # for any other registry (e.g. my-registry.tld) -``` - -:::note -If you do **not** have Docker installed, DevSpace initializes a Docker credential store for you and stores your login information just like Docker would do it. -::: - - -### Skip Push (Local Clusters) -If you are using a local Kubernetes cluster, DevSpace will try to build the image using the Docker deamon of this local cluster. If this process is successful, DevSpace will skip the step of pushing the image to a registry as it is not required for deploying your application. diff --git a/docs/versioned_docs/version-5.17/configuration/images/buildkit.mdx b/docs/versioned_docs/version-5.17/configuration/images/buildkit.mdx deleted file mode 100644 index 8f60c99638..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/buildkit.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Build Images with BuildKit -sidebar_label: buildKit ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [BuildKit](https://github.com/moby/buildkit) as build tool allows you to build images either locally or inside your Kubernetes cluster without a Docker daemon. - -:::info -In order to use the build kit you'll either need to have [docker](https://docs.docker.com/get-docker/) installed locally or the [buildx CLI](https://github.com/docker/buildx/releases). **If you only want to use the in cluster build functionality, you won't need a running docker daemon and just need the CLI tools.** -::: - -With `buildKit` enabled, DevSpace will use `docker buildx build` for building. If in cluster building is enabled, DevSpace will deploy a BuildKit deployment into the Kubernetes cluster that will function as target BuildKit daemon for `docker buildx build`. You can also share a single Kubernetes BuildKit daemon across multiple users to share a common build cache. - -To set `buildKit` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -## In Cluster Building - -If the `inCluster` object is set, DevSpace will build the image directly in the Kubernetes cluster instead of using the local docker daemon. DevSpace will start or reuse a BuildKit deployment in the Kubernetes cluster that acts as target BuildKit daemon. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- `buildKit.inCluster` tells DevSpace to build the image inside the target Kubernetes cluster instead of using the local docker daemon. -- By default, DevSpace will create a BuildKit daemon deployment inside the target namespace that will be used for this and all future builds. - -### `inCluster.namespace` - -The option takes a string and defines the namespace where to create the BuildKit deployment in. Defaults to the current DevSpace target namespace. - -:::info -By setting `name` and `namespace` you can share a single BuildKit deployment for multiple users. This will have the advantage that a shared build cache is used. -::: - -### `inCluster.name` - -The option takes a string and defines the name of the BuildKit builder DevSpace will use or create if it does not exist. `name` will also be the name of the BuildKit deployment that is created by DevSpace. By default, DevSpace will create a BuildKit builder in the following form: devspace-NAMESPACE. For more information about what BuildKit builders are check the [docker docs](https://docs.docker.com/engine/reference/commandline/buildx_create/). - -### `inCluster.rootless` - -The option takes a boolean and defines if the BuildKit deployment should deploy a non priviledged pod. By default, the BuildKit deployment will try to create a priviledged pod. - -### `inCluster.image` - -The option takes a string and defines the docker image to use for the BuildKit deployment. - -### `inCluster.nodeSelector` - -The option takes a string in the form of `my-label=value,my-label2=value2` that will be used as node selector for the BuildKit deployment. - -### `inCluster.noCreate` - -The option takes a boolean as value. By default, DevSpace will try to create a new builder if it cannot be found. If this option true, DevSpace will fail if the specified builder cannot be found. - -### `inCluster.noRecreate` - -The option takes a boolean as value. By default, DevSpace will try to recreate the builder if the builder configuration in the devspace.yaml differs from the actual builder configuration. If this is true, DevSpace will not try to do that. - -### `inCluster.noLoad` - -The option takes a boolean as value. If image push is disabled (for example by flag `--skip-push` or via `build.buildKit.skipPush`), DevSpace will load the created image into the local docker daemon. If the option is true, DevSpace will not try to do that. - -### `inCluster.createArgs` - -The option takes a string array as value. These arguments will be appended to the `docker buildx create` command. - -## BuildKit options - -If `buildKit.inCluster` is omitted, DevSpace will build the image with the local docker daemon and not interact with the Kubernetes cluster. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- Internally DevSpace will use `docker buildx build` to build the image. - -### `skipPush` - -The option takes a boolean as value. If this option is enabled, DevSpace will not push the image to the registry. If in cluster build is enabled, DevSpace will try to load the image into the local docker daemon if the image is not pushed. - -:::tip -DevSpace will automatically skip image pushing if it detects a local docker daemon such as docker-desktop or minikube. You can disable this behaviour by setting the flag `--skip-push-local-kube=false` -::: - -### `preferMinikube` - -The option takes a boolean as value. If this option is disabled, DevSpace will not try to use the minikube docker daemon for image building. This option only has an effect, if minikube is installed and the current kube context is `minikube`. - -### `args` - -This option takes a string array as value. The arguments will be appended to the `docker buildx build` call DevSpace will run. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - args: ["--cache-to", "user/app:cache"] -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The args option will append arguments to the `docker buildx build` command which will then look something like this: `docker buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -### `command` - -The option takes a string array as value. By default, DevSpace will use `docker buildx` as base command for interacting with BuildKit, if this option is set, you can tell DevSpace to use a different base command. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - command: ["/path/to/my/buildx"] -``` -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The command option will tell DevSpace to use this command instead of `docker buildx` and the actual build command will look like this: `/path/to/my/buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - - diff --git a/docs/versioned_docs/version-5.17/configuration/images/custom.mdx b/docs/versioned_docs/version-5.17/configuration/images/custom.mdx deleted file mode 100644 index b121ac757b..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/custom.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Custom Build Scripts -sidebar_label: custom ---- - -## `custom` -Using `custom` as build tool allows you to define a custom command for building images. This is particularly useful if you want to use a remote build system such as Google Cloud Build. - -:::warning -Make sure your `custom` build command terminates with exit code 0 when the build process was successful. -::: - -### `command` -The `command` option expects a string with the path to a build script or the name of a binary that should be executed in order to build an image. - -#### Example: Building Images With `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build arg1 --flag flag-value arg2 "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `imageFlag` -The `imageFlag` option expects a string which states the name of the flag that is used to pass the image name (including auto-generated tag) to the custom build script defined in `command`. - -#### Default Value For `imageFlag` -```yaml -imageFlag: "" # Defaults to passing image and tag as an argument instead of using a flag -``` - -#### Example: Defining `imageFlag` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `skipImageArg` -The `skipImageArg` option expects a boolean which specifies if DevSpace should add an argument to the command with the `image:tag`. If enabled DevSpace will omit the image argument completely - -#### Example: Defining `skipImageArg` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - skipImageArg: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2` - -### `imageTagOnly` -The `imageTagOnly` option expects a boolean which specifies if DevSpace should only add the image `tag` instead of `image:tag` as argument. - -#### Example: Defining `imageTagOnly` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - imageTagOnly: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[TAG]"` while `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `args` -The `args` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **before** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Using `args` and `appendArgs` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" - appendArgs: - - "arg3" - - "--flag2" - - "flag-value-2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG] arg3 --flag2 flag-value-2` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `appendArgs` -The `appendArgs` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **after** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `appendArgs` -```yaml -appendArgs: [] -``` - -#### Example -**See "[Example: Using `args` and `appendArgs` For Custom Builds](#example-using-args-and-appendargs-for-custom-builds)"** - -### `commands` -The `commands` option expects an array of commands that should be executed on a specific operating system. This will only exchange the base command, but all other arguments will be appended the same way. - -#### Example: Using `commands` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build-default.sh - commands: - - command: ./build-windows.ps - os: windows - - command: ./build-darwin.sh - os: darwin - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" -``` -**Explanation:** -- **linux**: The image `backend` would be built using the command `./build-default.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **windows**: The image `backend` would be built using the command `./build-windows.ps --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **darwin (macOS)**: The image `backend` would be built using the command `./build-darwin.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` - -### `onChange` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Default Value For `onChange` -```yaml -onChange: [] -``` - -#### Example: OnChange Option For custom Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - onChange: - - some/path/ - - another/path/file.txt -``` -**Explanation:** -The image `backend` would be built using the command `./build --image "[IMAGE]:[TAG]"` and DevSpace would skip the build if none of the files within `some/path/` nor the file `another/path/file.txt` has changed since the last build. diff --git a/docs/versioned_docs/version-5.17/configuration/images/disabled.mdx b/docs/versioned_docs/version-5.17/configuration/images/disabled.mdx deleted file mode 100644 index c5a8e42cd9..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/disabled.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Disable Image Building -sidebar_label: disabled ---- - -## `disabled` -The `disabled` option expects a boolean and allows you to disable image building for an image. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disabling Image Building -```yaml -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` -**Explanation:** -- The first image `frontend` would not be built at all. -- The second image `backend` would be built using [`docker`](../../configuration/images/docker.mdx) because nothing is specified and `docker` is the default build tool for images. diff --git a/docs/versioned_docs/version-5.17/configuration/images/docker.mdx b/docs/versioned_docs/version-5.17/configuration/images/docker.mdx deleted file mode 100644 index c96fd80e88..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/docker.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Build Images with Docker -sidebar_label: docker ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -## `docker` -If nothing is specified, DevSpace always tries to build the image using `docker` as build tool. - - -### `useBuildKit` -The `useBuildKit` option expects a boolean which allows to enable buildkit builds (i.e. `DOCKER_BUILDKIT=1`). - -#### Default Value For `useBuildKit` -```yaml -useBuildKit: false -``` - -#### Example: Docker useBuildKit -```yaml -images: - backend: - image: john/appbackend - build: - docker: - useBuildKit: true -``` - -### `useCli` -If `useCli` is true, devspace will use the local docker installation for building and invoke `docker build`. This option is implicitly true, if `useBuildKit` or `args` is specified. - -### `args` -The `args` option expects an array of strings to be passed as arguments and flags to Docker. - -:::warning -When specifying `args`, DevSpace will invoke your installed Docker CLI via a command-line call instead of using the built-in Docker client. This has the negative effects that: -- The kaniko fallback will not be used anymore. -- You need to make sure that everyone who is using this configuration has the same version (or a compatible one) of Docker installed. -::: - -#### Example: Docker args -```yaml -images: - backend: - image: john/appbackend - build: - docker: - args: - - "--no-cache" - - "--compress" -``` - - -### `disableFallback` -When using `docker` as build tool, DevSpace checks if Docker is installed and running. If Docker is not installed or not running, DevSpace will use kaniko as fallback to build the image unless the option `disableFallback` is set to `false`. - -#### Default Value For `disableFallback` -```yaml -disableFallback: false -``` - -#### Example: Disabling kaniko Fallback -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - build: - docker: - disableFallback: true -``` -**Explanation:** -- The first image `backend` would be built using Docker and if Docker is not available, the image would be built using kaniko as a fallback. -- The second image `frontend` would be built using Docker and if Docker is not available, DevSpace would exit with a fatal error instead of using the kaniko fallback. - - -### `preferMinikube` -DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. - -#### Default Value For `preferMinikube` -```yaml -preferMinikube: true -``` - -#### Example: Building Images in Minikube -```yaml -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -**Explanation:** -- The first image `backend` would be preferably built with Minikube's Docker daemon and the image would **not** be pushed to a registry. -- The second image `frontend` would **not** be built with the Docker daemon of Minikube and it would be pushed to a registry after building and tagging the image using Docker (or kaniko as fallback). - -### `skipPush` -The `skipPush` option expects a boolean value stating if pushing the image to a registry should be skipped during the build process. - -If DevSpace is using a local Kubernetes cluster, pushing images might not be necessary because the image might already be accessible by Kubernetes via a local Docker daemon. In this case, it can make sense to speed up the process by setting `skipPush` to `true`. - -:::info Auto-Enabled for Minikube & Docker Desktop -DevSpace automatically skips image push for kube-contexts with the following names: -- `minikube` -- `docker-desktop` -- `docker-for-desktop` - -This allows to keep `skipPush: false` for these local clusters which helps to keep the configuration reusable and indepent of the kube-context, i.e. it makes it easier to switch between local and remote clusters. -::: - -:::warning Remote Clusters -Setting this option means that the configuration cannot be used to deploy to remote clusters anymore, which makes it harder to switch between clusters and keep the configuration cluster-independent. -::: - -#### Default Value For `skipPush` -```yaml -skipPush: false -``` - -#### Example -```yaml {7} -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - skipPush: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -The above configration would only push the `frontend` image but not the `backend` image. To manually trigger image building and pushing for all images, run: -```bash -devspace build -``` - - - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `target` - - - - -### `network` - - - - -### `buildArgs` - - diff --git a/docs/versioned_docs/version-5.17/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-5.17/configuration/images/dockerfile-context.mdx deleted file mode 100644 index 0b6cc404af..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/dockerfile-context.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Configure Dockerfile & Context -sidebar_label: dockerfile + context ---- - -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; - -## `dockerfile` -The `dockerfile` option expects a string with a path to a `Dockerfile`. -- The path in `dockerfile` should be relative to the `devspace.yaml`. -- When setting the `dockerfile` option, it is often useful to set the [`context` option](#context) as well. -- To share your configuration with team mates, make sure `devspace.yaml` and all `Dockerfiles` used in the `images` section are checked into your code repository. - -#### Default Value For `dockerfile` -```yaml -dockerfile: ./Dockerfile -``` - -#### Example: Different Dockerfile -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - dockerfile: frontend/Dockerfile - context: frontend/ -``` -**Explanation:** -- The first image would be built using the Dockerfile in `./Dockerfile` and the context path `./`. -- The second image would be built using the Dockerfile in `./frontend/Dockerfile` and the context path `./frontend/`. -- Switching the `context` for image `frontend` would assure that a statement like `ADD file.txt` or `COPY file.txt .` in `./frontend/Dockerfile` would use the local file `./frontend/file.txt` instead of `./file.txt`. -- In this example, it would probably be useful to have a `./.dockerignore` file which ignores the `frontend/` folder when building the first image called `backend`. - -:::note -See **[Best Practices for Image Building](../../guides/image-building.mdx)** for details on how to optimize your Dockerfiles and use `.dockerignore` for faster image building. -::: - - - -## `context` -The `context` option expects a string with a path to the folder used as context path when building the image. The context path serves as root directory for Dockerfile statements like ADD or COPY. - - - -#### Default Value For `context` -```yaml -context: ./ -``` - -#### Example -**See "[Example: Different Dockerfiles](#example-different-dockerfile)"** diff --git a/docs/versioned_docs/version-5.17/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-5.17/configuration/images/entrypoint-cmd.mdx deleted file mode 100644 index 5e8b440f1c..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/entrypoint-cmd.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Override ENTRYPOINT and CMD -sidebar_label: entrypoint + cmd ---- - -:::warning -If you are overriding the Dockerfile `ENTRYPOINT` or `CMD`, it only affects the image but **not** the deployment in Kubernetes. If a deployment using this image defines the `command` or `args` options, they will take precedence over the overrides you define for the image. -::: - -### `entrypoint` -The `entrypoint` option expects an array of strings which tells DevSpace to override the `ENTRYPOINT` defined in the `Dockerfile` during the image building process. - -:::note -If you are overriding the `ENTRYPOINT`, it is often useful to also [override the `CMD` statement](#cmd). If you want to define `entrypoint: ...` for an image and you do **not** want the `CMD` statement from the Dockerfile, add `cmd: []` to the image configuration in your `devspace.yaml`. -::: - -#### Default Value For `entrypoint` -```yaml -entrypoint: [] -``` - -#### Example: Override ENTRYPOINT For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - entrypoint: - - npm - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `ENTRYPOINT` (e.g. `[npm, start]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `ENTRYPOINT`, DevSpace would use the `[npm, run, dev]` as value for `ENTRYPOINT` - - -## `cmd` -The `cmd` option expects an array of strings which tells DevSpace to override the `CMD` defined in the `Dockerfile` during the image building process. - -:::note -`CMD` generally defines the arguments for `ENTRYPOINT`. -::: - -#### Default Value For `cmd` -```yaml -cmd: [] -``` - -#### Example: Override CMD For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - cmd: - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `CMD` (e.g. `[start]`) for `ENTRYPOINT` (e.g. `[npm]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `CMD`, DevSpace would use the `[run, dev]` as value for `CMD` diff --git a/docs/versioned_docs/version-5.17/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-5.17/configuration/images/image-tagging.mdx deleted file mode 100644 index c99d3fc36e..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/image-tagging.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Image Name & Tagging Schema -sidebar_label: image + tags ---- - -The `images` section in `devspace.yaml` is a map with keys representing the name of the image and values representing the image definition including `tag`, `dockerfile` etc. -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - dev-${USER}-### # Each # will be replaced with a random character -``` - -## `image` *Image Repository* -The `image` option expects a string containing the image repository including registry and image name. - -- Make sure you [authenticate with the image registry](../../configuration/images/basics.mdx#authentication-registry) before using in here. -- For Docker Hub images, do not specify a registry hostname and use just the image name instead (e.g. `mysql`, `my-docker-username/image`). - -#### Example: Multiple Images -```yaml -images: - backend: - image: john/appbackend - frontend: - image: custom-registry.com:5000/peter/appfrontend -``` -**Explanation:** -- The first image `backend` would be tagged as `appbackend:[TAG]` pushed to Docker Hub using the path `john` (which generally could be your Docker Hub username). -- The second image `frontend` would be tagged as `appfrontend:[TAG]` and pushed to `custom-registry.com:5000` using the path `peter`. - -## `tags` *Tagging Schema* -The `tags` option expects an array of strings, each containing a static tag or a tagging schema used to automatically tag images before pushing them to the registry. The tagging schema can contain [dynamic config variables](../../configuration/variables/basics.mdx). While you can define your own config variables, DevSpace provides a set of pre-defined variables. The most commonly used variables for tagging are: -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_NAMESPACE**: The default namespace of your current kube-context - -Besides dynamic config variables, DevSpace offers you a possibility to mark certain parts of the image tag as random generated. During image build DevSpace will fill these parts with random characters. The placeholder for a random character is **#**. For example, let's assume you want to generate tags with the format dev-BRANCH-RANDOM, you would write the tag as: -```yaml -images: - default: - image: my-registry.com/user/image - tags: - # The five # are replaced with 5 random characters. The variable ${GIT_BRANCH} is replaced - # with the current branch the user is on - - 'dev-${GIT_BRANCH}-#####' -``` - -:::info Unique Tags For Development -**Make sure tags are unique** when defining a custom tagging schema for development. Unique tags ensure that your application gets started with the newly built image instead of using an older, cached version. Therefore, it is highly recommended for non-production tags to either use `#` placeholders or `DEVSPACE_TIMESTAMP` as a suffix in your tagging schema (see [example below](#example-custom-tagging-schema)). -::: - -#### Default Value For `tag` -```yaml -tags: -- '#####' -``` - -#### Example: Custom Tagging Schema -```yaml -images: - backend: - image: john/appbackend - tags: - - latest - - dev-backend-${DEVSPACE_GIT_COMMIT}-##### -``` -**Explanation:** -The above example would always use the tag `latest` and additionaly generate random tags which could look like this one: `dev-backend-b6caf8a-Jak9i`. This example tag consists of the following substrings defined by the tagging schema: -- `dev-` static string -- `-backend-` static string -- `b6caf8a` latest git commit hash on current local branch -- `-` static string -- `Jak9i` auto-generated random string diff --git a/docs/versioned_docs/version-5.17/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-5.17/configuration/images/inject-restart-helper.mdx deleted file mode 100644 index d0af502cc5..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/inject-restart-helper.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Container Restart Helper -sidebar_label: injectRestartHelper ---- - -## `injectRestartHelper` -The `injectRestartHelper` option expects a boolean which decides if DevSpace should inject a restart helper and override the `ENTRYPOINT+CMD` of the image in runtime during the build process which wraps the regular container start command and allows to restart the regular container start command without terminating/recreating the container. - - -:::note How does it work? -The idea of the restart helper is to start the restart helper script as PID 1 inside the conainer. This script will then start the original container entrypoint which will run your application. If a [restart is triggered](#trigger-a-restart), the restart helper will just restart the application again. -::: - -:::tip Automatic Restart On File Change -The restart helper per se does not do much except restarting your application if it has been killed. You can combine this config option with the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) which will effectively restart your application inside the container every time DevSpace syncs files into the container. -::: - - -#### Default Value For `injectRestartHelper` -```yaml -injectRestartHelper: false -``` - -#### Example: Inject Restart Helper -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - injectRestartHelper: true -``` - - -
- -## Trigger a Restart -You can restart a pod that has a restart helper injected with devspace itself: -``` -devspace restart -n my-namespace -devspace restart -n my-namespace --pod my-pod -devspace restart -n my-namespace --label-selector abc=def -``` - -Restart a pod via kubectl: -``` -kubectl exec my-pod -- sh -c 'PID=$(cat /.devspace/devspace-pid) && rm /.devspace/devspace-pid && kill -9 -$PID' -``` - -You can also manually trigger a restart through the restart helper by doing the following (same as with kubectl): -```bash -# 1. Get the PID of your applications process -PID=$(cat /.devspace/devspace-pid) - -# 2. Remove the PID file to tell the restart helper that this is an intended restart -# (otherwise the restart helper will terminate as well which will kill the container) -rm /.devspace/devspace-pid - -# 3. Kill the application process group (restart helper on PID 1 will detect this and restart it again) -kill -9 -$PID -``` - -:::note Automatic Restart On File Change -This is exactly what DevSpace is doing when the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) is configured. -::: - - -
- -## Restart Helper Script -```bash -#!/bin/sh -# -# A process wrapper script to simulate a container restart. This file was injected with devspace during the build process -# -set -e -pid="" -trap quit TERM INT -quit() { - if [ -n "$pid" ]; then - kill $pid - fi -} -while true; do - setsid "$@" & - pid=$! - echo "$pid" > /.devspace/devspace-pid - set +e - wait $pid - exit_code=$? - if [ -f /.devspace/devspace-pid ]; then - rm -f /.devspace/devspace-pid - printf "\nContainer exited with $exit_code. Will restart in 7 seconds...\n" - sleep 7 - fi - set -e - printf "\n\n############### Restart container ###############\n\n" -done -``` - -## Providing a custom restart helper script or changing the existing script - -DevSpace provides a way to change the existing restart helper script by defining the option `restartHelperPath`: -```yaml -images: - frontend: - image: john/appfrontend - injectRestartHelper: true - restartHelperPath: path/to/restarthelper.sh -``` - -DevSpace will now inject this script instead of the bundled restart helper script (see above). You can also specify an URL instead of a local path. This can be handy if you want to start up the application in a special way or want to make adjustments to the existing restart helper script. diff --git a/docs/versioned_docs/version-5.17/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-5.17/configuration/images/pull-secrets.mdx deleted file mode 100644 index e09163eae5..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/pull-secrets.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Image Pull Secrets -sidebar_label: createPullSecret ---- - -## `createPullSecret` -The `createPullSecret` option expects a boolean that tells DevSpace if a pull secret should be created for the registry where this image will be pushed to. -- If there are multiple images with the **same registry** and any of the images will define `createPullSecret: true`, the pull secret will be created no matter if any of the other images using the same registry explicitly defines `createPullSecret: false`. -- There is **no need to change your Kubernetes manifests, Helm charts, or other deployments to reference the pull secret** because DevSpace will [add the pull secret to the service account](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) which deploys your project. This ensures that the pull secret is automatically considered by Kubernetes although it is not explicitly referenced by your pods. -- After running `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the command `kubectl get serviceaccount default -o yaml` and take a look at the `imagePullSecrets` section of this service account. - -#### Default Value For `createPullSecret` -```yaml -createPullSecret: true -``` - -#### Example: Different Dockerfiles -```yaml -images: - backend: - image: john/appbackend - createPullSecret: false - frontend: - image: john/appfrontend -``` -**Explanation:** -- The first image `backend` will be pushed to Docker Hub and DevSpace will **not** create a pull secret for Docker Hub because `createPullSecret` is `false`. - This makes sense for public images where no login is required to pull the image or where you want to manage the pull secret yourself. -- The second image `frontend` will be pushed to gcr.io and DevSpace will create a pull secret for gcr.io because `createPullSecret` defaults to `true`, - so Kubernetes can pull the image from gcr.io. diff --git a/docs/versioned_docs/version-5.17/configuration/images/rebuild-strategy.mdx b/docs/versioned_docs/version-5.17/configuration/images/rebuild-strategy.mdx deleted file mode 100644 index c5aa10e53a..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/images/rebuild-strategy.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Rebuild Strategies -sidebar_label: rebuildStrategy ---- - -## `rebuildStrategy` -The `rebuildStrategy` option expects a string which decides when DevSpace will rebuild an image. By default DevSpace will rebuild an image if one of the conditions is true: -- The image was not built before -- The dockerfile has changed -- The configuration within the devspace.yaml for the image has changed -- A file within the docker context (excluding .dockerignore rules) has changed - -:::tip Skip Rebuild Manually -DevSpace will skip building when the `--skip-build` flag is explicitly provided. -::: - -:::tip Trigger Rebuild Manually -DevSpace will always rebuild when the `-b / --force-rebuild` flag is explicitly provided. -::: - -#### Options For `rebuildStrategy` -Currently DevSpace supports the rebuild strategies `always` and `ignoreContextChanges`: -- **always**: if this strategy is provided, DevSpace will always rebuild the image -- **ignoreContextChanges**: same as default except that DevSpace will ignore changes to files within the docker context - -#### Example -```yaml {4,7} -images: - backend: - image: john/appbackend - rebuildStrategy: always - frontend: - image: john/appfrontend - rebuildStrategy: ignoreContextChanges - cache: - image: john/cache - build: - disabled: true -``` -**Explanation:** -When running `devspace dev`, `devspace build` or `devspace deploy` using the above configuration, DevSpace would: -- **not** build the image `cache` because `build.disabled` is `true` -- build the image `frontend` only if it was not built yet, there were changes to the Dockerfile or the image config itself changed -- build the image `backend` because `rebuildStrategy` is set to `always` diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/activation.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/activation.mdx deleted file mode 100644 index c8785444d0..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/activation.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "Profiles: Activation" -sidebar_label: activation ---- - -The `activation` option is optional and allows you to activate a profile using regular expression matching of environment variables. An activation is configured with the profile it activates in `devspace.yaml`. - -#### Example: Defining a Profile Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "production" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The `production` profile would be activated when the environment variable `ENV` has value `production`: - -#### Example: Regular Expression Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "prod-\d+" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The profile `production` would be activated when the environment variable `ENV` matches the regular expression `prod-\d+`. This can be useful for matching environment variables that have dynamic values. - -#### Example: Matching All Environment Variables -When multiple `env` name/expression pairs are specified in the same activation, all environment variables values must match the expression to activate the profile. For example, the `production` profile is activated when both environment variables match their expressions: -```yaml {3-6} -profiles: -- name: production - activation: - - env: - CI: "true" - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -#### Example: Matching Any Environment Variables -When environment variables are used in multiple activations, the profile is activated when any environment variable matches. In this example, the `production` profile is activated when either environment variables match their expressions: -```yaml {3-7} -profiles: -- name: production - activation: - - env: - CI: "true" - - env: - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -### Dependency Activations -When `dependencies` are referenced from a `devspace.yaml`, the dependency's profile activations will also be evaluated. In this example, any profile activations in `./component-1/devspace.yaml` or `./component-2/devspace.yaml` would be evaluated. - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - -#### Example: Disable Activations by Dependency -The `disableProfileActivation` option can be used to disable profile activations for specific dependencies. In the following example, the activations for `./component-1/devspace.yaml` would be ignored, while the activations in `./component-2/devspace.yaml` would be evaluated: -```yaml {5} -dependencies: -- name: component-1 - source: - path: ./component-1 - disableProfileActivation: true -- name: component-2 - source: - path: ./component-2 -``` - -### Disable Activations Globally -The `--disable-profile-activation` flag can be used to disable all profile activations, including those specifed within each dependency's `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/basics.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/basics.mdx deleted file mode 100644 index 8c13d24a13..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/basics.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Config Profiles -sidebar_label: Basics ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -DevSpace allows you to define different profiles for different use cases (e.g. working on different services in the same project, starting certain debugging environments) or for different deployment targets (e.g. dev, staging production). - -Profiles allow you to define: -- [`replace`](../../configuration/profiles/replace.mdx) statements to override entire sections of the config. -- [`merge`](../../configuration/profiles/merge.mdx) patches ([JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386)) to change specific parts of the config. -- [`patches`](../../configuration/profiles/patches.mdx) ([JSON Patch, RFC 6902](https://tools.ietf.org/html/rfc6902)) to modify certain paths in the config. - -:::note Combine several strategies -It is possible to use several strategies together within one profile. The execution order inside a single profile is: -1. `replace` -2. `merge` -3. `patches` - -You can also apply multiple profiles through the `--profile` flag -::: - -:::tip Debug Profiles - - - -::: - -A profile has to be configured in the `profiles` section of the `devspace.yaml`. -```yaml {15-25} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` - -## Useful Commands - -### `devspace print -p [profile]` - - - - - -### `devspace list profiles` -To get a list of available profiles, you can run this command: -```bash -devspace list profiles -``` - -### `devspace use profile [profile]` -To permanently switch to a different profile, you can run this command: -```bash -devspace use profile [PROFILE_NAME] -``` - -:::note -Permanently switching to a profile means that all future commands (e.g. `devspace deploy` or `devspace dev`) will be executed using this profile until the user [resets the profile](#devspace-use-profile---reset) (see below). -::: - -### `devspace use profile --reset` -To permanently switch back to the default configuration (no profile replaces and patches active), you can run this command: -```bash -devspace use profile --reset -``` - -### `devspace [deploy] -p [profile]` -Most DevSpace commands support the `-p / --profile` flag. Using this flag, you can run a single command with a different profile without switching your profile permenantly: -```bash -devspace build -p [PROFILE_NAME] -devspace deploy -p [PROFILE_NAME] -devspace dev -p [PROFILE_NAME] -devspace dev -i -p [PROFILE_NAME] -``` diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/merge.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/merge.mdx deleted file mode 100644 index ac8c7420cb..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/merge.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Profiles: Merge" -sidebar_label: merge ---- - -Merge patches are a way to perform specific overrides to the configuration without having to create a completely separate config file. Patch functionality follows [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386) semantics. - -### Example - -Merge patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {16-30} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - merge: - images: - # Change the backend image - backend: - image: john/prodbackend - # Delete the backend-debugger image - backend-debugger: null - # Override deployments - deployments: - - name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config is merged with the given merge patch at `profiles[0].merge`. -- Merge patches follow the rules as defined in [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386): - - Arrays are overriden - - Objects are merged together - - Keys that have a `null` value are removed from objects -- The resulting config used in-memory when the profile `production` is used would look like this (you can check via `devspace print -p production`): - -```yaml -# In-Memory Config After Applying Merge Patches For Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/parents.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/parents.mdx deleted file mode 100644 index 8ac70e6678..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/parents.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Profiles: Parents" -sidebar_label: parents ---- - -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -The `parents` option is optional and expects the names of other profiles which should be applied before this profile. -The profiles are applied in the order they are specified. It is also possible to apply profiles from distant `devspace.yaml`s. -The kind of profile inheritance that the `parents` option provides can help to reduce redundancy when multiple profiles need to change the config in a similar way. - -:::info Execution Order -A parent profile is applied before the profile that defines the parent. A parent profile can have parents of its own. -::: - -#### Example: Defining a Parent Profile -```yaml {16-17} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - parents: - - profile: staging - patches: - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -- name: staging - replace: - images: - backend: - image: john/backendprod - patches: - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/backendprod - - op: remove - path: deployments.name=backend.helm.values.containers[1] -``` -When the `production` profile is active, the `replace` and `patches` statements configured in `staging` would be applied first because of the `parents` statement in line 16. After applying the `staging` profile, DevSpace would additionally apply the currently active `production` profile. In this example, the `production` profile is based on the `staging` profile and the only difference is that the `production` profile adds another container to the `backend` deployment which is using the image `john/cache`. - -#### Example: Defining multiple Parent Profiles -```yaml -version: v1beta9 -profiles: -- name: multi-parents - # Field that applies the profile deployments first and then the profile images - parents: - - profile: deployments - - profile: images -- name: deployments - replace: - deployments: - - name: my-deployment - helm: - componentChart: true - values: - containers: - - name: test -- name: images - replace: - images: - test: - image: mydockeruser/devspace - createPullSecret: true -``` - - -It is also possible to load a profile from a different source with the option `profiles.*.parents.*.source` that can define profiles that lie in a different `devspace.yaml`: - -#### Example: Define a profile from a different devspace.yaml -```yaml -version: v1beta9 -profiles: -- name: dev - parents: - # Will load the profile images from the devspace.yaml specified in other-folder/devspace.yaml - - profile: images - source: - path: other-folder # devspace.yaml will be automatically appended to the path (same syntax as with dependencies) - # or load from url - # path: https://raw.githubusercontent.com/my-org/my-repo/master/devspace.yaml - # or load from git - # git: https://github.com/loft-sh/devspace.git - - profile: deployments - source: - path: other-folder-2 -``` - -Under `source` the same options can be specified as for loading [dependencies](../../configuration/dependencies/basics.mdx). - - diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/patches.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/patches.mdx deleted file mode 100644 index 3c0464e854..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/patches.mdx +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: "Profiles: Patches" -sidebar_label: patches ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -Patches are a way to perform minor overrides to the configuration without having to create a separate config file. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as well as enhanced `path` selectors, as implemented by the [yaml-jsonpath](https://github.com/vmware-labs/yaml-jsonpath) library. - -## Example -Patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {15-26} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[1].image - value: john/cache -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config would be patched with 3 patches. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Patches For Profile `production` -images: - backend: - image: john/prodbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend - - image: john/cache -``` - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `patches` -The `patches` option expects an array of patch objects which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the config (e.g. `images.backend.image`, `deployments.name=backend.helm.values.containers[1]`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `deployments[*].helm.values`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `deployments`), you have several options: - -1. Use the index of the array item you want to patch, e.g. `deployments[0]`, `deployments/0` -2. Use a property selector matching the array item(s) you want to patch, e.g. `deployments.name=backend` -3. Use a wildcard selector to match all array item(s), e.g. `deployments.*`,`deployments[*]` or `deployments/*` -4. Use a comparison selector matching the array item(s) you want to patch, e.g. `deployments[?(@.helm.timeout=='1000s')]` -5. Use a regular expression selector matching the array item(s) you want to patch, e.g. `deployments[?(@.name=~/^production/)]` - -Using a selector rather than the array index is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -:::note -The `patches` of a profile can modify all parts of the configuration **except** the sections `profiles` and `commands`. -::: - -#### Example: Config Patches -```yaml {15-38} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: images.backend.image - value: john/stagingbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/stagingbackend - - op: remove - path: deployments.name=backend.helm.values.containers.image=john/debugger -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/debugger.image - value: john/cache -``` -**Explanation:** -- The above example defines 2 profiles: `staging`, `production` -- Users can use the flag `-p staging` to use the `staging` profile for a single command execution -- Users can use the flag `-p production` to use the `production` profile for a single command execution -- Users can permanently switch to the `staging` profile using: `devspace use profile staging` -- Users can permanently switch to the `production` profile using: `devspace use profile production` - -#### Example: Config Patches using Recursive Descent Selectors -```yaml {18,21,25,28} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/stagingbackend - - op: remove - path: deployments..[?(@.image=='john/debugger')] -- name: production - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/prodbackend - - op: replace - path: deployments..[?(@.image=='john/debugger')].image - value: john/cache -``` -**Explanation:** -- The above example has the same result as this [previous example](#example-config-patches). -- By using a recursive descent selector, we can change many `image` values at once. -- When the `staging` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/stagingbackend`, and all deployment containers with `image` property equal to `john/debugger` are removed. -- When the `production` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/prodbackend`, and all deployment containers with `image` property equal to `john/debugger` are changed to `john/cache`. - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.17/configuration/profiles/replace.mdx b/docs/versioned_docs/version-5.17/configuration/profiles/replace.mdx deleted file mode 100644 index 21c4a5d99d..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/profiles/replace.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Profiles: Replace" -sidebar_label: replace ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `replace` - -The `replace` option expects an object with the following (optional) fields: -- `images` which will replace the entire `images` section of the devspace.yaml -- `deployments` which will replace the entire `deployments` section of the devspace.yaml -- `dev` which will replace the entire `dev` section of the devspace.yaml -- `dependencies` which will replace the entire `dependencies` section of the devspace.yaml -- `hooks` which will replace the entire `hooks` section of the devspace.yaml - -#### Example: Using Config Replace For Profile `production` -```yaml {16-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - replace: - images: - backend: - image: john/prodbackend - patches: - - op: remove - path: deployments[0].helm.values.containers[1] -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config section `images` would be entirely replaced and additionally, 1 patch would be applied. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - -:::tip Combine Replace & Patches -As shown in this example, it is possible to use `replace` and `patch` options in combination. -::: - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.17/configuration/pullSecrets/basics.mdx b/docs/versioned_docs/version-5.17/configuration/pullSecrets/basics.mdx deleted file mode 100644 index 89a572cefc..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/pullSecrets/basics.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Pull Secrets -sidebar_label: pullSecrets ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to configure additional [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) that should be created in the target namespace. For each configured pull secret in the `devspace.yaml`, DevSpace will create a secret in the target namespace and add the secret to the `imagePullSecrets` field of the service account. - -For [images](../images/basics.mdx), DevSpace will also automatically create a pull secret, if authentication data can be found in the local docker store and creation is [enabled](../images/pull-secrets.mdx) via `createPullSecret`. - -Image Pull Secrets are defined in the `pullSecrets` section of the `devspace.yaml`. - - - - -```yaml -# If you don't want to specify the password and username directly in the config -# you can use variables, .env file or save the credentials in the local docker store -pullSecrets: -- registry: my-registry.com:5000 - username: ${REGISTRY_USER} - password: ${REGISTRY_PASSWORD} -``` - - - - -```yaml -# If you leave out the username & password DevSpace will try -# to get these from the local docker store. Make sure you -# are logged into the registry with `docker login my-registry.com:5000` -pullSecrets: -- registry: my-registry.com:5000 -``` - - - - -```yaml -pullSecrets: -- registry: my-registry.com:5000 - secret: my-pull-secret-name - serviceAccounts: - - default - - my-other-service-account -``` - - - - -## Configuration - -### `registry` -The `registry` option is mandatory and expects a string with the registry name for which a pull secret should be created for. - -### `username` -The `username` option is optional and expects a string with the username to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `password` -The `password` option is optional and expects a string with the password to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `email` -The `email` option is optional and expects a string with the email to login into the registry. This can be left empty usually since username and password are enough to log into a docker registry. If empty, the default value will be `noreply@devspace.cloud`. - -### `secret` -The `secret` option is optional and expects a string how the secret should be named. If empty, DevSpace will automatically create a meaningful name for the secret. - -### `serviceAccounts` -The `serviceAccounts` option is optional and expects an array of strings to which the pull secret should be added. If an image pull secret is added to a service account, the service account is able to pull images from that registry even without specifying the image pull secret in a pod definition. If this is empty, DevSpace will add the pull secret to the `default` serviceaccount. diff --git a/docs/versioned_docs/version-5.17/configuration/reference.mdx b/docs/versioned_docs/version-5.17/configuration/reference.mdx deleted file mode 100644 index 1f383e4d3f..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/reference.mdx +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: Config Reference -sidebar_label: Config Reference ---- - -import FragmentConfigImages from '../fragments/config-images.mdx'; -import FragmentConfigDeployments from '../fragments/config-deployments.mdx'; -import FragmentConfigDev from '../fragments/config-dev.mdx'; -import FragmentConfigDependencies from '../fragments/config-dependencies.mdx'; -import FragmentConfigVars from '../fragments/config-vars.mdx'; -import FragmentConfigProfiles from '../fragments/config-profiles.mdx'; -import FragmentConfigCommands from '../fragments/config-commands.mdx'; -import FragmentConfigHooks from '../fragments/config-hooks.mdx'; -import WarningBuildToolPriority from '../fragments/warning-build-tool-priority.mdx'; - -## `version` -```yaml -version: v1beta11 # string | Version of the config -``` - -## `images` - - - -[Learn more about how to configure image building.](../configuration/images/basics.mdx) - -### `images[*].build` -```yaml -build: # struct | Build configuration for an image - docker: ... # struct | Build image with docker and set options for docker - kaniko: ... # struct | Build image with kaniko and set options for kaniko - custom: ... # struct | Build image using a custom build script - disabled: false # bool | Disable image building (Default: false) -``` -:::info -Setting the key `docker`, `kaniko`, `custom` or `disabled` will define the build tool for this image. - -- If neither `docker`, `kaniko`, `custom` nor `disabled` is specified, `docker` will be used by default. -- By default, `docker` will use `kaniko` as fallback when DevSpace is unable to reach the Docker host. -::: - - - -### `images[*].build.docker` -```yaml -docker: # struct | Options for building images with Docker - preferMinikube: true # bool | If available, use minikube's in-built docker daemon instaed of local docker daemon (default: true) - skipPush: false # bool | Skip pushing image to registry, enabled automatically for minikube and docker-desktop (Default: false) - disableFallback: false # bool | Disable using kaniko as fallback when Docker is not installed (Default: false) - useCli: false # bool | If true will use the docker cli for building - args: # []string | Additional arguments that should be used for executing the docker cli - - --any-flag - options: ... # struct | Set general build options -``` - -### `images[*].build.buildKit` -```yaml -buildKit: - skipPush: false # bool | If this is true, DevSpace will not push any images - preferMinikube: true # bool | If false, will not try to use the minikube docker daemon to build the image - args: [] # string[] | Additional arguments to call docker buildx build with - command: [] # string[] | Override the base command to create a builder and build images. Defaults to ["docker", "buildx"] - options: ... # struct | Set build general build options - inCluster: # struct | If specified, DevSpace will use BuildKit to build the image within the Kubernetes cluster - name: "" # string | Name is the name of the builder to use. If omitted, DevSpace will try to create - # | or reuse a builder in the form devspace-$NAMESPACE - namespace: "" # string | Namespace where to create the builder deployment in. Defaults to the current active namespace. - rootless: false # bool | If enabled will create a rootless BuildKit deployment. - image: "" # string | The docker image to use for the BuildKit deployment - nodeSelector: "" # string | The node selector to use for the BuildKit deployment - createArgs: [] # string[] | Additional args to create the builder with. - noCreate: false # bool | By default, DevSpace will try to create a new builder if it cannot be found. - # | If this is true, DevSpace will fail if the specified builder cannot be found. - noRecreate: false # bool | By default, DevSpace will try to recreate the builder if the builder configuration - # | in the devspace.yaml differs from the actual builder configuration. If this is - # | true, DevSpace will not try to do that. - noLoad: false # bool | If enabled, DevSpace will not try to load the built image into the local docker - # | daemon if skip push is defined -``` - -### `images[*].build.kaniko` -```yaml -kaniko: # struct | Options for building images with kaniko - cache: true # bool | Use caching for kaniko build process - annotations: {} # map | Extra annotations for the kaniko build pod - labels: {} # map | Extra labels for the kaniko build pod - snapshotMode: "time" # string | Type of snapshotMode for kaniko build process (compresses layers) - insecure: false # bool | Allow working with an insecure registry by not validating the SSL certificate (Default: false) - command: [] # string[] | Array of strings for the kaniko pod - args: [] # string[] | Array of additional args for kaniko build command - image: "" # string | Allows to change the kaniko image or kaniko version / image tag. - initImage: "" # string | Allows to change the init container kaniko image (defaults to alpine) - serviceAccount: "" # string | The service account to use for this build pod - nodeSelector: {} # map | A key value map of node labels to select a node for the build pod - tolerations: [] # struct[] | Array of node tolerations that should be used to schedule the build pod - pullSecret: "" # string | Mount this Kubernetes secret instead of creating one to authenticate to the registry (default: "") - additionalMounts: [] # struct[] | Array of mount configurations for Kubernetes Secrets and ConfigMaps that should be mounted into the kaniko build container - namespace: "" # string | Kubernetes namespace to run kaniko build pod in (Default: "" = deployment namespace) - options: ... # struct | Set build general build options - skipPullSecretMount: true # bool | If true devspace will not mount and create any image pull secret for the kaniko pod - env: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.value field) - my-string-env: value - envFrom: # map | Key value pairs of environment variables that should be added to the kaniko container (fills the env.valueFrom field) - my-env-from-secret: - secretKeyRef: ... - my-env-from-configmap: - configMapKeyRef: ... - initEnv: {} # map | Key value pairs of enviroment variables that should be added to the kaniko init pod -``` - -### `images[*].build.custom` -```yaml -custom: # struct | Options for building images with a custom build script - command: "./scripts/builder" # string | Command to be executed for building (e.g. path to build script or executable) - commands: [] # struct[] | An array of objects with keys command and os to exchange the command for a specific os - args: [] # string[] | Array of arguments for the custom build command - appendArgs: [] # string[] | Args are prepended to the command (before the image tags) and appendArgs are appended - imageFlag: string # string | Name of the flag that DevSpace uses to pass the image name + tag to the build script - imageTagOnly: false # bool | If true devspace will only use the image tag as argument - skipImageArg: false # bool | If true devspace will skip adding image:tag as argument completely - onChange: [] # string[] | Array of paths (glob format) to check for file changes to see if image needs to be rebuilt -``` - -### `images[*].build.disabled` -```yaml -build: # struct | Build configuration for an image - disabled: true # bool | Disable image building (Default: false) -``` - -### `images[*].build.*.options` -```yaml -options: # struct | Options for building images - target: "" # string | Target used for multi-stage builds - network: "" # string | Network mode used for building the image - buildArgs: {} # map[string]string | Key-value map specifying build arguments that will be passed to the build tool (e.g. docker) -``` - - -## `deployments` - - - -:::info -Using the `helm` or `kubectl` key will define the type of deployment and the deployment tool to be used. -::: - -:::warning -You **cannot** use `helm` and `kubectl` in combination. -::: - -### `deployments[*].helm` -```yaml -helm: # struct | Options for deploying with Helm - chart: ... # struct | Relative path - componentChart: false # bool | Use the DevSpace component chart instead of a custom `chart` = deployment is a component (Default: false) - values: {} # struct | Any object with Helm values to override values.yaml during deployment - valuesFiles: # string[] | Array of paths to values files - - ./chart/my-values.yaml # string | Path to a file to override values.yaml with - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - wait: false # bool | Wait for pods to start after deployment (Default: false) - displayOutput: false # bool | Display output from helm install/upgrade (Default: false) - timeout: 180 # int | Timeout to wait for pods to start after deployment (Default: 180) - force: false # bool | Force deleting and re-creating Kubernetes resources during deployment (Default: false) - atomic: false # bool | Rollback deployment if it fails (Default: false) - cleanupOnFail: false # bool | Delete resources if rollback fails (Default: false) - recreate: false # bool | Recreate pods for applicable resources, e.g. deployments (Default: false) - disableHooks: false # bool | Disable hooks (Default: false) - v2: false # bool | Use legacy Helm v2 (Default: false) - tillerNamespace: "" # string | Kubernetes namespace to run Tiller in when using Helm v2 (Default: "" = same a deployment namespace) - deleteArgs: [] # []string | Extra args for the `helm delete` command during devspace purge - templateArgs: [] # []string | Extra args for the `helm template` command during devspace render - upgradeArgs: [] # []string | Extra args for the `helm upgrade` command during devspace deploy/dev - fetchArgs: [] # []string | Extra args for the `helm fetch` command during devspace render -``` -[Learn more about configuring deployments with Helm.](../configuration/deployments/helm-charts.mdx) - -### `deployments[*].helm.componentChart` -```yaml -helm: - componentChart: true # bool | Use Component chart - values: # struct | Options for deploying a component = Deployment/StatefulSet - initContainers: ... # struct[] | Init Containers of this Deployment/StatefulSet - containers: ... # struct[] | Containers of this Deployment/StatefulSet - labels: {} # map[string]string | Map of Kubernetes labels for labeling the pods of this component - annotations: {} # map[string]string | Map of Kubernetes annotations for annotating the pods of this component - volumes: ... # struct | Component volumes - service: ... # struct | Component service - serviceName: my-service # string | Service name for headless service (for StatefulSets) - ingress: ... # struct | Component ingress - replicas: 1 # int | Number of replicas (Default: 1) - autoScaling: ... # struct | AutoScaling configuration - rollingUpdate: ... # struct | RollingUpdate configuration - pullSecrets: ... # string[] | Array of PullSecret names - podManagementPolicy: OrderedReady # enum | "OrderedReady" or "Parallel" (for StatefulSets) - options: ... # struct | Options for deploying this component with helm -``` - -[Learn more about configuring the component chart.](https://devspace.sh/component-chart/docs/introduction) - -### `deployments[*].helm.chart` -```yaml -chart: # struct | Chart to deploy - name: my-chart # string | Path to local chart on filesystem OR chart name for remote chart in helm chart repository - version: v1.0.1 # string | Chart version - repo: "https://my-repo.tld/" # string | Helm chart repository - username: "my-username" # string | Username for Helm chart repository - password: "my-password" # string | Password for Helm chart repository -``` - -### `deployments[*].kubectl` -```yaml -kubectl: # struct | Options for deploying with "kubectl apply" - manifests: [] # string[] | Array containing glob patterns for the Kubernetes manifests to deploy using "kubectl apply" (e.g. kube or manifests/service.yaml) - kustomize: false # bool | Use kustomize when deploying manifests via "kubectl apply" (Default: false) - replaceImageTags: true # bool | Enable automated tag replacement (Default: true) - applyArgs: [] # string[] | Array of args for the "kubectl apply" command during deployment - createArgs: [] # string[] | Array of args for the "kubectl create" command during deployment - kustomizeArgs: [] # string[] | Array of args for the "kustomize build" command during deployment - deleteArgs: [] # string[] | Array of args for the "kubectl delete" command when purging deployments - cmdPath: "" # string | Path to the kubectl binary (Default: "" = detect automatically) -``` -[Learn more about configuring deployments with kubectl.](../configuration/deployments/kubernetes-manifests.mdx) - - -## `dev` - - - -[Learn more about configuring development mode.](../configuration/development/basics.mdx) - -### `dev.ports` -```yaml -ports: # struct[] | Array of port forwarding settings for selected pods -- name: somePort # string | Optional string stating the name of this port-forwarding configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - namespace: "" # string | Kubernetes namespace to select pods in - containerName: "" # string | Name of the container to select (only applies if reverseForward is used) - arch: "amd64" # string | Target architecture of the selected container (only applies if reverseForward is used) - forward: # struct[] | Array of ports to be forwarded - - port: 8080 # int | Forward this port on your local computer - remotePort: 3000 # int | Forward traffic to this port exposed by the pod/container selected - bindAddress: "" # string | Address used for binding / use 0.0.0.0 to bind on all interfaces (Default: "localhost" = 127.0.0.1) - reverseForward: # struct[] | Array of ports to reverse forward - - port: 3000 # int | Local port that should be accessible remotely - remotePort: 8080 # int | Port in the container where the local port can be accessed -``` -[Learn more about configuring port forwarding.](../configuration/development/port-forwarding.mdx) - -### `dev.open` -```yaml -open: # struct[] | Array of auto-open settings -- url: "https://localhost:3000/" # string | URL to open after application has started -``` -[Learn more about configuring auto-opening links.](../configuration/development/open-links.mdx) - -### `dev.sync` -```yaml -sync: # struct[] | Array of file sync settings for selected pods -- name: someSync # string | Optional string stating the name of this sync configuration - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - localSubPath: ./ # string | Relative path to a local folder that should be synchronized (Default: "./" = entire project) - disableDownload: false # bool | If true will disable downloading files - disableUpload: false # bool | If true will disable uploading files - containerPath: /app # string | Path in the container that should be synchronized with localSubPath (Default is working directory of container (".")) - excludePaths: [] # string[] | Paths to exclude files/folders from sync in .gitignore syntax - excludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from sync - downloadExcludePaths: [] # string[] | Paths to exclude files/folders from download in .gitignore syntax - downloadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from download - uploadExcludePaths: [] # string[] | Paths to exclude files/folders from upload in .gitignore syntax - uploadExcludeFile : "" # string | Path to a file using .gitignore syntax to exclude files/folders from upload - initialSync: mirrorLocal # enum | Specifies the initialSync algorithm: mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll (Default: mirrorLocal) - initialSyncCompareBy: mtime # enum | Specifies how the initialSync determines if a file has changed: mtime / size - waitInitialSync: false # bool | Wait until initial sync is completed before continuing (Default: false) - throttleChangeDetection: 100 # int | If greater zero, describes the amount of milliseconds to wait after each checked 100 files on the remote site - arch: "amd64" # string | Target architecture of the selected container - polling: false # bool | If polling should be used to detect file changes in the container - bandwidthLimits: # struct | Bandwidth limits for the synchronization algorithm - download: 0 # int64 | Max file download speed in kilobytes / second (e.g. 100 means 100 KB/s) - upload: 0 # int64 | Max file upload speed in kilobytes / second (e.g. 100 means 100 KB/s) - onUpload: # struct | After a file/folder has been uploaded to the container... - restartContainer: true # bool | Restart container after uploading files (requires images.*.injectRestartHelper: true) - exec: - - name: "my-exec-name" # string | Optional string stating the name of this exec configuration - command: "touch abc.txt" # string | Command that should be executed after DevSpace made changes - args: [] # string[] | Optional args that will force DevSpace to not execute the command in a shell - failOnError: false # bool | If true, DevSpace will restart the sync if the command fails (default: false) - local: false # bool | If true, DevSpace will run the command locally instead of in the container (default: false) - onChange: ["package.json"] # string[] | Optional array of file patterns that will trigger this command -``` -[Learn more about configuring the file synchronization.](../configuration/development/file-synchronization.mdx) - -### `dev.logs` -```yaml -logs: # struct | Options for multi-container log streaming in development mode - disabled: false # bool | Disable log streaming in development mode (Default: false) - showLast: 200 # int | Number of last log lines to show before starting stream (Default: 50) - sync: true # bool | If the sync log should be merged with container and pod logs - selectors: # struct[] | An array of label or image selectors to select pods to stream logs from - - labelSelector: - other: label - namespace: optional - containerName: optional - - imageSelector: nginx - namespace: optional -``` -[Learn more about configuring multi-container log streaming.](../configuration/development/log-streaming.mdx) - -### `dev.autoReload` -```yaml -autoReload: # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - paths: [] # string[] | Array containing glob patterns of files that are watched for auto-reloading (i.e. reload when a file matching any of the patterns changes) - deployments: [] # string[] | Array containing names of deployments to watch for auto-reloading (i.e. reload when kubectl manifests or files within the Helm chart change) - images: [] # string[] | Array containing names of images to watch for auto-reloading (i.e. reload when the Dockerfile changes) -``` - -### `dev.terminal` -```yaml -terminal: # struct | Options for terminal mode - imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - command: [] # string[] | Array defining the shell command to start the terminal with (Default: ["sh", "-c", "command -v bash >/dev/null 2>&1 && exec bash || exec sh"]) - workDir: "" # string | The working directory where to execute the command or open the shell -``` - -[Learn more about terminal config options.](../configuration/development/terminal.mdx) - -### `dev.replacePods` -```yaml -replacePods: # struct[] | Which pods should be replaced -- imageSelector: john/backend:0.1 # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - replaceImage: "" # string | The image that should be used for the pod - persistPaths: # struct[] | Paths that should get persisted in the replaced pod - - path: /app # string | The container path that should get persisted - volumePath: my-volume/app # string | Optional path on the persistent volume to mount - containerName: "" # string | Optional container name in the replaced pod to persist the path - readOnly: false # bool | If the path should get mounted read only - persistenceOptions: # struct | Additional options for persistPaths - name: "" # string | Optional name of the pvc to reuse / create - size: "10Gi" # string | Size of the pvc to create - readOnly: false # bool | If all defined persistPaths should get mounted read only - storageClassName: "" # string | StorageClassName to use for the persistent volume claim - accessModes: ["ReadWriteOnce"] # string[] | Access modes to use for the persistent volume claim - patches: # struct[] | Other patches that should be applied on the pod - - op: add # enum | Patch operation (replace, add, remove) - path: "spec.containers[0].command" # string | Jsonpath or xpath to config option that should be patched - value: ["sleep"] # arbitrary | Value to use for patch operation -``` - -[Learn more about replacing pods.](../configuration/development/replace-pods.mdx) - -## `dependencies` - - - -[Learn more about configuring dependencies.](./dependencies/basics.mdx) - -:::warning -You **cannot** use `source.git` and `source.path` in combination. You **must** exactly use one of the two. -::: - -## `hooks` - - - - -## `commands` - - - -[Learn more about configuring custom commands.](../configuration/commands/basics.mdx) - - -## `vars` - - - -[Learn more about configuring config variables.](../configuration/variables/basics.mdx) - - -## `profiles` - - - -[Learn more about configuring profiles and patches.](../configuration/profiles/basics.mdx) diff --git a/docs/versioned_docs/version-5.17/configuration/require/basics.mdx b/docs/versioned_docs/version-5.17/configuration/require/basics.mdx deleted file mode 100644 index b21908ec3f..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/require/basics.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Required Versions -sidebar_label: require ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of: - -- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version -- **Installed Plugins** (`require.plugins`): You can define required plugins and their version -- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range - -Requirements are defined in the `require` section of the `devspace.yaml`. - - - - -```yaml -# You can either specify an exact version or a version range or even -# multiple versions. -require: - devspace: '>= 4.0, < 6.0' -``` - - - - -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - - name: loft - version: ">= 1.11.0" -``` - - - - -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` - - - - -## Configuration - -### `devspace` -The `devspace` option can be used to define a version constraint for the DevSpace version that is required to use this config. Constraints can have `=`, `!=`, `<`, `>`, `>=` or `<=` in front of them and can be chained for a logical AND: -- **Exact Version**: `v1.0.0` -- **Newer Versions**: `>= v1.0.0` -- **Older Versions**: `< v1.0.0` -- **Multiple**: `>= v4.0.0, <= v8.0.0, != v5.0.0` - -### `plugins` -The `plugins` option takes an array of required plugins that need to be installed. For each plugin a name (`require.plugins[*].name`) and version constraint (`require.plugins[*].version`) is required. - -For example: -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - # Requires that the plugin loft is installed with at least version v1.11.0 - - name: loft - version: ">= 1.11.0" -``` - -### `commands` -The `commands` option takes an array of required commands that need to be installed. For each command a name (`require.commands[*].name`) and version constraint (`require.commands[*].version`) is required. By default, DevSpace will try to call the command via `NAME version` to figure out its version. DevSpace will use the regex `(v\\d+\\.\\d+\\.\\d+)` to parse the command version and assumes the first matching group contains the version. If no matching group can be found or the command does not exist, DevSpace will fail. - -You can override the arguments used by DevSpace to retrieve the command version via `require.commands[*].versionArgs`. You can also override the regex that is used by DevSpace to parse the command version via `require.commands[*].versionRegEx`. The version regex needs to define a single matching group that specifies the version. The first match of that matching group will be handled as command version by DevSpace. - -For example: -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` diff --git a/docs/versioned_docs/version-5.17/configuration/variables/basics.mdx b/docs/versioned_docs/version-5.17/configuration/variables/basics.mdx deleted file mode 100644 index 02ee654c22..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/variables/basics.mdx +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Config Variables -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to make your configuration dynamic by using variables in `devspace.yaml`. - -While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. Variables are defined within the `vars` section of `devspace.yaml`. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -# Variables defined by value will not -# be asked or overwritten through environment -- name: MYSQL_VERSION - value: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -```yaml {3,5-6} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - command: "echo 5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - - - - -```yaml {3} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: {} -``` - -:::tip -DevSpace allows you to use config variables without explicitly defining them as variables. You can simply reference them via `${MY_ENV_VAR}` anywhere in your `devspace.yaml`. Implicit variables use `source: all`. -::: - - - - -:::info Source -The `source` option of a config variable expects either: -- `all` means to check environment variables **first** and then ask a question if no env variable is defined (**default**) -- [`env`](../../configuration/variables/source-env.mdx) means to check environment variables **only** -- [`input`](../../configuration/variables/source-input.mdx) means to ask the user a question **once** (values will be cached in `.devspace/generated.yaml`) -- [`command`](../../configuration/variables/source-command.mdx) means DevSpace will not ask the user a question and instead execute a command to determine the value of the variable. -::: - -:::warning Pass Variables via CLI -A useful feature in DevSpace is that you can also specify variables as flags, which will override previous values (if there are any): -``` -devspace deploy --var VAR1=VALUE1 --var VAR2=VALUE2 -``` -::: - -:::note Input Caching -If `source` is either `all` or `input` and the variable is not defined, the user will be asked to provide a value either using a generic question or the one provided via the [`question`](../../configuration/variables/source-input.mdx#question) option. The user-provided value will be cached encrypted in `.devspace/generated.yaml` and the user will only be asked again after the cache has been cleared first using: -```bash -devspace reset vars -``` -::: - -To disable this functionality set the field `noCache` to `true`. This will make devspace prompt for the variable on every run. - -## Predefined Variables -DevSpace provides some variables that are filled automatically and can be used within the config. These can be helpful for image tagging and other use cases: - -- **DEVSPACE_RANDOM**: A random 6 character long string -- **DEVSPACE_TIMESTAMP** A unix timestamp when the config was loaded -- **DEVSPACE_GIT_COMMIT**: A short hash of the local repo's current git commit -- **DEVSPACE_GIT_BRANCH**: The current branch name of the local repo -- **DEVSPACE_NAMESPACE**: The default namespace of the current kube-context (= the namespace that you are deploying to) -- **DEVSPACE_CONTEXT**: Name of the current kube-context -- **DEVSPACE_VERSION**: The version of the devspace cli without a leading v (e.g. 5.4.3) -- **DEVSPACE_PROFILE**: The main profile used for DevSpace (value of the --profile flag) -- **DEVSPACE_USER_HOME**: The absolute path to the user's home directory - -#### Example: Using `${DEVSPACE_GIT_COMMIT}` -```yaml -images: - default: - image: myrepo/devspace - tag: ${DEVSPACE_GIT_COMMIT}-${DEVSPACE_TIMESTAMP} -``` -**Explanation:** -This config will tag the image in the form of `myrepo/devspace:d9b4bcd-1559766514`. Many other combinations are possible with this method. - - - -## Useful Commands - -### `devspace list vars` -To get a list of all variables defined in the `devspace.yaml`, you can run this command: -```bash -devspace list vars -``` - -### `devspace reset vars` -Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run: -```bash -devspace reset vars -``` - -DevSpace will fill the variables cache again, once you run the next build or deployment command. - -### `devspace print` -The following command prints the config after all variables have been replaced: -```bash -devspace print -``` -You can optionally add the `-p / --profiles` flag to this command. - -### `export VAR_NAME=value` -The value for a config variable can also be set by defining an environment variable named `[VAR_NAME]`. Setting the value of a config variable with name `${IMAGE_NAME}` would be possible by setting an environment value `IMAGE_NAME`. - - - - - -```powershell -$env:IMAGE_NAME = "some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - diff --git a/docs/versioned_docs/version-5.17/configuration/variables/source-command.mdx b/docs/versioned_docs/version-5.17/configuration/variables/source-command.mdx deleted file mode 100644 index cc991a30f8..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/variables/source-command.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Variables From Commands -sidebar_label: "source: command" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `command`, DevSpace will **not** ask the user a question and instead execute a command to determine the value of the variable. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - # Will execute the command in a Golang Shell (cross plattform compatible) - command: "echo 5.5" -``` - -If you need different commands depending on the operating system you can use `commands`: -```yaml {3,7-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - commands: - - command: bash - args: ["-c", "echo '5.5'"] - os: linux,darwin - command: echo - args: ["5.5"] -``` - -:::info -If not command for the current operating system can be found under `commands`, the `command` and `args` will be used as fallback. -::: - - - -## Configuration - -### `name` - - - - -### `command` & `args` - -The command and arguments to execute to retrieve the value of the variable. The captured stdout of the command will be used as variable value. Whitespaces and newlines will be trimmed from the command output. - -:::tip -You can use other variables in the command or args definition as long as they are either a predefined variable or defined before the variable in the `vars` array. For example: -```yaml -vars: -- name: SECRET_NAME - source: env -- name: SECRET_VALUE - command: ./retrieve-secret-value.sh - args: ["--secret-name=${SECRET_NAME}", "--namespace=${DEVSPACE_NAMESPACE}"] -``` -::: - -### `commands` - -Commands expects an array of objects that define commands for specific operating systems. If no command can be found for the current operating system in `commands`, then `command` will be used as fallback. - -```yaml -vars: -- name: MYSQL_VERSION - source: command - commands: - # Use command on linux - - command: bash - args: ["-c", "echo '5.5'"] - os: linux - # Use command on mac - - command: bash - args: ["-c", "echo '5.6'"] - os: darwin - # Use on all other operating systems - command: echo - args: ["5.5"] -``` - -### `default` - -If the command returns nothing, this is the value that will be used for this variable. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.17/configuration/variables/source-env.mdx b/docs/versioned_docs/version-5.17/configuration/variables/source-env.mdx deleted file mode 100644 index a073063561..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/variables/source-env.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Environment Variables -sidebar_label: "source: env" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `env`, DevSpace will **not** ask the user a question and instead use environment variables to determine the value of the variable. -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - -:::info -If `source` is `env` and the environment variable is **not** defined, DevSpace will use the [`default` value](#default) or terminate with a fatal error, if there is **no** [`default` value](#default) configured. -::: - - - -## Configuration - -### `name` - - - - -### `default` - - diff --git a/docs/versioned_docs/version-5.17/configuration/variables/source-input.mdx b/docs/versioned_docs/version-5.17/configuration/variables/source-input.mdx deleted file mode 100644 index 0cd204053c..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/variables/source-input.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Input-based Variables -sidebar_label: "source: all | input" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If `source: all (default) | input`, DevSpace may ask the user a question to determine the value of a config variable. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -:::tip Ignore Env Variables -If you want DevSpace to ignore environment variables, you can explicitly define `source: input` to make sure only explict user input will be used to set the value of the variable. -::: - - - - -## Configuration - -### `name` - - - - -### `default` - - - - -### `question` -The `question` option expects a string with a question that will be asked when the variable is not defined. DevSpace tries to resolve the variable according to the `source` of the variable and if it is not set via any of the accepted sources, DevSpace will prompt the user to define the value by entering a string. - -:::note Question -- Defining the `question` is optional but often helpful to provide a better usability for other users. -- If [valid `options` for the variable value](#options) are configured, DevSpace will show a picker/selector instead of a regular input field/prompt. -- If a [`default` value](#default) is configured for the variable, DevSpace will use this [`default` value](#default) as default answer for the question that can be easily selected by pressing enter. -::: - -#### Default Value For `question` -```yaml -question: Please enter a value for [VAR_NAME] # using the variable name -``` - - -### `options` -The `options` option expects an array of strings with each string stating a allowed value for the variable. - -#### Example: Define Variable Options -```yaml -vars: -- name: REGISTRY - question: Which registry do you want to push to? - source: input - options: - - hub.docker.com - - my.private-registry.tld - - gcr.io - default: my.private-registry.tld -``` -**Explanation:** -If the variable `REGISTRY` is used for the first time during `devspace deploy`, DevSpace will ask the user to select which value to use by showing this question: -```bash -Which registry do you want to push to? (Default: my.private-registry.tld) -Use the arrows UP/DOWN to select an option and ENTER to choose the selected option. - hub.docker.com -> my.private-registry.tld - gcr.io -``` - -### `noCache` -The `noCache` option expects a boolean that disables the caching behavior for variables. When set to `true`, this will prompt the user on every run and will not save the value. - -#### Default Value For `noCache` -```yaml -noCache: false -``` - -### `password` -The `password` option expects a boolean that defines if DevSpace should hide the user input when the user provides the value for this variable by entering a response to the question asked in the command line. - -#### Default Value For `password` -```yaml -password: false -``` - -#### Example: Hide User Response -```yaml -vars: -- name: REGISTRY_TOKEN - question: "Please enter your registry token:" - source: input - password: true -``` -**Explanation:** -If the variable `REGISTRY_TOKEN` is used for the first time during `devspace deploy`, DevSpace will ask the user to provide a value by showing this question: -```bash -? Please enter your registry token: ******* -``` -The response the user enters will be hidden as `*******` to protect others from seeing the input while the user is typing. - - -### `validationPattern` -The `validationPattern` option expects a string stating a regular expression that validates if the value entered by the user is allowed as a value for this variable. - -:::info -If the provided value does **not** match the regex in `validationPattern`, DevSpace will either show a generic error message or the message provided in [`validationMessage`](#validationmessage). -::: - -### `validationMessage` -The `validationMessage` option expects a string stating an error message that is shown to the user when providing a value for the variable that does not match the regex provided in [`validationPattern`](#validationpattern). diff --git a/docs/versioned_docs/version-5.17/configuration/variables/source-none.mdx b/docs/versioned_docs/version-5.17/configuration/variables/source-none.mdx deleted file mode 100644 index f14ae1345b..0000000000 --- a/docs/versioned_docs/version-5.17/configuration/variables/source-none.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Fixed Variables -sidebar_label: "value" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; - -You can specify fixed variables with the `value` field. This cannot be used together with `default` in a single variable definition. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - value: "5.5" -- name: NAMESPACE - value: ${DEVSPACE_NAMESPACE}-suffix -# If you set 'default: my-value' and 'source: none' will be -# internally converted to 'value: my-value'. -# Both variable definitions below are handled exactly the same -- name: SOURCE_NONE - default: my-value - source: none -- name: SOURCE_NONE - value: my-value -``` - -:::note OVERWRITING -If you want to overwrite a fixed variable, you can use the `--var FIXED=new-value` flag -::: - -## Configuration - -### `name` - - - -### `value` - -The `value` option expects a string, integer or boolean defining the value for the variable. You can also use other variables in a value, with one of the following conditions being true: - -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable diff --git a/docs/versioned_docs/version-5.17/fragments/build-option-buildArgs.mdx b/docs/versioned_docs/version-5.17/fragments/build-option-buildArgs.mdx deleted file mode 100644 index e393e26231..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/build-option-buildArgs.mdx +++ /dev/null @@ -1,16 +0,0 @@ -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/versioned_docs/version-5.17/fragments/build-option-network.mdx b/docs/versioned_docs/version-5.17/fragments/build-option-network.mdx deleted file mode 100644 index 550dad783c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/build-option-network.mdx +++ /dev/null @@ -1,15 +0,0 @@ - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. diff --git a/docs/versioned_docs/version-5.17/fragments/build-option-target.mdx b/docs/versioned_docs/version-5.17/fragments/build-option-target.mdx deleted file mode 100644 index 9755b00e7c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/build-option-target.mdx +++ /dev/null @@ -1,14 +0,0 @@ -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. diff --git a/docs/versioned_docs/version-5.17/fragments/choose-project.mdx b/docs/versioned_docs/version-5.17/fragments/choose-project.mdx deleted file mode 100644 index 6876c72e5d..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/choose-project.mdx +++ /dev/null @@ -1,87 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-nodejs -cd devspace-quickstart-nodejs -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-python -cd devspace-quickstart-python -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-ruby -cd devspace-quickstart-ruby -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-golang -cd devspace-quickstart-golang -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-java -cd devspace-quickstart-java -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-php -cd devspace-quickstart-php -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-asp-dotnet -cd devspace-quickstart-asp-dotnet -``` - - - - -```bash -# Navigate to the root directory of your project -cd /path/to/your/project -``` - -:::info -If you are using DevSpace for the first time, it is highly recommended that you use one of the demo projects. -::: - - - diff --git a/docs/versioned_docs/version-5.17/fragments/config-commands.mdx b/docs/versioned_docs/version-5.17/fragments/config-commands.mdx deleted file mode 100644 index b8e5c3d092..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-commands.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -commands: # struct[] | Array of custom commands -- name: "debug-backend" # string | Name of the command to run via `devspace run debug-backend` - command: "devspace dev -i backend" # string | Command to be executed when running `devspace run [name]` - appendArgs: false # bool | If true, DevSpace will append all arguments to the command - args: ... # string[] | Args for the command to be executed -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-dependencies.mdx b/docs/versioned_docs/version-5.17/fragments/config-dependencies.mdx deleted file mode 100644 index 67031ce3e7..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-dependencies.mdx +++ /dev/null @@ -1,24 +0,0 @@ -```yaml -dependencies: # struct[] | Array of dependencies (other projects containing a devspace.yaml or devspace-configs.yaml) that need to be deployed before this project -- source: # struct | Defines where to find the dependency (exactly one source is allowed) - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository (recommended method for referencing dependencies, must have the format of the git remote repo as usually checked out via git clone) - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer (not recommended, instead of using git-related options) - profiles: [] # string[] | Profiles used to deploy this dependency (when multiple profiles are defined in the devspace.yaml of the dependency) - skipBuild: false # bool | Do not build images of this dependency (= only start deployments) - ignoreDependencies: false # bool | Do not build and deploy dependencies of this dependency - namespace: "" # string | Kubernetes namespace to deploy dependency to (Default: default namespace of current kube-context) - dev: # struct | Define which dev config should be reused from a dependency - ports: false # bool | Reuse dev.ports config from the dependency - sync: false # bool | Reuse dev.sync config from the dependency - overwriteVars: true # bool | If not defined or true, will overwrite values of variables with the same name in the dependency - vars: # struct[] | Variables in the dependency config that should be overriden with the specified values - - name: NAME - value: value - disableProfileActivation: true # bool | If true will ignore profile activations for this dependency -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-deployments.mdx b/docs/versioned_docs/version-5.17/fragments/config-deployments.mdx deleted file mode 100644 index 9e8c34ce4e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-deployments.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -deployments: # struct[] | Array of deployments -- name: my-deployment # string | Name of the deployment - namespace: "" # string | Namespace to deploy to (Default: "" = namespace of the active namespace/Space) - helm: ... # struct | Use Helm as deployment tool and set options for Helm - kubectl: ... # struct | Use "kubectl apply" as deployment tool and set options for kubectl -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-dev.mdx b/docs/versioned_docs/version-5.17/fragments/config-dev.mdx deleted file mode 100644 index 04b77d614e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-dev.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```yaml -dev: # struct | Options for "devspace dev" - ports: [] # struct[] | Array of port-forwarding settings for selected pods - open: [] # struct[] | Array of auto-open settings - sync: [] # struct[] | Array of file sync settings for selected pods - logs: ... # struct | Options for configuring multi-container log streaming - autoReload: ... # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - interactive: ... # struct | Options for configuring the interactive mode -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-hooks.mdx b/docs/versioned_docs/version-5.17/fragments/config-hooks.mdx deleted file mode 100644 index e48fb415a0..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-hooks.mdx +++ /dev/null @@ -1,36 +0,0 @@ -```yaml -hooks: # struct[] | Array of hooks to be executed. A hook can only have either one of the following fields defined: - # | - hooks[*].command which will either execute a command locally or remotely in a container - # | - hooks[*].upload which will upload files or folders into a container - # | - hooks[*].download which will download files or folder from a container - # | - hooks[*].wait which will wait for a container to become running or terminate - # | - hooks[*].logs which will print the logs for a certain container -- name: "my-hook-name" # string | Optional string stating the name of this hook configuration - events: ["before:deploy"] # struct | Events at which this hook should get executed - command: "echo Hello World!" # string | Command to be executed when this hook is triggered (if no args a specified, will be executed in a golang shell) - args: [] # string[] | (Optional) Array of arguments for the command of this hook. If this is specified, command has to be present in PATH - upload: # struct | If defined will upload files or folders into the container. - localPath: ./test # string | The local path of the file or folder - containerPath: /app # string | The remote path where to upload the file or folder into - download: # struct | If defined will download files or folders from the container. - containerPath: /app # string | The remote path where to download the file or folder from - localPath: ./test # string | The local path where to download the file or folder - logs: # struct | If logs is defined will print the logs of the target container. This is useful for containers - # | that should finish like init containers or job pods. Otherwise this hook will never terminate. - tailLines: /app # int | If set, the number of lines from the end of the logs to show - wait: # struct | If wait is defined the hook will wait until the matched pod or container is running or is terminated - # | with a certain exit code. - running: true # bool | If running is true, will wait until the matched containers are running. Can be used together with terminatedWithCode. - terminatedWithCode: 0 # int | If terminatedWithCode is not nil, will wait until the matched containers are terminated with the given exit code. - # | If the container has exited with a different exit code, the hook will fail. Can be used together with running. - timeout: 150 # int | Timeout of seconds to wait for matched containers to reach the given state until the hook will fail. - os: darwin # string | If specified then this hook is only executed on the given operating system - background: false # bool | If true DevSpace will not wait for the command to finish and directly move on - silent: false # bool | If true DevSpace will not print any command output to the console - container: # struct | If specified, DevSpace will run the command in the container instead of locally - imageSelector: nginx # string | Image of a container by which DevSpace should select the pod - labelSelector: ... # struct | Key Value map of labels and values to select pods with - containerName: "" # string | Container name to use after selecting a pod - namespace: "" # string | Kubernetes namespace to select pods in - once: "" # bool | If true the command will execute once - unless the targeted container is restarted and the hook is re-executing according to its lifecycle events (default false) -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-images.mdx b/docs/versioned_docs/version-5.17/fragments/config-images.mdx deleted file mode 100644 index bbe9866f5a..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-images.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${DEVSPACE_GIT_COMMIT} - - random-#### # | Each hashtag is replaced with a random character during building - dockerfile: ./Dockerfile # string | Relative path to the Dockerfile used for building (Default: ./Dockerfile) - context: ./ # string | Relative path to the context used for building (Default: ./) - entrypoint: [] # string[] | Override ENTRYPOINT defined in Dockerfile - cmd: [] # string[] | Override CMD defined in Dockerfile - createPullSecret: true # bool | Create a pull secret containing your Docker credentials (Default: false) - rebuildStrategy: '' # string | One of [always, ignoreContextChanges] which determines when DevSpace rebuilds the image - injectRestartHelper: true # bool | If true will inject the restart helper into the container to restart the container automatically - restartHelperPath: ./script.sh # string | If configured devspace will inject this script into the container and wrap the ENTRYPOINT around this - appendDockerfileInstructions: # string[] | Dockerfile instructions that should be appended for the current build - - USER root - build: ... # struct | Build options for this image - image2: ... -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-profiles.mdx b/docs/versioned_docs/version-5.17/fragments/config-profiles.mdx deleted file mode 100644 index 767fe2723d..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-profiles.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```yaml -profiles: # struct[] | Array of config profiles -- name: profile-name # string | Name of the profile - parents: - - profile: parent-profile # string | Name of the parent of this profile (profile inheritance) - source: # | Optional source where to find the profile - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository to retrieve the profile from - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer or an URL to a devspace.yaml - merge: {} # struct | Merge the provided object into the config - patches: # struct[] | Array of config patches - - op: "replace" # enum | Patch operation (replace, add, remove) - path: "images.backend.cmd" # string | Jsonpath or xpath to config option that should be patched - value: "" # arbitrary | Value to use for patch operation - replace: # struct | Array of replacements for entire config sections - images: {} # struct | Replacement for entire `images` section - deployments: {} # struct | Replacement for entire `deployments` section - dev: {} # struct | Replacement for entire `dev` section - dependencies: {} # struct | Replacement for entire `dependencies` section - hooks: {} # struct | Replacement for entire `hooks` section -``` diff --git a/docs/versioned_docs/version-5.17/fragments/config-vars.mdx b/docs/versioned_docs/version-5.17/fragments/config-vars.mdx deleted file mode 100644 index 4de01ec20c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/config-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -```yaml -vars: # struct[] | Array of config variables -- name: CONFIG_VAR # string | Name of the config variable - value: my-value # any | The fixed value of the config variable - question: "What is CONFIG_VAR?" # string | Question to ask the user if no value is found for variable - options: [] # string[] | Options for picker (selector) to show to user (to choose a value for variable) - noCache: false # bool | Disable caching and prompt for value on every run. - password: false # bool | Hide user input when providing value via command-line, i.e. replaces input with `*****` (Default: false) - validationPattern: "" # string | Regexp to validate user input - validationMessage: "" # string | Message to show to user for input validation - default: "" # any | Default value for variable - source: "all" # enum | Source for variable (all = default, env, input, command) - command: "" # string | If specified will retrieve the variable from the command - args: [] # string[] | The arguments for the command to retrieve the variable from - commands: - - command: "" # string | Os specified command to retrieve the variable from - args: [] # string[] | The arguments for the os specific command - os: darwin # string | The os to execute this command on -``` diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-ignoreDependencies.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-ignoreDependencies.mdx deleted file mode 100644 index 43fbfdfd5f..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-ignoreDependencies.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `ignoreDependencies` option expects a boolean that defines if the dependencies of this dependencies should not be resolved and deployed. - -:::info -Using `ignoreDependencies` can be useful to prevent problematic **circular dependencies**. -::: - -#### Default Value For `ignoreDependencies` -```yaml -ignoreDependencies: false -``` - -#### Example: Ignore Dependencies of Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - ignoreDependencies: true -``` diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-name.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-name.mdx deleted file mode 100644 index 113b05ec86..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-name.mdx +++ /dev/null @@ -1,10 +0,0 @@ -The `name` option is optional and expects a string stating the name of this dependency. - -:::note -Adding a `name` for a dependency makes it possible to reference the dependency using flags, e.g. -```bash -devspace deploy --dependency=[name] -devspace purge --dependency=[name] -devspace render --dependency=[name] -``` -::: diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-namespace.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-namespace.mdx deleted file mode 100644 index 7b19c52545..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-namespace.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `namespace` option is optional and expects a string stating a namespace that should be used to deploy the dependency to. - -:::note -By default, DevSpace deploys project dependencies in the same namespace as the project itself. -::: - -:::info -You should only use the `namespace` option if you are an advanced user because using this option requires any user that deploys this project to be able to create this namespace during the deployment process or to have access to the namespace with the current kube-context, if the namespace already exists. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-overwrite-vars.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-overwrite-vars.mdx deleted file mode 100644 index 9c3272671e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-overwrite-vars.mdx +++ /dev/null @@ -1,54 +0,0 @@ -The `overwriteVars` option is optional and expects a boolean. If this option is enabled it will overwrite all defined variables within the dependency config with the values of the variables defined in the base config. Variables that are not used or not defined within the base config aren't overwritten in the dependency config. - -For example: -```yaml -# devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-base-value -- name: DEFINED_AND_NOT_USED - value: my-other-base-value -dependencies: -- name: dep1 - source: - path: dep1 - overwriteVars: true - # If overwriteVars is true, all variables that are used within this - # config are passed to the dependency and will overwrite the values of variables with - # the same name there. In this case only the variable DEFINED_AND_USED - # will be passed to the dependency, as DEFINED_AND_NOT_USED is not used within the config. - # overwriteVars: true - # - # If you want to pass the variable DEFINED_AND_NOT_USED to the dependency as well, - # you can either use it somewhere within the config or explicitly pass it to the dependency with vars. - # vars: - # - name: DEFINED_AND_NOT_USED - # value: ${DEFINED_AND_NOT_USED} -deployments: -- name: deployment - helm: - componentChart: true - values: - containers: - - image: ${DEFINED_AND_USED} -``` - -and - -```yaml -# dep1/devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-dep-value -- name: DEFINED_AND_NOT_USED - value: my-other-dep-value -deployments: - # This will be my-other-dep-value -- name: ${DEFINED_AND_NOT_USED} - helm: - componentChart: true - values: - containers: - # This will be my-base-value - - image: ${DEFINED_AND_USED} -``` diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-profile.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-profile.mdx deleted file mode 100644 index c239f9232c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-profile.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `profile` option expects a string with the name of a profile defined in the `devspace.yaml` of this dependency. When configuring this option, this profile will be used to deploy the dependency, i.e. the dependency will be deployed similar to running `devspace deploy -p [profile]` within the folder of the dependency. - -#### Example: Use Config Profile for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - profile: production -``` diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-skipBuild.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-skipBuild.mdx deleted file mode 100644 index 96fee3ea55..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-skipBuild.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `skipBuild` option expects a boolean that defines if the image building process should be skipped when deploying this dependency. This is often useful if you rather want to use the tags that are defined in the deployment files (e.g. manifests or helm charts) which may reference more stable, production-like versions of the images. - -:::info -Using `skipBuild` is useful when trying to speed up the dependency deployment process, especially when working with many dependencies that frequently change. -::: - -#### Default Value For `skipBuild` -```yaml -skipBuild: false -``` - -#### Example: Skip Build for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - skipBuild: true -``` diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-vars.mdx b/docs/versioned_docs/version-5.17/fragments/dependency-vars.mdx deleted file mode 100644 index 9348f9e66e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/dependency-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -The `vars` option expects an array of objects with name and value of variables defined in the `devspace.yaml` of this dependency. When configuring this option, the variables will be overriden similar to passing variables via the `--var` flag to devspace. -It is also useful to deploy the same dependency multiple times with just small adjustments. - -#### Example: Override Config Vars for Dependency -```yaml -# This will deploy the api server two times with -# different variable configurations -dependencies: -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-1 -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-2 -``` diff --git a/docs/versioned_docs/version-5.17/fragments/faq-image-context.mdx b/docs/versioned_docs/version-5.17/fragments/faq-image-context.mdx deleted file mode 100644 index ca104f7443..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/faq-image-context.mdx +++ /dev/null @@ -1,10 +0,0 @@ -
-What does "context" mean in terms of image building? - -
- -The context is archived and sent to the Docker daemon before starting to process the Dockerfile. All references of local files within the Dockerfile are relative to the root directory of the context. - -That means that a Dockerfile statement such as `COPY ./src /app` would copy the folder `src/` within the context path into the path `/app` within the container image. So, if the context would be `/my/project/database`, for example, the folder that would be copied into `/app` would have the absolute path `/my/project/database/src` on your local computer. - -
diff --git a/docs/versioned_docs/version-5.17/fragments/info-component-chart.mdx b/docs/versioned_docs/version-5.17/fragments/info-component-chart.mdx deleted file mode 100644 index 298ca4cdf0..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/info-component-chart.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::info Component Chart Docs -The component chart is a flexible Helm chart for deploying custom applications in a standardized manner. Learn more in the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/install-cli.mdx b/docs/versioned_docs/version-5.17/fragments/install-cli.mdx deleted file mode 100644 index 77f86a4251..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/install-cli.mdx +++ /dev/null @@ -1,88 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - -DevSpace is a client-only binary. It is super lightweight, does not require any server-side component, and it does not have any dependencies. - - - - -```bash -npm install -g devspace -``` - - - - -```bash -yarn global add devspace -``` - - - - -```bash -brew install devspace -``` - - - - -```bash -# AMD64 / Intel -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 / Silicon Mac -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```bash -# AMD64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```powershell {4} -md -Force "$Env:APPDATA\devspace"; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'; -Invoke-WebRequest -UseBasicParsing ((Invoke-WebRequest -URI "https://github.com/loft-sh/devspace/releases/latest" -UseBasicParsing).Content -replace "(?ms).*`"([^`"]*devspace-windows-amd64.exe)`".*","https://github.com/`$1") -o $Env:APPDATA\devspace\devspace.exe; -$env:Path += ";" + $Env:APPDATA + "\devspace"; -[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User); -``` - -:::info Check Environment Variable $PATH -Line 4 of this install script adds the install directory `%APPDATA%\devspace` to the `$PATH` environment variable. This is only effective for the current powershell session, i.e. when opening a new terminal window, `devspace` may not be found. - -**Make sure to add the folder `%APPDATA%\devspace` to the `PATH` environment variable after installing DevSpace via Powershell. Afterwards, a reboot might be necessary.** - -To confirm that DevSpace is successfully installed, reboot and test via: -```bash -devspace --version -``` -::: - - - - -Alternatively, you can simply download the binary for your platform from the [GitHub Releases](https://github.com/loft-sh/devspace/releases) page and add this binary to your PATH. diff --git a/docs/versioned_docs/version-5.17/fragments/kube-context.mdx b/docs/versioned_docs/version-5.17/fragments/kube-context.mdx deleted file mode 100644 index f1eb89c0ce..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kube-context.mdx +++ /dev/null @@ -1,114 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Step from '@site/src/components/Step/Step'; -import FragmentTipUseNamespace from './tip-use-namespace.mdx'; -import FragmentNoteCreateSpace from './note-create-space.mdx'; - - - - -:::note Local Clusters -Local clusters run on your local dev machine and include: minikube, kind, k3s, mikrok8s etc. -::: - -If you want to deploy to a local Kubernetes cluster, make sure your **current kube-context** points to this cluster and tell DevSpace which namespace to use: - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -:::note Remote Clusters -Remote clusters run in a cloud or private data center and include: GKE, EKS, AKS, bare metal etc. -::: - - - - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -#### Kubernetes multi-tenancy - -One of the options for setting up a multi-tenant Kubernetes environment would be to use [Loft](https://loft.sh/). -It allows the developers to create isolated Kubernetes environments in a self-service fashion. - -[Loft](https://loft.sh/) offers a wide range of features to facilitate multi-tenancy in Kubernetes. One of such features is the ability to create [Virtual Clusters](https://loft.sh/features/virtual-kubernetes-clusters) - a lightweight, fully functional and certified Kubernetes distribution that runs fully within the host cluster. - -[Loft](https://loft.sh/) also adds a resource called "Space" into your Kubernetes cluster. A "Space" is a virtual representation of a Kubernetes namespace, and we will be creating one in the steps below. - - -#### How to use Loft - -1 - -#### Setup Loft and connect your cluster - -See the [Loft getting started guide](https://loft.sh/docs/getting-started/setup) for details. - -
-2 - -#### Install the Loft plugin for DevSpace - -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -
-3 - -#### Login to Loft via DevSpace - -```bash -devspace login https://your-loft-instance.tld -``` - -
-4 - -#### Create isolated namespaces (= Spaces) - -```bash -devspace create space my-app -``` - - - -
-5 - -#### Add cluster users and allow them to create Spaces - -Learn more about how to do this in the [Loft documentation](https://loft.sh/docs/getting-started/cluster-accounts). - -
-
- -
-
diff --git a/docs/versioned_docs/version-5.17/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-5.17/fragments/kubectl-kustomize.mdx deleted file mode 100644 index a70dde2e5e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kubectl-kustomize.mdx +++ /dev/null @@ -1,21 +0,0 @@ -The `kustomize` option expects a boolean stating if DevSpace should deploy using `kustomize` (or alternatively: `kubectl apply -k`). - -:::warning -If you set `kustomize = true`, all of your `manifests` must be paths to Kustomizations. If you want to deploy some plain manifests and some Kustomizations, create multiple deployments for each of them. -::: - -#### Default Value for `kustomize` -```yaml -kustomize: false -``` - -#### Example: Kustomize -```yaml {4} -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - kustomization1/ - - glob/path/to/more/kustomizations/ -``` diff --git a/docs/versioned_docs/version-5.17/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-5.17/fragments/kubectl-options-applyArgs.mdx deleted file mode 100644 index b1ba2ed738..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kubectl-options-applyArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `applyArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl apply`. - -:::info Apply for Kustomize Deployments -Even if you set `kustomize: true`, DevSpace only renders the manifest templates using kustomize but the actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `applyArgs` -```yaml -applyArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - applyArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl apply --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.17/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-5.17/fragments/kubectl-options-cmdPath.mdx deleted file mode 100644 index 337bdb4e2a..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kubectl-options-cmdPath.mdx +++ /dev/null @@ -1,20 +0,0 @@ -The `cmdPath` option expects an array of strings stating additional flags and flag values that should be used when calling `kubectl apply`. - -:::warning -Setting `cmdPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kubectl` to your `$PATH` environment variable instead. -::: - -#### Example: Setting Path To Kubectl Binary -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - cmdPath: /path/to/kubectl -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -/path/to/kubectl apply -f backend/ -``` diff --git a/docs/versioned_docs/version-5.17/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-5.17/fragments/kubectl-options-deleteArgs.mdx deleted file mode 100644 index 70a473533c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kubectl-options-deleteArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `deleteArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl delete`. - -:::info Purging Deployments -For plain manifests or Kustomizations, DevSpace uses `kubectl delete` to remote deployments when you run the command `devspace purge`. -::: - -#### Default Value for `deleteArgs` -```yaml -deleteArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - deleteArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl delete --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.17/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-5.17/fragments/kubectl-replaceImageTags.mdx deleted file mode 100644 index aae897a71a..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/kubectl-replaceImageTags.mdx +++ /dev/null @@ -1,22 +0,0 @@ -The `replaceImageTags` option expects a boolean stating if DevSpace should replace/update all image tags before deploying the project. - -By default, DevSpace searches all your manifests for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml {4} -deployments: -- name: backend - kubectl: - replaceImageTags: false - manifests: - - backend/ -``` diff --git a/docs/versioned_docs/version-5.17/fragments/note-create-space.mdx b/docs/versioned_docs/version-5.17/fragments/note-create-space.mdx deleted file mode 100644 index d0e360b7bd..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/note-create-space.mdx +++ /dev/null @@ -1,6 +0,0 @@ -:::note Kube-Context -DevSpace automatically sets up a kube-context for this Space, so you can also access your namespace using `kubectl`, `helm` or any other Kubernetes tool. Try it: -```bash -kubectl get pods -``` -::: diff --git a/docs/versioned_docs/version-5.17/fragments/note-general-purpose-command.mdx b/docs/versioned_docs/version-5.17/fragments/note-general-purpose-command.mdx deleted file mode 100644 index 6ef545d400..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/note-general-purpose-command.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note -This command is a general purpose command which also works for any pod/container in Kubernetes even if you are not within a DevSpace project. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/profiles-apply-multiple.mdx b/docs/versioned_docs/version-5.17/fragments/profiles-apply-multiple.mdx deleted file mode 100644 index a0b6b3dace..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/profiles-apply-multiple.mdx +++ /dev/null @@ -1,11 +0,0 @@ -:::tip Apply Multiple Profiles with Flags - -It is possible to apply multiple profiles in a single command with the `--profile` flag. This flag can take one or multiple profiles that will be applied in the order that they are specified. - -Example: -``` -# Apply profile1, profile2 and profile3 in this order -devspace print --profile profile1 --profile profile2 --profile profile3 -``` - -::: \ No newline at end of file diff --git a/docs/versioned_docs/version-5.17/fragments/selector-image-selector.mdx b/docs/versioned_docs/version-5.17/fragments/selector-image-selector.mdx deleted file mode 100644 index 1241bb350c..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/selector-image-selector.mdx +++ /dev/null @@ -1,35 +0,0 @@ -The `imageSelector` option expects a string that specifies an image (e.g. `my-registry.com/lib/my-image:tag`) to select a target pod and container with. The newest running pod that has a container which matches this image will be selected by DevSpace. - -In addition, you can also reference images from the `images` section in the `imageSelector` with: -- If the image in `imageSelector` matches a `images.*.image`, DevSpace will automatically append the latest built tag during runtime to the `imageSelector`. -- You can also let DevSpace resolve the target image and tag by using the helpers `image()` or `tag()` - -For example: -```yaml -images: - app: - image: my-registry.com/lib/my-image -dev: - ... - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/other-image:latest - - imageSelector: my-registry.com/lib/other-image:latest - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: my-registry.com/lib/my-image - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(my-registry.com/lib/my-image):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:custom-tag - - imageSelector: image(app):custom-tag - # DevSpace will search for the newest pod with a container that - # uses my-registry.com/lib/my-image:xxxxx (latest built tag by DevSpace) - - imageSelector: image(app):tag(app) - # DevSpace will search for the newest pod with a container that - # uses the image of app of dependency dep1 with the latest built tag by DevSpace - - imageSelector: image(dep1.app):tag(dep1.app) -``` - - - diff --git a/docs/versioned_docs/version-5.17/fragments/selector-label-selector.mdx b/docs/versioned_docs/version-5.17/fragments/selector-label-selector.mdx deleted file mode 100644 index fad0db8fad..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/selector-label-selector.mdx +++ /dev/null @@ -1 +0,0 @@ -The `labelSelector` option expects a key-value map of strings with Kubernetes labels. This can be used to select the correct target pod with labels instead of the image name like `imageSelector` or `imageName`. If the pod you want to select has multiple containers, make sure to use `containerName` as well. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.17/fragments/start-app.mdx b/docs/versioned_docs/version-5.17/fragments/start-app.mdx deleted file mode 100644 index 8799c2f6c1..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/start-app.mdx +++ /dev/null @@ -1,83 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - - -```bash -npm start -# or: npm run dev -# or: yarn start -``` - - - - -```bash -python main.py -``` - - - - -```bash -bundle exec rails server -p 3000 -b 0.0.0.0 -``` - - - - -```bash -go run main.go -``` - - - - -```bash -./build.sh run -``` - - - - -```bash -# Your application may already be running -# Try to open the browser on localhost to access it - -# You can also run other commands now: -php ... -composer ... -ps aux -``` - - - - -```bash -dotnet run -``` - - - - -```bash -# Whatever command is needed to start your application -``` - - - diff --git a/docs/versioned_docs/version-5.17/fragments/tip-print-config.mdx b/docs/versioned_docs/version-5.17/fragments/tip-print-config.mdx deleted file mode 100644 index 0be65df779..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/tip-print-config.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The following command is useful to verify that the profile modifies the config as intended: -```bash -devspace print -p profile-1 -p profile-2 -``` -The above command would print the config after applying all profile `patches` and `replace` statements from `profile-1` first and then `profile-2`. diff --git a/docs/versioned_docs/version-5.17/fragments/tip-use-namespace.mdx b/docs/versioned_docs/version-5.17/fragments/tip-use-namespace.mdx deleted file mode 100644 index 91299c6d90..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/tip-use-namespace.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::tip Kube-Context Namespace -Running the command above will change the default namespace of your kube-context, i.e. instead of using the `default` namespace, `kubectl` and other tools will now use a different namespace when working with this kube-context. That also means, you will not always need to use the `--namespace / -n` flag. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/vars-default.mdx b/docs/versioned_docs/version-5.17/fragments/vars-default.mdx deleted file mode 100644 index ccff61b813..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/vars-default.mdx +++ /dev/null @@ -1,27 +0,0 @@ -The `default` option expects a string, integer or boolean defining the default value for the variable. You can also use other variables in a default value, with one of the following conditions being true: -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable - -:::note Type Casting -If a default value is specified, DevSpace will assume the type of the default value as the type for the variable, i.e. when `default: "123"` is defined and a value of `123` (int) is provided it would be casted to `"123"` (string). To explicitly use the value of a variable as a string within `devspace.yaml`, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: - -Example: -```yaml -images: - default: - image: ${IMAGE} -vars: - - name: IMAGE_REPOSITORY - default: myrepository - source: none - - name: IMAGE_NAME - default: devspace - source: none - - name: IMAGE - default: ${IMAGE_REPOSITORY}/${IMAGE_NAME} - source: none - - name: NAMESPACE - default: ${DEVSPACE_NAMESPACE} - source: none -``` diff --git a/docs/versioned_docs/version-5.17/fragments/vars-force-string.mdx b/docs/versioned_docs/version-5.17/fragments/vars-force-string.mdx deleted file mode 100644 index 524029a624..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/vars-force-string.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note Variable Type -By default, the type (string, int, bool) of variable will be determined by the type of its `default` value (if defined) or automatically detected if no default value is defined. To explicitly use the value of a variable as a string, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/vars-name.mdx b/docs/versioned_docs/version-5.17/fragments/vars-name.mdx deleted file mode 100644 index 49014a7d7e..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/vars-name.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The `name` option expects a string stating the name of the config variable that will be used to reference it within the remainder of the configuration. - -:::info Must be unique -The `name` of a config variable must be unique and is mandatory when defining a config variable. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/warning-build-tool-priority.mdx b/docs/versioned_docs/version-5.17/fragments/warning-build-tool-priority.mdx deleted file mode 100644 index f709c200df..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/warning-build-tool-priority.mdx +++ /dev/null @@ -1,7 +0,0 @@ -:::warning Build Tool Priority -If you specify multiple build tools, DevSpace will try to use them in the following order: -1. `disabled` -2. `custom` -3. `docker` (uses kaniko as fallback if Docker host not reachable) -4. `kaniko` -::: diff --git a/docs/versioned_docs/version-5.17/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-5.17/fragments/warning-multiple-dev.mdx deleted file mode 100644 index 652cdbedd9..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/warning-multiple-dev.mdx +++ /dev/null @@ -1,8 +0,0 @@ -:::warning -It is highly discouraged to run `devspace dev` multiple times in parallel because multiple instances of port forwarding and file synchronization will disturb each other. Instead: - -- Run `devspace enter` to open additional terminal sessions without port forwarding and file sync -- Run `devspace logs` to start log streaming without port forwarding and file sync -- Run `devspace sync` to sync files on-demand without starting port forwarding etc. -- Run `devspace ui` to open the localhost development UI in the browser -::: diff --git a/docs/versioned_docs/version-5.17/fragments/workflow-build-images.mdx b/docs/versioned_docs/version-5.17/fragments/workflow-build-images.mdx deleted file mode 100644 index fc3261d5d8..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/workflow-build-images.mdx +++ /dev/null @@ -1 +0,0 @@ -DevSpace triggers the image building process for the images specified in the `images` section of the `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.17/fragments/workflow-deploy-dependencies.mdx b/docs/versioned_docs/version-5.17/fragments/workflow-deploy-dependencies.mdx deleted file mode 100644 index dc4766551b..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/workflow-deploy-dependencies.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace loads the `dependencies` section from the `devspace.yaml` and creates a dependency tree. The current project will represent the root of this tree. Based on this dependency tree, DevSpace will start from the leaves and run these steps for each dependency: -- Build images of the dependency as configured in the `images` section of the dependency's `devspace.yaml` (unless `skipBuild: true`) -- Deploy the dependency as configured in the `deployments` section of the dependency's `devspace.yaml` - -:::note What are Dendencies? -Dependencies allow you to deploy microservices, that the project you are currently deploying relies on. Dependencies can be located in a subpath of your project or they can be automatically loaded from a different git repository. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/workflow-deploy-project.mdx b/docs/versioned_docs/version-5.17/fragments/workflow-deploy-project.mdx deleted file mode 100644 index cc11700257..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/workflow-deploy-project.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace iterates over every item in the `deployments` array defined in the `devspace.yaml` and deploys each of the deployments using the respective deployment tool: -- `kubectl` deployments will be deployed with `kubectl` (optionally using `kustomize` if `kustomize: true`) -- `helm` deployments will be deployed with the `helm` client that comes in-built with DevSpace - -:::info kubectl Required -Deployments with `kubectl` require `kubectl` to be installed. -::: diff --git a/docs/versioned_docs/version-5.17/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-5.17/fragments/workflow-open-links.mdx deleted file mode 100644 index cb54a95ec2..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/workflow-open-links.mdx +++ /dev/null @@ -1,4 +0,0 @@ - -1. DevSpace starts to periodically send `HTTP GET` requests to the URLs provideded via `dev.open[*].url`. -2. As soon as the first HTTP response has a status code which is neither 502 (Bad Gateway) nor 503 (Service Unavailable), DevSpace assumes that the application is now started, stops sending any further requests and opens the provided URL in the browser. -3. If the URL is still returning status code 502 or 503 after 4min, DevSpace will stop trying to open it. To not disturb the log streaming or the interactive terminal session, DevSpace will not show an error when hitting the 4min timeout. diff --git a/docs/versioned_docs/version-5.17/fragments/workflow-replace-tags.mdx b/docs/versioned_docs/version-5.17/fragments/workflow-replace-tags.mdx deleted file mode 100644 index 7c5a7300d2..0000000000 --- a/docs/versioned_docs/version-5.17/fragments/workflow-replace-tags.mdx +++ /dev/null @@ -1,13 +0,0 @@ -After finishing the image building process, DevSpace searches your deployments for references to the images that are specified in the `images` section of the `devspace.yaml`. If DevSpace finds that an image is used by one of your deployments and the deployment does not explicitly define a tag for the image, DevSpace will append the tag that has been auto-generated as part of the automated image tagging during the image building process. - -:::warning Prevent Hard-Coded Tags -To use automated tag replacement, make sure you do **not** specify image tags in the deployment configuration. -::: - -Replacing or appending tags to images that are used in your deployments makes sure that your deployments are always started using the most recently pushed image tag. This automated process saves a lot of time compared to manually replacing image tags each time before you deploy something. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **image(image-key)** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name`. You can also use dependency images here with `image(dep1.dep-image)` -- **tag(image-key)** that corresponds to a `images.*` key, will be rewritten to `generated_tag`. You can also use dependency images here with `tag(dep1.dep-image)` - diff --git a/docs/versioned_docs/version-5.17/getting-started/cleanup.mdx b/docs/versioned_docs/version-5.17/getting-started/cleanup.mdx deleted file mode 100644 index 8b7f52208e..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/cleanup.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Cleanup -sidebar_label: 5. Cleanup ---- - -To tell DevSpace to remove the deployments from your cluster again, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.17/getting-started/deployment.mdx b/docs/versioned_docs/version-5.17/getting-started/deployment.mdx deleted file mode 100644 index 4995196d3c..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/deployment.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Deployment ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; - - -Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. - -
- -
DevSpace CLI - Deployment
-
- - -## Kube-Context & Namespace -For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. - - - - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -p production -``` - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -Running `devspace deploy -p production` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Understand Profiles -As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. - -Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). - -By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: -```yaml -profiles: -- name: production - patches: - - op: remove - path: images.app.build.disabled -``` - -You can print the config after a profile has been applied to see what the profile actually changes: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: -```bash -devspace dev -p start-debugger -``` diff --git a/docs/versioned_docs/version-5.17/getting-started/development.mdx b/docs/versioned_docs/version-5.17/getting-started/development.mdx deleted file mode 100644 index a44cbdc581..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/development.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Development with DevSpace -sidebar_label: 3. Development ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; -import StartAppFragment from '../fragments/start-app.mdx'; -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; - -DevSpace allows you to develop applications directly inside a Kubernetes cluster. - -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. - -
- -
DevSpace - Development Mode
-
- - -## Kube-Context & Namespace -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. - - - - -## Start Development Mode -Run the following command to start the development mode: -```bash -devspace dev -``` - - -Running `devspace dev` will do the following: - -1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) -2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) -3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) -4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) -5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container - -Once the terminal session starts, run the command to start your application: - - - - - -
- -## Workflows - -### 1. File Sync -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. - -**Try it and just edit a file!** - - -### 2. DevSpace UI -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) - -
- -
DevSpace - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: - - -## Notes - - diff --git a/docs/versioned_docs/version-5.17/getting-started/initialize-project.mdx b/docs/versioned_docs/version-5.17/getting-started/initialize-project.mdx deleted file mode 100644 index 8d1cedbb1b..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/initialize-project.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Initialize a Project -sidebar_label: 2. Initialize Project ---- - -import ChooseProjectFragment from '../fragments/choose-project.mdx'; - -## Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - - -
- -## Initialize Your Project -Run this command in your project directory to create a `devspace.yaml` config file for your project: -```bash -devspace init -``` - -```bash - - ____ ____ - | _ \ _____ __/ ___| _ __ __ _ ___ ___ - | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \ - | |_| | __/\ V / ___) | |_) | (_| | (_| __/ - |____/ \___| \_/ |____/| .__/ \__,_|\___\___| - |_| - - -? How do you want to deploy this project? [Use arrows to move, type to filter] -> helm: Use Component Helm Chart [QUICK START] (https://devspace.sh/component-chart/docs) - helm: Use my own Helm chart (e.g. local via ./chart/ or any remote chart) - kubectl: Use existing Kubernetes manifests (e.g. ./kube/deployment.yaml) - kustomize: Use an existing Kustomization (e.g. ./kube/kustomization/) -``` - -DevSpace will ask you a couple of questions about this project and then generate a `devspace.yaml` for you to start with. If you are using the quickstart projects, choose `Component Helm Chart` for the first question. - -After running `devspace init`, you will see a `devspace.yaml` file in your project which should look like this: -```yaml -version: v1beta10 - -# `images` specifies all images that may need to be built for this project -images: - app: # This image is called `app` and this name `app` is referenced multiple times in the config below - image: registry.tld/username/image - dockerfile: ./Dockerfile - build: - disabled: true - -# `deployments` tells DevSpace how to deploy this project -deployments: -- name: quickstart-kubectl - # This deployment uses `kubectl` but you can also define `helm` deployments - kubectl: - manifests: - - kube/deployment.yaml -# OR: -- name: quickstart-helm # Name of this deployment - helm: # Deploy using Helm - componentChart: true # Use the Component Helm Chart - values: # Override Values for chart (can also be set using valuesFiles option) - containers: # Defines an array of containers that run in the same pods started by this component - - image: image(app):tag(app) # Image of this container - service: # Expose this component with a Kubernetes service - ports: # Array of container ports to expose through the service - - port: 3000 # Exposes container port 3000 on service port 3000 - -# Settings for development mode (will be explained later) -dev: ... - -# Settings for development mode (will be explained later) -profiles: ... -``` diff --git a/docs/versioned_docs/version-5.17/getting-started/installation.mdx b/docs/versioned_docs/version-5.17/getting-started/installation.mdx deleted file mode 100644 index 6a04d2ece3..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/installation.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Install DevSpace -sidebar_label: 1. Download CLI ---- - -import InstallFragment from '../fragments/install-cli.mdx'; - - diff --git a/docs/versioned_docs/version-5.17/getting-started/next-steps.mdx b/docs/versioned_docs/version-5.17/getting-started/next-steps.mdx deleted file mode 100644 index b47c788da0..0000000000 --- a/docs/versioned_docs/version-5.17/getting-started/next-steps.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Next Steps -sidebar_label: 6. Next Steps ---- - -## Loft Plugin For Teams -If you plan to use DevSpace with your team, make sure to check out [www.loft.sh](https://loft.sh) and the Loft plugin for DevSpace, which you can install using this command: -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -Loft allows you to efficiently share Kubernetes clusters with a large number of engineers rather than letting everyone set up their own cluster and having to struggle to manage and administrate it on their own. - -Installing the Loft plugin will add commands like these to DevSpace: -```bash -devspace login # to login to Loft via DevSpace -devspace create space my-namespace # for creating namespace on-demand via Loft -devspace create vcluster my-vcluster # for creating virtual Kubernetes clusters via Loft -``` - -## Guides -- [Onboarding Guide](../guides/basics.mdx) to share with the rest of your team -- [Network & Domains Guide](../guides/networking-domains.mdx) -- [CI/CD Integration Guide](../guides/ci-cd-integration.mdx) - -## Best Practices -- [Image Building](../guides/image-building.mdx) -- [Dev vs Staging vs Production](../guides/dev-staging-production.mdx) -- [Remote Debugging](../guides/remote-debugging.mdx) diff --git a/docs/versioned_docs/version-5.17/guides/basics.mdx b/docs/versioned_docs/version-5.17/guides/basics.mdx deleted file mode 100644 index 49055f2690..0000000000 --- a/docs/versioned_docs/version-5.17/guides/basics.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Onboarding Guide -sidebar_label: Onboarding ---- - -## View Help & Flags -To see help information and a list of all flags for any command, simply use the `-h` flag: -```bash -devspace -h # Shows all major commands and flags -devspace dev -h # Shows sub-commands and specific flags for this command -``` - -
- ---- - - -## Project-Specific Commands - -:::note devspace.yaml required -The project-specific commands require that your project is already [initialized](../getting-started/initialize-project.mdx), i.e. there is a `devspace.yaml` config file. -::: - - -### Start Development -This command deploys the project and then starts the development mode: -```bash -devspace dev -``` - - -### Deploy Project -This command deploys the project to Kubernetes: -```bash -devspace deploy # -p / --profile production => see: devspace list profiles -``` - -Run this command to just build, tag and push all images to a registry without deploying the project: -```bash -devspace build -``` - - -### Port Forwarding -To get a list of all ports that are being forwarded as defined in `devspace.yaml`, run: -```bash -devspace list ports -``` - - -### Commands -This command lists all available command: -```bash -devspace list commands -``` - -Use this command to run one of the custom commands: -```bash -devspace run command [command-name] -- --some-flag --another-flag=value -``` - - -### Profiles -This command lists all available profiles: -```bash -devspace list profiles -``` - -Use this command to switch to a different profile: -```bash -devspace use profile [optional:profile-name] -``` - -Use the `-p` flag to just run a single command with a different profile without switching it permanently: -```bash -devspace deploy -p [profile-name] -``` - -Use this command to print the config after a profile has been applied: -```bash -devspace print -p [profile-name] -``` - - -### Variables -This command lists all variables as well as their values: -```bash -devspace list vars -``` - -To change the value of a variable, run: -```bash -devspace set var VAR_NAME=value # VAR_NAME_2=value2 VAR_NAME_3=value3 -``` - -Use this command to reset all variables, i.e. delete variable values from the variable cache: -```bash -devspace reset vars -``` - -Use this command to print the config after all variables have been replaced: -```bash -devspace print -``` - - -### Dependencies -Use this command to update git-based dependencies: -```bash -devspace update dependencies -``` -This command performs a `git fetch && git pull` for all git-based dependencies. - -Use this command to clear the dependencies cache: -```bash -devspace reset dependencies -``` - - -### Open Project -This command opens the current project in the browser: -```bash -devspace open -``` - -:::note Must be deployed -This command requires that the project has already been deployed. -::: - -
- ---- - -## General Purpose Commands - -### Open UI -This command opens the localhost development UI: -```bash -devspace ui -``` -:::note Development Mode -The localhost development UI starts automatically in the background when running: `devspace dev` -::: - - -### Stream Logs -This command streams logs of a container: -```bash -devspace logs -``` - - -### Terminal & Commands -This command opens an interactive terminal session for a container: -```bash -devspace enter -``` - -To run just a single command inside a container, use: -```bash -devspace enter -- my-command --my-flag=my-value ... -``` - - -### File Sync -This command starts an on-demand file synchronization between localhost and a container: -```bash -devspace sync -``` - -:::note Development Mode -If file sync is configured in your project, it automatically starts when running: `devspace dev` -::: - - - -
- ---- - - -## Clusters & Namespaces -This command sets a different namespace as default namespace for the current kube-context/cluster: -```bash -devspace use namespace [optional:namespace] -``` - -:::info Not for Spaces -The command `devspace use namespace` does **not** work for Loft spaces. Use `devspace use space` instead. -::: - -This command creates a new space using Loft: -```bash -devspace create space [space-name] -``` - -This command switches to a different spaces: -```bash -devspace use space [optional:space-name] -``` - -This command switches to a different kube-context/cluster: -```bash -devspace use context [optional:context-name] -``` - - - -
- -## Advanced - -### Clean up Images -When using Docker for image building, disk space on your local computer can get sparse after a lot of Docker builds. DevSpace provides a convenient command to clean up all images that were built with your local Docker daemon using DevSpace. This command does not remove any pushed images remotely and just clears local images and space. - -In order to clean up all created images locally, simply run the following command in your project folder: -```bash -devspace cleanup images -``` - -### Clean up Docker -In addition, it also makes sense to prune your Docker environment to free additional space with the following command: - -```bash -docker system prune -``` - -This command will remove: -- all stopped containers -- all networks not used by at least one container -- all dangling images -- all build cache - -These commands should free up a lot of space for new image builds to come. diff --git a/docs/versioned_docs/version-5.17/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-5.17/guides/ci-cd-integration.mdx deleted file mode 100644 index 099c3b5799..0000000000 --- a/docs/versioned_docs/version-5.17/guides/ci-cd-integration.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: CI/CD Integration -sidebar_label: CI/CD Integration ---- - -DevSpace is designed to work in non-interactive environments the same way it does in interactive environments. To use DevSpace inside a CI/CD pipeline, simply install it as part of your pipeline or start the pipeline with a VM or container image that already contains DevSpace and run any of the DevSpace commands. - -## Docker Image -DevSpace provides an official Docker image that [can be found on Docker Hub](https://hub.docker.com/r/devspacesh/devspace). The Dockerfile for this image is [available on GitHub](https://github.com/loft-sh/devspace/blob/master/Dockerfile). - -Use this image as shown here: -```bash -docker run devspacesh/devspace devspace [command] [args] -``` - -#### Example: Get Version -```bash -docker run devspacesh/devspace devspace --version -``` - -#### Example: Deployment -```bash -docker run -v ${PWD}:/project -w /project devspacesh/devspace devspace deploy -``` -1. Mounts current working directory into `/project` within the container -2. Sets `/project` as working dir -3. Runs `devspace deploy` inside working dir - -#### Example: Start Interactive Terminal Session -```bash -docker run -it -v ${PWD}:/project -w /project devspacesh/devspace -``` - -
- - -## Deployment Tips - -### Avoid Pickers -If you want to run commands such as `devspace enter`, make sure you specify a label selector using `-l`, a container using `-c` etc. to make sure DevSpace can find the right pod/container without having to ask you to select one (which would lead to your pipeline getting stuck). - -### `--wait` Flag -DevSpace is configured to deploy and terminate when you run `devspace deploy`. In CI/CD pipelines, it is common to wait until the deployment is actually up and running before continuing the pipeline. You can achieve this by using `--wait`: -```bash -devspace deploy --wait --timeout=120 -``` -The above command will wait until the desired number of pods is created for all ReplicaSets and until none of the pods are failing anymore. If this is not achieved within the number of seconds specified in `--timeout`, DevSpace will exit with a fatal error. - -### Define Profiles -It is often useful to [define profiles in `devspace.yaml`](../configuration/profiles/basics.mdx) for staging, review or production deployments using CI/CD. You can deploy a project using such a profile using the `-p / --profile` flag: -```bash -devspace deploy -p production -``` - -### Separate Build & Deploy -DevSpace allows you to split up the build and deployment process into two separate commands: -```bash -devspace build # Build, tag and push images -devspace deploy --skip-build # Deploy project without rebuilding images -``` - -### Run Tests -To run unit or integration tests in your CI/CD pipeline, you have multiple options: -- [Split up build and deployment command](#separate-build--deploy) and run tests before after or in between the commands -- [Define hooks](../configuration/hooks/basics.mdx) that execute commands before/after certain image builds or deployments - -
diff --git a/docs/versioned_docs/version-5.17/guides/community-projects.mdx b/docs/versioned_docs/version-5.17/guides/community-projects.mdx deleted file mode 100644 index 3f1d93fc49..0000000000 --- a/docs/versioned_docs/version-5.17/guides/community-projects.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Community Projects -sidebar_label: Community Projects ---- - -:::note Submit Your Project -To submit a project: - -1. Make sure the project has a `LICENSE` file containing an **MIT** or **Apache 2.0** license. -2. Make sure to add a `README.md` file to your project describing what the project does and how to use it. -3. Click on the "**Edit this page**" button or follow **[this link](https://github.com/loft-sh/devspace/edit/master/docs/pages/guides/community-projects.mdx)**. -4. Add your project to the list **in alphabetical order**. -5. **Submit a pull request** containing your changes. - -❤️ Thank you! -::: - -The following projects are contributed and maintained by community members. - -|Project|Description|Maintainer| -|-|-|-| -|[nginx-auth-jwt](https://github.com/FactFiber/devspace-nginx-auth-jwt)|Auth requests through NGINX with JWT tokens|[shaunc](https://github.com/shaunc)| -|[nginx-s3](https://github.com/FactFiber/devspace-nginx-s3)|Serves static files from private S3 bucket using NGINX|[shaunc](https://github.com/shaunc)| -|[trilium](https://github.com/Addono/trilium-devspace)|Host a [trilium](https://github.com/zadam/trilium) server|[Addono](https://github.com/Addono)| diff --git a/docs/versioned_docs/version-5.17/guides/dev-staging-production.mdx b/docs/versioned_docs/version-5.17/guides/dev-staging-production.mdx deleted file mode 100644 index 3eaeaac13f..0000000000 --- a/docs/versioned_docs/version-5.17/guides/dev-staging-production.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Dev vs Staging vs Production -sidebar_label: Dev vs Staging vs Prod ---- - -To configure the differences between development, staging and production environments, there are several techniques which may be used separately or combined in certain use cases: -- For image building: - 1. Using [different Dockerfiles](../configuration/images/dockerfile-context.mdx) for each environment - 2. Using the same Dockerfile and: - - [overriding the `ENTRYPOINT` or the `CMD` of the Dockerfile](../configuration/images/entrypoint-cmd.mdx) for each environment - - using multi-stage builds and [setting the `target`](../configuration/images/docker.mdx#target) during the build process - - using [different `buildArgs`](../configuration/images/docker.mdx#buildargs) for different environments -- For deployments: - 1. Using a different `cmd` and/or `args` for your containers depending on the environment - 2. Using a different `image` name or `image` tag for your containers depending on the environment - 3. Setting different `env` variables for your containers depending on the environment - -No matter which options are working for your use case, the following DevSpace features will allow you to set up the desired differences: -- [Config Profiles & Patches](../configuration/profiles/basics.mdx) -- [Config Variables](../configuration/variables/basics.mdx) -- [Hooks](../configuration/hooks/basics.mdx) diff --git a/docs/versioned_docs/version-5.17/guides/file-synchronization.mdx b/docs/versioned_docs/version-5.17/guides/file-synchronization.mdx deleted file mode 100644 index 959848e35f..0000000000 --- a/docs/versioned_docs/version-5.17/guides/file-synchronization.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: File Synchronization -sidebar_label: File Synchronization ---- - -There are two types of file synchronzation processes: -- on-demand file sync using `devspace sync` and -- file synchronization during development mode using `devspace dev`. - - -## Start On-Demand File Sync -To establish an on-demand file synchronization between your local computer and the containers running inside Kubernetes, use the following command: -```bash -devspace sync # common flags: --local-path=./ --container-path=/app --no-watch --config=./devspace.yaml -``` -[Learn more about the `devspace sync` command.](https://devspace.cloud/blog/2019/10/18/release-devspace-v4.1.0-kubectl-cp-file-synchronization) - - -## Configure File Sync -If you want to start file synchronization every time you run `devspace dev`, you can configure it within `devspace.yaml`. - -[Learn more about configuring file synchronization using `devspace.yaml`.](../configuration/development/file-synchronization.mdx) - -
- - -## Troubleshooting - -### Check `sync.log` -DevSpace logs all sync activity in `.devspace/logs/sync.log`. Check this file to get more detailed error information. - -### Verbose Sync -DevSpace provides the flag `--verbose-sync` to print additional information while running `devspace dev`: -```bash -devspace dev --verbose-sync -``` - -For an even cleaner output (sync-only logs, without container logs), deploy your application using `devspace dev` once, then abort the dev mode and start a standalone sync process using the `--verbose` flag: -```bash -devspace sync --config=devspace.yaml --verbose -``` - -### Ignore `.git/` -The sync can fail when files are constantly being changed while they are being synchronized. DevSpace will retry failing sync attempts but for folder such as `.git/` which contain continuously changing information and files which may be locked by the IDE, we recommmend to [ignore them via the `excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) in `devspace.yaml`. - -### File Permissions -Without file write permission, the sync will not be able to work. If you start your containers (in production) using a different user than `root` and this user does not have sufficient permissions to read and write certain files, you can: -- exclude these files using the [`excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) -- exclude these files using the [`uploadExcludePaths` option](../configuration/development/file-synchronization.mdx#uploadexcludepaths) -- run the containers using a different user during development\* - -\* You can achieve this by: -- Adding a `USER` statement in your Dockerfile: This is especially recommended when you are using multi-stage builds because you can add the `USER` statement for your development/build stage and add another `USER` statement to your production stage. Then, control the build target using the [`options.target` option](../configuration/images/docker.mdx#target) for Docker and kaniko builds and define a profile for removing the build stage for production deployments. -- Setting `runAsUser` and `runAsGroup` to `0` within the `securityContext` of your Kubernetes pods. diff --git a/docs/versioned_docs/version-5.17/guides/image-building.mdx b/docs/versioned_docs/version-5.17/guides/image-building.mdx deleted file mode 100644 index 5ebad20b8f..0000000000 --- a/docs/versioned_docs/version-5.17/guides/image-building.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Image Building -sidebar_label: Image Building ---- - -Take a look at the following best practices to speed up image building and to set up DevSpace for an ideal workflow. - -## Optimize Dockerfiles -You can drastically speed up image building by optimizing your Dockerfiles with the following tips: -- Use a small base image (e.g. alpine version) -- Use layer caching for dependencies: Add dependency file, install dependencies, then add the rest of your source code as shown in the example snippet below - -```Dockerfile -FROM 8.16.1-alpine - -# Set working dir -WORKDIR /app - -# Copy dependency file to WORKDIR -ADD package.json - -# Install dependencies -RUN npm install - -# Copy remaining source code from local WORKDIR to image WORKDIR -COPY . . -``` - -## `.dockerignore` For Better Caching -DevSpace respects the `.dockerignore` file when defined on the root level of your context directory. This file follows a similar syntax as the `.gitignore` file but instead of excluding files from git, the `.dockerignore` file defines files and folders which should not be included in the context for building an image. - -:::info Skip Image Building -Adding paths to the `.dockerignore` file makes sure that DevSpace is not forced to rebuild images when files belonging to these paths change. -::: - -It can often be useful to: -- Add `devspace.yaml` to `.dockerignore` to prevent config changes from triggering image rebuilding (`devspace init` does this by default) -- Add temporary files (e.g. `.DS_Store`) to `.dockerignore` (DevSpace ALWAYS ignores `.devspace/` temp folder even if not specified in `.dockerignore`) -- Add dependency folders to `.dockerignore`, here are a few examples of dependency folders for different languages: - -### Recommended Paths for `.dockerignore` -| Language / Dependency Tool | `.dockerignore` statements | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| All Languages | `devspace.yaml` | -| PHP / composer | `composer.phar`
`vendor/` | -| Node.js / npm | `node_modules/`
`npm-debug.log*`
`report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json`
`pids`
`*.pid*`
`*.seed*`
`*.pid.lock*` | -| Python / pip | `__pycache__/`
`wheels/`
`pip-log.txt`
`pip-wheel-metadata/` | - - -## Different Images for Development vs. Staging vs. Production -Generally, there are several options to achieve this: -- using multiple Dockerfiles (e.g. `Dockerfile`, `Dockerfile_production`) -- using one Dockerfile in combination with `BUILD_ARGS` and `ENTRYPOINT` overrides for each environment -- using one Dockerfile in combination with multi-stage builds with targets for each environment - -All options have their benefits and caveats. Which one is the best for your project depends on your use case and your priorities. diff --git a/docs/versioned_docs/version-5.17/guides/localhost-ui.mdx b/docs/versioned_docs/version-5.17/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/versioned_docs/version-5.17/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/versioned_docs/version-5.17/guides/networking-domains.mdx b/docs/versioned_docs/version-5.17/guides/networking-domains.mdx deleted file mode 100644 index c2388aa259..0000000000 --- a/docs/versioned_docs/version-5.17/guides/networking-domains.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Services, Ingresses & Domains -sidebar_label: Networking & Domains ---- - -import FragmentInfoComponentChart from '../fragments/info-component-chart.mdx'; - -The easiest way to connect a domain to your deployment is to run the following command within your project directory: -```bash -devspace open -``` -Choose **via domain** to connect a domain or choose **via localhost** to use port-forwarding. - -
- -## Component Chart -If you are looking for the documentation of the component chart values that let you configure the ingress and service for a component in `devspace.yaml`, please look into the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. - - - -
- -## Troubleshooting -Here are some steps to debug issues with your application when your domain is not able to reach your application. - -### Listen On All Interfaces -Make sure your application is running on `0.0.0.0` and not on `localhost`. If you see a log message in your container logs such as `Listening on localhost:PORT` or `Listening on 127.0.0.1:PORT`, you need to change the configuration of your application, so that it starts listening on `0.0.0.0` instead of `localhost`/`127.0.0.1`. - -:::info Only Localhost Works -This is often the problem when you are able to use `devspace open` with `via localhost` but not with the `via domain` option. -::: - -### Check For Failing Containers -Make sure none of your containers is constantly restarting (`Restarts` > 0) or unable to starting (`Status` != Running): -```bash -kubectl get po -``` - -### Check Services and Endpoints -Make sure you have at least one service for your main application configured: -```bash -kubectl get svc -``` - -And make sure all your services have at least one endpoint: -```bash -kubectl get ep -``` diff --git a/docs/versioned_docs/version-5.17/guides/plugins.mdx b/docs/versioned_docs/version-5.17/guides/plugins.mdx deleted file mode 100644 index 39e98177a6..0000000000 --- a/docs/versioned_docs/version-5.17/guides/plugins.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: DevSpace Plugins -sidebar_label: Plugins ---- - -The functionality of DevSpace can be extended and changed via plugins. Plugins are managed through DevSpace and are contained in a single binary or shell script. Plugins are able to extend DevSpace in the following ways: -- Add new commands to DevSpace (e.g. `devspace login` or `devspace list users`) -- Add new [predefined variables](../configuration/variables/basics.mdx) -- Execute hooks at specific events (like a command execution) - -## Installing a plugin - -Plugins can be installed from an URL, Git Repository or local file. To install a plugin run: -``` -# Add a plugin from a git repository -devspace add plugin https://github.com/my-organization/my-repo - -# Add a plugin from an URL -devspace add plugin https://myorg.com/path/to/plugin.yaml - -# Add a plugin from a local path -devspace add plugin ./plugin.yaml -``` - -After installing a plugin you can check all your existing plugins via: -``` -devspace list plugins -``` - -## Updating a plugin - -To update a DevSpace plugin run the following command: - -``` -# Enter the name and not the path -devspace update plugin PLUGIN_NAME - -# This only works for GIT plugins -devspace update plugin PLUGIN_NAME --version GIT_TAG -``` - -## Removing a plugin - -To remove a plugin via the DevSpace command line: -``` -# Enter the name and not the path -devspace remove plugin PLUGIN_NAME -``` - -If the plugin cannot be removed because a certain hook fails (or any other reason), you can also delete the plugin manually. DevSpace saves all plugin data in `$HOME/.devspace/plugins`. You will have to check each folders `plugin.yaml` to see which plugin is stored in the folder. To remove a plugin, simply delete the complete plugin folder. - -## Developing a custom DevSpace plugin - -Creating an own DevSpace plugin is quite easy. You only need a `plugin.yaml` that specifies where DevSpace can find the plugin binary and how DevSpace should execute it. You can also take a look at the [devspace-plugin-example](https://github.com/loft-sh/devspace-plugin-loft) project for a complete example. -For each installed plugin, DevSpace will create a folder in `$HOME/.devspace/plugins` with a `plugin.yaml` and a downloaded or copied `binary` that will be executed. - -### plugin.yaml - -The `plugin.yaml` specifies how the plugin is installed and integrates into DevSpace and consists of the following parts. - -#### `name` - -Name of the plugin as shown in devspace list plugins and used for devspace update plugin and devspace remove plugin. (e.g. `my-devspace-plugin`) - -#### `version` - -The semantic current version of the plugin (e.g. `0.0.1`) - -#### `binaries` - -This section states where DevSpace can retrieve the plugin binary for the current operating system and architecture. If devspace cannot find a binary for the current [runtime.GOOS](https://golang.org/pkg/runtime/#pkg-constants) and [runtime.GOARCH](https://golang.org/pkg/runtime/#pkg-constants) it will not install the plugin. -The `binaries` section expects an array with objects that can have the following properties: -* `os` is the runtime.GOOS name of the operating system (e.g. darwin, windows, linux etc.) -* `arch` is the runtime.GOARCH name of the system (e.g. amd64, 386 etc.) -* `path` is the URL to the binary to download or the local path to the binary to copy - -#### `commands` - -This section specifies which commands should be added to DevSpace. It expects an array with objects that can have the following properties: -* `name` of the command that should be added to devspace (e.g. `login` will add `devspace login`) -* `baseArgs` these args are prepended to the plugin binary, so when a user will call 'devspace login other --flag 123', devspace will call the plugin binary with 'plugin-binary baseArgs... other --flag 123' -* `usage` the usage of the command to print in `devspace --help` -* `description` the description of the command to print in `devspace --help` -* `subCommand` (Optional) the subcommand to append the command to (e.g. `add` will add the command to `devspace add`) - -DevSpace will forward all passed arguments and flags to the plugin command. - -#### `vars` - -This section specifies which [predefined variables](../configuration/variables/basics.mdx) are added to DevSpace. These variable values will be retrieved from the plugin binary instead of asking the user. It expects an array with objects that can have the following properties: -* `name` of the predefined variable to add (e.g. `EXAMPLE_VARIABLE` which can then be used in a `devspace.yaml` as `${EXAMPLE_VARIABLE}`) -* `baseArgs` these args are appended to the plugin binary (e.g. `["print", "var", "test"]` will cause devspace to call the plugin binary with: `plugin-binary print var test`) - -DevSpace expects the plugin binary to either fail (exit code unequal zero) or print the variable value to the stdout stream. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables: -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the value of `--namespace` if set (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the value of `--kube-context` if set (e.g. `my-kube-context`) - -#### `hooks` - -This section specifies certain plugin commands that should be executed at certain DevSpace events. It expects an array with objects that can have the following properties: -* `event` name of the event when to execute the command. The following events exist: - * `after:installPlugin` executed after the plugin was installed - * `before:updatePlugin` executed before the plugin will be updated - * `after:updatePlugin` executed after the plugin was updated - * `before:removePlugin` executed before the plugin will be removed - * `before:build`, `before:build:*`, `after:build`, `after:build:*`, `error:build:*` executed when DevSpace will build an image. The environment variables `DEVSPACE_PLUGIN_IMAGE_CONFIG_NAME`, `DEVSPACE_PLUGIN_IMAGE_NAME`, `DEVSPACE_PLUGIN_IMAGE_TAGS` and `DEVSPACE_PLUGIN_IMAGE_CONFIG` will be available in the hook - * `before:deploy`, `after:deploy`, `before:deploy:*`, `after:deploy:*`, `error:deploy:*`, `skip:deploy:*`, `before:render`, `after:render`, `before:render:*`, `after:render:*`, `error:render:*`, `before:purge`, `after:purge`, `before:purge:*`, `after:purge:*`, `error:purge:*` executed when DevSpace will deploy a defined deployment. The environment variables `DEVSPACE_PLUGIN_DEPLOY_CONFIG` will be available in the hook - * `before:resolveDependency:*`, `after:resolveDependency:*`, `error:resolveDependency:*`, `before:buildDependency:*`, `after:buildDependency:*`, `error:buildDependency:*`, `before:deployDependency:*`, `after:deployDependency:*`, `error:deployDependency:*`, `before:renderDependency:*`, `after:renderDependency:*`, `error:renderDependency:*`, `before:purgeDependency:*`, `after:purgeDependency:*`, `error:purgeDependency:*` executed before, after or onError during dependency handling. The environment variables `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG`, `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG_PATH`and `DEVSPACE_PLUGIN_DEPENDENCY_NAME` will be available in the hook - * `before:configLoad`, `after:configLoad`, `error:configLoad` executed when DevSpace tries to load a `devspace.yaml`. The environment variables `DEVSPACE_PLUGIN_LOAD_PATH`, `DEVSPACE_PLUGIN_LOADED_RAW`, `DEVSPACE_PLUGIN_LOADED_VARS` and `DEVSPACE_PLUGIN_LOADED_CONFIG` (only in `config.afterLoad`) will be available in the hook - * `start:sync:*`, `stop:sync:*`, `error:sync:*`, `restart:sync:*` executed when DevSpace will start syncing a new sync config, closing a running one or restarting/stopping because of an error. The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `before:initialSync:*`, `after:initialSync:*`, `error:initialSync:*` executed right before DevSpace will do an initial sync and afterwards (if successful). The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `start:portForwarding:*`, `restart:portForwarding:*`, `error:portForwarding:*`, `stop:portForwarding:*` executed when DevSpace will start, restart, stop port forwarding. The environment variables `DEVSPACE_PLUGIN_PORT_FORWARDING_CONFIG` will be available in the hook - * `start:reversePortForwarding:*`, `restart:reversePortForwarding:*`, `error:reversePortForwarding:*`, `stop:reversePortForwarding:*` executed when DevSpace will start, restart, stop reverse port forwarding. The environment variables `DEVSPACE_PLUGIN_REVERSE_PORT_FORWARDING_CONFIG` will be available in the hook - * `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` - * `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`, `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:interrupt`, `devCommand:error` executed at different checkpoints when `devspace dev` is executed - * `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed - * `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed - * `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed - * `command:before:execute`, `command:after:execute`, `command:error` executed at the beginning, ending or if an error occurs during any DevSpace command execution - * `analyze`, `attach`, `build`, `deploy`, `dev`, `enter`, `init`, `logs`, `open`, `print`, `purge`, `render`, `restart`, `run`, `sync`, `ui`, `upgrade` are executed after the corresponding devspace command has loaded the config and created a kubernetes client (if there is a config to load or a kubernetes client to create) -* `baseArgs` these args are appended to the plugin binary (e.g. `["run", "my", "command"]` will cause devspace to call the plugin binary with: `plugin-binary run my command`) -* `background` if true will execute the hook in the background and continue DevSpace command execution - -If a non-background hook fails (exit code unequals zero) DevSpace will stop command execution and the complete DevSpace command fails. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables (if they apply for the event): -- `DEVSPACE_PLUGIN_EXECUTION_ID` a unique identifier that stays the complete duration of a command but will change each time DevSpace is re-executed -- `DEVSPACE_PLUGIN_EVENT` the event that has triggered the hook -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_CONFIG` the config that was loaded for the command as yaml encoded (all profiles and variables are resolved at this point) -- `DEVSPACE_PLUGIN_COMMAND` the name of the DevSpace command that was executed (e.g. `dev`) -- `DEVSPACE_PLUGIN_COMMAND_LINE` the complete name of the DevSpace command that was executed (e.g. `devspace dev [FLAGS]`) -- `DEVSPACE_PLUGIN_COMMAND_FLAGS` the flags that were passed to the DevSpace command encoded as JSON (e.g. `["--namespace", "test", "--skip-build", "true"]`) -- `DEVSPACE_PLUGIN_COMMAND_ARGS` the arguments that were passed to the DevSpace command encoded as JSON (without any flags) (e.g. `["arg1"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the kubernetes namespace where DevSpace will operate in (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the kubernetes context where DevSpace will operate in (e.g. `my-kube-context`) -- `DEVSPACE_PLUGIN_ERROR` the error that occurred at a certain event (usually only supplied in the `error` or `restart` events) - -### Example - -An example `plugin.yaml` could look like this: -```yaml -name: devspace-plugin-example -version: 0.0.1 -commands: - # This will add the command devspace login - - name: "login" - # these args are prepended to the plugin binary, so when a user will call 'devspace login test test2 --flag 123' - # devspace will call the plugin binary with 'plugin-binary other command test test2 --flag 123' - baseArgs: ["other", "command"] - usage: "short description of command" - description: "long description of command" - # You can also add commands under already existing devspace subcommands - # This will add the devspace command: devspace list env - - name: "env" - baseArgs: ["list", "env"] - subCommand: "list" -# Hooks are called before certain already existing commands are executed -# in devspace, for example devspace dev -hooks: - # will be executed when devspace print is run by the user - - event: print - # this will call the plugin binary before devspace print is called with: 'plugin-binary list env' - baseArgs: ["list", "env"] - # root is executed before any other event and command execution except for other plugin commands - - event: root - baseArgs: ["login"] -# You can also add predefined variables for the config via plugins -vars: - # the name of the predefined variable - # that can be used within any devspace.yaml - - name: EXAMPLE_USER - # this will call the plugin binary when resolving this variable and expects the variable - # output on stdout. - baseArgs: ["print", "env", "USER"] - - name: EXAMPLE_HOME - baseArgs: [ "print", "env", "HOME" ] -# In this section the plugin binaries (or scripts) and their locations are defined -# if devspace cannot find a binary for the current runtime.GOOS and runtime.GOARCH -# it will not install the plugin -binaries: - - os: darwin - arch: amd64 - # can be either an URL or local path - path: ./main - - os: linux - arch: amd64 - path: main - - os: linux - arch: "386" - path: main - - os: windows - arch: amd64 - path: path/to/main.exe - - os: windows - arch: "386" - path: https://my-domain.url/path/to/windows.exe -``` diff --git a/docs/versioned_docs/version-5.17/guides/remote-debugging.mdx b/docs/versioned_docs/version-5.17/guides/remote-debugging.mdx deleted file mode 100644 index d2be954168..0000000000 --- a/docs/versioned_docs/version-5.17/guides/remote-debugging.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Remote Debugging -sidebar_label: Remote Debugging ---- - -DevSpace lets you easily [start applications in development mode](../getting-started/development.mdx) and connect remote debuggers for your application using the following steps: - -1. Configure DevSpace to use a development Dockerfile that: - - ships with the appropriate tools for debugging your application - - starts your application together with the debugger, e.g. setting the `ENTRYPOINT` of your Dockerfile to `node --inspect=0.0.0.0:9229 index.js` would start the Node.js remote debugger on port `9229` -2. Define port-forwarding for the port of your remote debugger (e.g. `9229`) within the `dev.ports` section of your `devspace.yaml` -3. Connect your IDE to the remote debugger (see the docs of your IDE for help) -4. Set breakpoints and debug your application directly inside Kubernetes diff --git a/docs/versioned_docs/version-5.17/introduction.mdx b/docs/versioned_docs/version-5.17/introduction.mdx deleted file mode 100644 index b474f724bd..0000000000 --- a/docs/versioned_docs/version-5.17/introduction.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: What is DevSpace? -sidebar_label: Introduction ---- - -DevSpace is a client-only, open-source developer tool for Kubernetes: -- **Build, test and debug applications directly inside Kubernetes** -- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers -- **Unify deployment workflows** within your team and across dev, staging and production -- **Automate repetitive tasks** for image building and deployment - -## How does it work? -DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - - - - -## Why DevSpace? -Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. - - -### Declarative Workflows -DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` -- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. -- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) -- **Share your workflows** with your team mates - - -### Made For Teams -DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. -- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git -- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project -- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) - - -### Hot Reloading -Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: -- Simply edit your files with your IDE and see how your application reloads within the running container. -- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes -- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. - - -### Automation -Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: -- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command -- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. - - -### Compatibility -DevSpace is battle tested with many Kubernetes distributions including: -- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind -- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) -- **Self-managed Kubernetes clusters** (e.g. created with Rancher) - -
- diff --git a/docs/versioned_docs/version-5.17/quickstart.mdx b/docs/versioned_docs/version-5.17/quickstart.mdx deleted file mode 100644 index e1508c12a3..0000000000 --- a/docs/versioned_docs/version-5.17/quickstart.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Quickstart -sidebar_label: Quickstart ---- - -import InstallFragment from './fragments/install-cli.mdx'; -import ChooseProjectFragment from './fragments/choose-project.mdx'; -import StartAppFragment from './fragments/start-app.mdx'; - -This is a 2-minute quickstart guide. For additional details and explanations, see the [Getting Started Guide](./getting-started/installation.mdx). - -## 1. Download CLI - - -## 2. Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - -## 3. Initialize Project -```bash -devspace init -``` -Choose `Component Chart` and `Based on this existing Dockerfile` for quickstart projects. - - -## 4. Start Development -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace dev -``` - -As soon as the terminal opens up, you can start your application: - - - -**Hot Reloading**: Now, change a file on your local computer and re-run the application inside the container terminal. - -**Port Forwarding**: You can access your application via `localhost:PORT` if your port is specified in `dev.ports` within `devspace.yaml`. - -When you're done testing development, type `exit` or hit `Ctrl-d` to exit the container terminal. - -## 5. Deploy Project -To build your container image and deploy a clean version of this project, run: -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace deploy -p production -``` - -## 6. Cleanup -To purge your deployment from the cluster, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.18/commands/devspace.md b/docs/versioned_docs/version-5.18/commands/devspace.md deleted file mode 100644 index 470285ee85..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Command - devspace" -sidebar_label: devspace ---- - -## devspace - -Welcome to the DevSpace! - -### Synopsis - -DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes. Get started by running the init command in one of your projects: - - devspace init - -### Options - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - -h, --help help for devspace - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - -``` - -``` - - -## Flags -## Global & Inherited Flags \ No newline at end of file diff --git a/docs/versioned_docs/version-5.18/commands/devspace_add.md b/docs/versioned_docs/version-5.18/commands/devspace_add.md deleted file mode 100644 index 6bd87c4156..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_add.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Command - devspace add" -sidebar_label: devspace add ---- - - -Convenience command: adds something to devspace.yaml - -## Synopsis - - -``` -####################################################### -#################### devspace add ##################### -####################################################### -Adds config sections to devspace.yaml -``` - - -## Flags - -``` - -h, --help help for add -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_add_plugin.md b/docs/versioned_docs/version-5.18/commands/devspace_add_plugin.md deleted file mode 100644 index dba4573601..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_add_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace add plugin" -sidebar_label: devspace add plugin ---- - - -Add a plugin to devspace - -## Synopsis - - -``` -devspace add plugin [flags] -``` - -``` -####################################################### -############### devspace add plugin ################### -####################################################### -Adds a new plugin to devspace - -devspace add plugin https://github.com/my-plugin/plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_analyze.md b/docs/versioned_docs/version-5.18/commands/devspace_analyze.md deleted file mode 100644 index a0466b2789..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_analyze.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace analyze" -sidebar_label: devspace analyze ---- - - -Analyzes a kubernetes namespace and checks for potential problems - -## Synopsis - - -``` -devspace analyze [flags] -``` - -``` -####################################################### -################## devspace analyze ################### -####################################################### -Analyze checks a namespaces events, replicasets, services -and pods for potential problems - -Example: -devspace analyze -devspace analyze --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for analyze - --ignore-pod-restarts If true, analyze will ignore the restart events of running pods - --patient If true, analyze will ignore failing pods and events until every deployment, statefulset, replicaset and pods are ready or the timeout is reached - --timeout int Timeout until analyze should stop waiting (default 120) - --wait Wait for pods to get ready if they are just starting (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_attach.md b/docs/versioned_docs/version-5.18/commands/devspace_attach.md deleted file mode 100644 index c9ef1806f3..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_attach.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Command - devspace attach" -sidebar_label: devspace attach ---- - - -Attaches to a container - -## Synopsis - - -``` -devspace attach [flags] -``` - -``` -####################################################### -################# devspace attach ##################### -####################################################### -Attaches to a running container - -devspace attach -devspace attach --pick # Select pod to enter -devspace attach -c my-container -devspace attach -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for attach - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod (default true) - --pod string Pod to open a shell to -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_build.md b/docs/versioned_docs/version-5.18/commands/devspace_build.md deleted file mode 100644 index 1dd313bdef..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_build.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace build" -sidebar_label: devspace build ---- - - -Builds all defined images and pushes them - -## Synopsis - - -``` -devspace build [flags] -``` - -``` -####################################################### -################## devspace build ##################### -####################################################### -Builds all defined images and pushes them -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Builds only the specific named dependencies - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -h, --help help for build - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-dependency strings Skips building the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_cleanup.md b/docs/versioned_docs/version-5.18/commands/devspace_cleanup.md deleted file mode 100644 index 3b6f668105..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_cleanup.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace cleanup" -sidebar_label: devspace cleanup ---- - - -Cleans up resources - -## Synopsis - - -``` -####################################################### -################## devspace cleanup ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for cleanup -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-5.18/commands/devspace_cleanup_images.md deleted file mode 100644 index 8cec3f7f61..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_cleanup_images.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace cleanup images" -sidebar_label: devspace cleanup images ---- - - -Deletes all locally created images from docker - -## Synopsis - - -``` -devspace cleanup images [flags] -``` - -``` -####################################################### -############# devspace cleanup images ################# -####################################################### -Deletes all locally created docker images from docker -####################################################### -``` - - -## Flags - -``` - -h, --help help for images -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_completion.md b/docs/versioned_docs/version-5.18/commands/devspace_completion.md deleted file mode 100644 index 6ce4d13578..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_completion.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Command - devspace completion" -sidebar_label: devspace completion ---- - - -Output shell completion for the given shell (bash or zsh) - -## Synopsis - - - ``` -devspace completion SHELL [flags] -``` - -``` -Outputs shell completion for the given shell (bash or zsh) - - This depends on the bash-completion binary. Example installation instructions: - OS X: - $ brew install bash-completion - $ source $(brew --prefix)/etc/bash_completion - $ devspace completion bash > ~/.devspace-completion # for bash users - $ devspace completion zsh > ~/.devspace-completion # for zsh users - $ source ~/.devspace-completion - Ubuntu: - $ apt-get install bash-completion - $ source /etc/bash-completion - $ source <(devspace completion bash) # for bash users - $ source <(devspace completion zsh) # for zsh users - - Additionally, you may want to output the completion to a file and source in your .bashrc -``` - - -## Flags - -``` - -h, --help help for completion -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_deploy.md b/docs/versioned_docs/version-5.18/commands/devspace_deploy.md deleted file mode 100644 index 69801e6f4a..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_deploy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace deploy" -sidebar_label: devspace deploy ---- - - -Deploy the project - -## Synopsis - - -``` -devspace deploy [flags] -``` - -``` -####################################################### -################## devspace deploy #################### -####################################################### -Deploys the current project to a Space or namespace: - -devspace deploy -devspace deploy -n some-namespace -devspace deploy --kube-context=deploy-context -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to (re-)build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to (re-)deploy every deployment - -h, --help help for deploy - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips building of images - --skip-dependency strings Skips deploying the following dependencies - --skip-deploy Skips deploying and only builds images - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --timeout int Timeout until deploy should stop waiting (default 120) - --verbose-dependencies Deploys the dependencies verbosely (default true) - --wait If true will wait for pods to be running or fails after given timeout -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_dev.md b/docs/versioned_docs/version-5.18/commands/devspace_dev.md deleted file mode 100644 index 53d1d61498..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_dev.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: "Command - devspace dev" -sidebar_label: devspace dev ---- - - -Starts the development mode - -## Synopsis - - -``` -devspace dev [flags] -``` - -``` -####################################################### -################### devspace dev ###################### -####################################################### -Starts your project in development mode: -1. Builds your Docker images and override entrypoints if specified -2. Deploys the deployments via helm or kubectl -3. Forwards container ports to the local computer -4. Starts the sync client -5. Streams the logs of deployed containers - -Open terminal instead of logs: -- Use "devspace dev -t" for opening a terminal -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Deploys only the specified named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - --exit-after-deploy Exits the command after building the images and deploying the project - -b, --force-build Forces to build every image - --force-dependencies Forces to re-evaluate dependencies (use with --force-build --force-deploy to actually force building & deployment of dependencies) (default true) - -d, --force-deploy Forces to deploy every deployment - -h, --help help for dev - -i, --interactive DEPRECATED: DO NOT USE ANYMORE - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --open Open defined URLs in the browser, if defined (default true) - --portforwarding Enable port forwarding (default true) - --print-sync If enabled will print the sync log to the terminal - --skip-build Skips building of images - --skip-dependency strings Skips the following dependencies for deployment - -x, --skip-pipeline Skips build & deployment and only starts sync, portforwarding & terminal - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - --sync Enable code synchronization (default true) - -t, --terminal Open a terminal instead of showing logs - --terminal-reconnect Will try to reconnect the terminal if an unexpected exit code was encountered (default true) - --timeout int Timeout until dev should stop waiting and fail (default 120) - --ui Start the ui server (default true) - --ui-port int The port to use when opening the ui server - --verbose-dependencies Deploys the dependencies verbosely (default true) - --verbose-sync When enabled the sync will log every file change - --wait If true will wait first for pods to be running or fails after given timeout - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_enter.md b/docs/versioned_docs/version-5.18/commands/devspace_enter.md deleted file mode 100644 index c294863848..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_enter.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Command - devspace enter" -sidebar_label: devspace enter ---- - - -Open a shell to a container - -## Synopsis - - -``` -devspace enter [flags] -``` - -``` -####################################################### -################## devspace enter ##################### -####################################################### -Execute a command or start a new terminal in your -devspace: - -devspace enter -devspace enter --pick # Select pod to enter -devspace enter bash -devspace enter -c my-container -devspace enter bash -n my-namespace -devspace enter bash -l release=test -devspace enter bash --image-selector nginx:latest -devspace enter bash --image-selector "${runtime.images.app.image}:${runtime.images.app.tag}" -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -h, --help help for enter - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --pick Select a pod / container if multiple are found (default true) - --pod string Pod to open a shell to - --reconnect Will reconnect the terminal if an unexpected return code is encountered - --wait Wait for the pod(s) to start if they are not running - --workdir string The working directory where to open the terminal or execute the command -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_init.md b/docs/versioned_docs/version-5.18/commands/devspace_init.md deleted file mode 100644 index 09b8e82c0d..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_init.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace init" -sidebar_label: devspace init ---- - - -Initializes DevSpace in the current folder - -## Synopsis - - -``` -devspace init [flags] -``` - -``` -####################################################### -#################### devspace init #################### -####################################################### -Initializes a new devspace project within the current -folder. Creates a devspace.yaml with all configuration. -####################################################### -``` - - -## Flags - -``` - --context string Context path to use for intialization - --dockerfile string Dockerfile to use for initialization (default "./Dockerfile") - -h, --help help for init - --provider string The cloud provider to use - -r, --reconfigure Change existing configuration -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list.md b/docs/versioned_docs/version-5.18/commands/devspace_list.md deleted file mode 100644 index ac69bfe487..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace list" -sidebar_label: devspace list ---- - - -Lists configuration - -## Synopsis - - -``` -####################################################### -#################### devspace list #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for list -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_commands.md b/docs/versioned_docs/version-5.18/commands/devspace_list_commands.md deleted file mode 100644 index 8a08bcd996..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_commands.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace list commands" -sidebar_label: devspace list commands ---- - - -Lists all custom DevSpace commands - -## Synopsis - - -``` -devspace list commands [flags] -``` - -``` -####################################################### -############## devspace list commands ################# -####################################################### -Lists all DevSpace custom commands defined in the -devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for commands -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_contexts.md b/docs/versioned_docs/version-5.18/commands/devspace_list_contexts.md deleted file mode 100644 index 3e14fbe1f7..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_contexts.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace list contexts" -sidebar_label: devspace list contexts ---- - - -Lists all kube contexts - -## Synopsis - - -``` -devspace list contexts [flags] -``` - -``` -####################################################### -############## devspace list contexts ################# -####################################################### -Lists all available kube contexts - -Example: -devspace list contexts -####################################################### -``` - - -## Flags - -``` - -h, --help help for contexts -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_deployments.md b/docs/versioned_docs/version-5.18/commands/devspace_list_deployments.md deleted file mode 100644 index d886efe56e..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_deployments.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list deployments" -sidebar_label: devspace list deployments ---- - - -Lists and shows the status of all deployments - -## Synopsis - - -``` -devspace list deployments [flags] -``` - -``` -####################################################### -############# devspace list deployments ############### -####################################################### -Shows the status of all deployments -####################################################### -``` - - -## Flags - -``` - -h, --help help for deployments -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-5.18/commands/devspace_list_namespaces.md deleted file mode 100644 index 58831fe6a1..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_namespaces.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list namespaces" -sidebar_label: devspace list namespaces ---- - - -Lists all namespaces in the current context - -## Synopsis - - -``` -devspace list namespaces [flags] -``` - -``` -####################################################### -############ devspace list namespaces ################# -####################################################### -Lists all namespaces in the selected kube context -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespaces -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_plugins.md b/docs/versioned_docs/version-5.18/commands/devspace_list_plugins.md deleted file mode 100644 index ec36e102d4..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_plugins.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list plugins" -sidebar_label: devspace list plugins ---- - - -Lists all installed devspace plugins - -## Synopsis - - -``` -devspace list plugins [flags] -``` - -``` -####################################################### -############# devspace list plugins ################## -####################################################### -Lists all installed plugins - -devspace list plugins -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugins -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_ports.md b/docs/versioned_docs/version-5.18/commands/devspace_list_ports.md deleted file mode 100644 index 7e52e03371..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_ports.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list ports" -sidebar_label: devspace list ports ---- - - -Lists port forwarding configurations - -## Synopsis - - -``` -devspace list ports [flags] -``` - -``` -####################################################### -############### devspace list ports ################### -####################################################### -Lists the port forwarding configurations -####################################################### -``` - - -## Flags - -``` - -h, --help help for ports -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_profiles.md b/docs/versioned_docs/version-5.18/commands/devspace_list_profiles.md deleted file mode 100644 index 9c53dc6079..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_profiles.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list profiles" -sidebar_label: devspace list profiles ---- - - -Lists all DevSpace profiles - -## Synopsis - - -``` -devspace list profiles [flags] -``` - -``` -####################################################### -############## devspace list profiles ################# -####################################################### -Lists all DevSpace configurations for this project -####################################################### -``` - - -## Flags - -``` - -h, --help help for profiles -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_sync.md b/docs/versioned_docs/version-5.18/commands/devspace_list_sync.md deleted file mode 100644 index 735d40a990..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_sync.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Command - devspace list sync" -sidebar_label: devspace list sync ---- - - -Lists sync configuration - -## Synopsis - - -``` -devspace list sync [flags] -``` - -``` -####################################################### -################# devspace list sync ################## -####################################################### -Lists the sync configuration -####################################################### -``` - - -## Flags - -``` - -h, --help help for sync -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_list_vars.md b/docs/versioned_docs/version-5.18/commands/devspace_list_vars.md deleted file mode 100644 index 50436d5824..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_list_vars.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace list vars" -sidebar_label: devspace list vars ---- - - -Lists the vars in the active config - -## Synopsis - - -``` -devspace list vars [flags] -``` - -``` -####################################################### -############### devspace list vars #################### -####################################################### -Lists the defined vars in the devspace config with their -values -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars - -o, --output string The output format of the command. Can be either empty, keyvalue or json -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_logs.md b/docs/versioned_docs/version-5.18/commands/devspace_logs.md deleted file mode 100644 index eb57328d40..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_logs.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace logs" -sidebar_label: devspace logs ---- - - -Prints the logs of a pod and attaches to it - -## Synopsis - - -``` -devspace logs [flags] -``` - -``` -####################################################### -#################### devspace logs #################### -####################################################### -Logs prints the last log of a pod container and attachs -to it - -Example: -devspace logs -devspace logs --namespace=mynamespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to execute command - -f, --follow Attach to logs afterwards - -h, --help help for logs - --image string Image is the config name of an image to select in the devspace config (e.g. 'default'), it is NOT a docker image like myuser/myimage - --image-selector string The image to search a pod for (e.g. nginx, nginx:latest, ${runtime.images.app}, nginx:${runtime.images.app.tag}) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --lines int Max amount of lines to print from the last log (default 200) - --pick Select a pod (default true) - --pod string Pod to print the logs of - --wait Wait for the pod(s) to start if they are not running -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_open.md b/docs/versioned_docs/version-5.18/commands/devspace_open.md deleted file mode 100644 index ac90ae2d5b..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_open.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace open" -sidebar_label: devspace open ---- - - -Opens the space in the browser - -## Synopsis - - -``` -devspace open [flags] -``` - -``` -####################################################### -#################### devspace open #################### -####################################################### -Opens the space domain in the browser - -Example: -devspace open -####################################################### -``` - - -## Flags - -``` - -h, --help help for open - --port int The port on the localhost to listen on - --provider string The cloud provider to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_print.md b/docs/versioned_docs/version-5.18/commands/devspace_print.md deleted file mode 100644 index d6b3b0a656..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_print.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace print" -sidebar_label: devspace print ---- - - -Print displays the configuration - -## Synopsis - - -``` -devspace print [flags] -``` - -``` -####################################################### -################## devspace print ##################### -####################################################### -Prints the configuration for the current or given -profile after all patching and variable substitution -####################################################### -``` - - -## Flags - -``` - --dependency string The dependency to print the config from. Use dot to access nested dependencies (e.g. dep1.dep2) - -h, --help help for print - --skip-info When enabled, only prints the configuration without additional information -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_purge.md b/docs/versioned_docs/version-5.18/commands/devspace_purge.md deleted file mode 100644 index f08665cc4b..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_purge.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Command - devspace purge" -sidebar_label: devspace purge ---- - - -Delete deployed resources - -## Synopsis - - -``` -devspace purge [flags] -``` - -``` -####################################################### -################### devspace purge #################### -####################################################### -Deletes the deployed kuberenetes resources: - -devspace purge -devspace purge --dependencies -devspace purge -d my-deployment -####################################################### -``` - - -## Flags - -``` - -a, --all When enabled purges the dependencies as well (default true) - --dependencies DEPRECATED: Please use --all instead - --dependency strings Purges only the specific named dependencies - -d, --deployments string The deployment to delete (You can specify multiple deployments comma-separated, e.g. devspace-default,devspace-database etc.) - -h, --help help for purge - --skip-dependency strings Skips the following dependencies from purging - --verbose-dependencies Builds the dependencies verbosely (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_remove.md b/docs/versioned_docs/version-5.18/commands/devspace_remove.md deleted file mode 100644 index da04b4f021..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_remove.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace remove" -sidebar_label: devspace remove ---- - - -Changes devspace configuration - -## Synopsis - - -``` -####################################################### -################## devspace remove #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for remove -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_remove_context.md b/docs/versioned_docs/version-5.18/commands/devspace_remove_context.md deleted file mode 100644 index 0fbf25b09f..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_remove_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace remove context" -sidebar_label: devspace remove context ---- - - -Removes a kubectl-context - -## Synopsis - - -``` -devspace remove context [flags] -``` - -``` -####################################################### -############# devspace remove context ################# -####################################################### -Removes a kubectl-context - -Example: -devspace remove context myspace -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_remove_plugin.md b/docs/versioned_docs/version-5.18/commands/devspace_remove_plugin.md deleted file mode 100644 index bcc08e9f3b..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_remove_plugin.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Command - devspace remove plugin" -sidebar_label: devspace remove plugin ---- - - -Removes a devspace plugin - -## Synopsis - - -``` -devspace remove plugin [flags] -``` - -``` -####################################################### -############# devspace remove plugin ################## -####################################################### -Removes a plugin - -devspace remove plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_render.md b/docs/versioned_docs/version-5.18/commands/devspace_render.md deleted file mode 100644 index cd005c610b..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_render.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Command - devspace render" -sidebar_label: devspace render ---- - - -Render builds all defined images and shows the yamls that would be deployed - -## Synopsis - - -``` -devspace render [flags] -``` - -``` -####################################################### -################## devspace render ##################### -####################################################### -Builds all defined images and shows the yamls that would -be deployed via helm and kubectl, but skips actual -deployment. -####################################################### -``` - - -## Flags - -``` - --build-sequential Builds the images one after another instead of in parallel - --dependency strings Renders only the specific named dependencies - --deployments string Only deploy a specific deployment (You can specify multiple deployments comma-separated - -b, --force-build Forces to build every image - -h, --help help for render - --max-concurrent-builds int The maximum number of image builds built in parallel (0 for infinite) - --skip-build Skips image building - --skip-dependencies Skips rendering the dependencies - --skip-dependency strings Skips rendering the following dependencies - --skip-push Skips image pushing, useful for minikube deployment - --skip-push-local-kube Skips image pushing, if a local kubernetes environment is detected (default true) - -t, --tag strings Use the given tag for all built images - --verbose-dependencies Builds the dependencies verbosely -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_reset.md b/docs/versioned_docs/version-5.18/commands/devspace_reset.md deleted file mode 100644 index 7746765d87..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_reset.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace reset" -sidebar_label: devspace reset ---- - - -Resets an cluster token - -## Synopsis - - -``` -####################################################### -################## devspace reset ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for reset -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-5.18/commands/devspace_reset_dependencies.md deleted file mode 100644 index 2a0db17612..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_reset_dependencies.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset dependencies" -sidebar_label: devspace reset dependencies ---- - - -Resets the dependencies cache - -## Synopsis - - -``` -devspace reset dependencies [flags] -``` - -``` -####################################################### -############ devspace reset dependencies ############## -####################################################### -Deletes the complete dependency cache - -Examples: -devspace reset dependencies -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_reset_pods.md b/docs/versioned_docs/version-5.18/commands/devspace_reset_pods.md deleted file mode 100644 index a2337c25f2..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_reset_pods.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset pods" -sidebar_label: devspace reset pods ---- - - -Resets the replaced pods - -## Synopsis - - -``` -devspace reset pods [flags] -``` - -``` -####################################################### -############### devspace reset pods ################### -####################################################### -Resets the replaced pods to its original state - -Examples: -devspace reset pods -####################################################### -``` - - -## Flags - -``` - -h, --help help for pods -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_reset_vars.md b/docs/versioned_docs/version-5.18/commands/devspace_reset_vars.md deleted file mode 100644 index dc7c1031d4..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_reset_vars.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace reset vars" -sidebar_label: devspace reset vars ---- - - -Resets the current config vars - -## Synopsis - - -``` -devspace reset vars [flags] -``` - -``` -####################################################### -############### devspace reset vars ################### -####################################################### -Resets the saved variables of the current config - -Examples: -devspace reset vars -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_restart.md b/docs/versioned_docs/version-5.18/commands/devspace_restart.md deleted file mode 100644 index f6d5e7f982..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_restart.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Command - devspace restart" -sidebar_label: devspace restart ---- - - -Restarts containers where the sync restart helper is injected - -## Synopsis - - -``` -devspace restart [flags] -``` - -``` -####################################################### -################## devspace restart ################### -####################################################### -Restarts containers where the sync restart helper -is injected: - -devspace restart -devspace restart -n my-namespace -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod to restart - -h, --help help for restart - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --name string The sync path name to restart - --pick Select a pod (default true) - --pod string Pod to restart -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_restore.md b/docs/versioned_docs/version-5.18/commands/devspace_restore.md deleted file mode 100644 index 64ac39da3c..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_restore.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace restore" -sidebar_label: devspace restore ---- - - -Restore configuration - -## Synopsis - - -``` -####################################################### -################## devspace restore ################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for restore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_restore_vars.md b/docs/versioned_docs/version-5.18/commands/devspace_restore_vars.md deleted file mode 100644 index cdd1a56f27..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_restore_vars.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace restore vars" -sidebar_label: devspace restore vars ---- - - -Restores variable values from kubernetes - -## Synopsis - - -``` -devspace restore vars [flags] -``` - -``` -####################################################### -############### devspace restore vars ################# -####################################################### -Restores devspace config variable values from a kubernetes -secret. - -Examples: -devspace restore vars -devspace restore vars --namespace test -devspace restore vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_run.md b/docs/versioned_docs/version-5.18/commands/devspace_run.md deleted file mode 100644 index 06f4abf06e..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_run.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace run" -sidebar_label: devspace run ---- - - -Run executes a predefined command - -## Synopsis - - -``` -devspace run [flags] -``` - -``` -####################################################### -##################### devspace run #################### -####################################################### -Run executes a predefined command from the devspace.yaml - -Examples: -devspace run mycommand --myarg 123 -devspace run mycommand2 1 2 3 -devspace --dependency my-dependency run any-command --any-command-flag -####################################################### -``` - - -## Flags - -``` - --dependency string Run a command from a specific dependency - -h, --help help for run -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_save.md b/docs/versioned_docs/version-5.18/commands/devspace_save.md deleted file mode 100644 index 7416329d87..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_save.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace save" -sidebar_label: devspace save ---- - - -Save configuration - -## Synopsis - - -``` -####################################################### -#################### devspace save #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for save -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_save_vars.md b/docs/versioned_docs/version-5.18/commands/devspace_save_vars.md deleted file mode 100644 index 8953eafad4..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_save_vars.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Command - devspace save vars" -sidebar_label: devspace save vars ---- - - -Saves variable values to kubernetes - -## Synopsis - - -``` -devspace save vars [flags] -``` - -``` -####################################################### -################ devspace save vars ################### -####################################################### -Saves devspace config variable values into a kubernetes -secret. Variable values can be shared or restored via -devspace restore vars. - -Examples: -devspace save vars -devspace save vars --namespace test -devspace save vars --vars-secret my-secret -####################################################### -``` - - -## Flags - -``` - -h, --help help for vars -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_set.md b/docs/versioned_docs/version-5.18/commands/devspace_set.md deleted file mode 100644 index 42e7f6385b..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_set.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace set" -sidebar_label: devspace set ---- - - -Make global configuration changes - -## Synopsis - - -``` -####################################################### -#################### devspace set ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for set -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_set_var.md b/docs/versioned_docs/version-5.18/commands/devspace_set_var.md deleted file mode 100644 index e751c2a0d7..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_set_var.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Command - devspace set var" -sidebar_label: devspace set var ---- - - -Sets a variable - -## Synopsis - - -``` -devspace set var [flags] -``` - -``` -####################################################### -################# devspace set var #################### -####################################################### -Sets a specific variable - -Examples: -devspace set var key=value -devspace set var key=value key2=value2 -####################################################### -``` - - -## Flags - -``` - -h, --help help for var - --overwrite If true will overwrite the variables value even if its set already (default true) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_sync.md b/docs/versioned_docs/version-5.18/commands/devspace_sync.md deleted file mode 100644 index 6cd72a4b71..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_sync.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Command - devspace sync" -sidebar_label: devspace sync ---- - - -Starts a bi-directional sync between the target container and the local path - -## Synopsis - - -``` -devspace sync [flags] -``` - -``` -####################################################### -################### devspace sync ##################### -####################################################### -Starts a bi-directionaly sync between the target container -and the current path: - -devspace sync -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -devspace sync --container-path=/my-path -####################################################### -``` - - -## Flags - -``` - -c, --container string Container name within pod where to sync to - --container-path string Container path to use (Default is working directory) - --download-on-initial-sync DEPRECATED: Downloads all locally non existing remote files in the beginning (default true) - --download-only If set DevSpace will only download files - -e, --exclude strings Exclude directory from sync - -h, --help help for sync - --initial-sync string The initial sync strategy to use (mirrorLocal, mirrorRemote, preferLocal, preferRemote, preferNewest, keepAll) - -l, --label-selector string Comma separated key=value selector list (e.g. release=test) - --local-path string Local path to use (Default is current directory - --no-watch Synchronizes local and remote and then stops - --pick Select a pod (default true) - --pod string Pod to sync to - --polling bool If polling should be used to detect file changes in the container - --upload-only If set DevSpace will only upload files - --verbose Shows every file that is synced - --wait Wait for the pod(s) to start if they are not running - -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` diff --git a/docs/versioned_docs/version-5.18/commands/devspace_ui.md b/docs/versioned_docs/version-5.18/commands/devspace_ui.md deleted file mode 100644 index a70ea7fb05..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_ui.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace ui" -sidebar_label: devspace ui ---- - - -Opens the localhost UI in the browser - -## Synopsis - - -``` -devspace ui [flags] -``` - -``` -####################################################### -##################### devspace ui ##################### -####################################################### -Opens the localhost UI in the browser -####################################################### -``` - - -## Flags - -``` - --dev Ignore errors when downloading UI - -h, --help help for ui - --host string The host to use when opening the ui server (default "localhost") - --port int The port to use when opening the ui server - --server If enabled will force start a server (otherwise an existing UI server is searched) -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_update.md b/docs/versioned_docs/version-5.18/commands/devspace_update.md deleted file mode 100644 index 8f9cdaa012..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_update.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace update" -sidebar_label: devspace update ---- - - -Updates the current config - -## Synopsis - - -``` -####################################################### -################## devspace update #################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for update -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-5.18/commands/devspace_update_dependencies.md deleted file mode 100644 index c2da19c795..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_update_dependencies.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace update dependencies" -sidebar_label: devspace update dependencies ---- - - -Updates the git repositories of the dependencies defined in the devspace.yaml - -## Synopsis - - -``` -devspace update dependencies [flags] -``` - -``` -####################################################### -############ devspace update dependencies ############# -####################################################### -Updates the git repositories of the dependencies defined -in the devspace.yaml -####################################################### -``` - - -## Flags - -``` - -h, --help help for dependencies -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_update_plugin.md b/docs/versioned_docs/version-5.18/commands/devspace_update_plugin.md deleted file mode 100644 index 7a5e70c265..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_update_plugin.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace update plugin" -sidebar_label: devspace update plugin ---- - - -Updates a devspace plugin - -## Synopsis - - -``` -devspace update plugin [flags] -``` - -``` -####################################################### -############# devspace update plugin ################## -####################################################### -Updates a plugin - -devspace update plugin my-plugin -####################################################### -``` - - -## Flags - -``` - -h, --help help for plugin - --version string The git tag to use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_upgrade.md b/docs/versioned_docs/version-5.18/commands/devspace_upgrade.md deleted file mode 100644 index 63dbb861ca..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_upgrade.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Command - devspace upgrade" -sidebar_label: devspace upgrade ---- - - -Upgrade the DevSpace CLI to the newest version - -## Synopsis - - -``` -devspace upgrade [flags] -``` - -``` -####################################################### -################## devspace upgrade ################### -####################################################### -Upgrades the DevSpace CLI to the newest version -####################################################### -``` - - -## Flags - -``` - -h, --help help for upgrade - --version string The version to update devspace to. Defaults to the latest stable version available -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_use.md b/docs/versioned_docs/version-5.18/commands/devspace_use.md deleted file mode 100644 index f385067a07..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_use.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Command - devspace use" -sidebar_label: devspace use ---- - - -Use specific config - -## Synopsis - - -``` -####################################################### -#################### devspace use ##################### -####################################################### -``` - - -## Flags - -``` - -h, --help help for use -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_use_context.md b/docs/versioned_docs/version-5.18/commands/devspace_use_context.md deleted file mode 100644 index ba2cf82676..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_use_context.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Command - devspace use context" -sidebar_label: devspace use context ---- - - -Tells DevSpace which kube context to use - -## Synopsis - - -``` -devspace use context [flags] -``` - -``` -####################################################### -############### devspace use context ################## -####################################################### -Switch the current kube context - -Example: -devspace use context my-context -####################################################### -``` - - -## Flags - -``` - -h, --help help for context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_use_namespace.md b/docs/versioned_docs/version-5.18/commands/devspace_use_namespace.md deleted file mode 100644 index b87ea9659f..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_use_namespace.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Command - devspace use namespace" -sidebar_label: devspace use namespace ---- - - -Tells DevSpace which namespace to use - -## Synopsis - - -``` -devspace use namespace [flags] -``` - -``` -####################################################### -############## devspace use namespace ################# -####################################################### -Set the default namespace to deploy to - -Example: -devspace use namespace my-namespace -####################################################### -``` - - -## Flags - -``` - -h, --help help for namespace - --reset Resets the default namespace of the current kube-context -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/commands/devspace_use_profile.md b/docs/versioned_docs/version-5.18/commands/devspace_use_profile.md deleted file mode 100644 index 438f066f05..0000000000 --- a/docs/versioned_docs/version-5.18/commands/devspace_use_profile.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "Command - devspace use profile" -sidebar_label: devspace use profile ---- - - -Use a specific DevSpace profile - -## Synopsis - - -``` -devspace use profile [flags] -``` - -``` -####################################################### -################ devspace use profile ################# -####################################################### -Use a specific DevSpace profile - -Example: -devspace use profile production -devspace use profile staging -devspace use profile --reset -####################################################### -``` - - -## Flags - -``` - -h, --help help for profile - --reset Don't use a profile anymore -``` - - -## Global & Inherited Flags - -``` - --config string The devspace config file to use - --debug Prints the stack trace if an error occurs - --disable-profile-activation If true will ignore all profile activations - --inactivity-timeout int Minutes the current user is inactive (no mouse or keyboard interaction) until DevSpace will exit automatically. 0 to disable. Only supported on windows and mac operating systems (default 180) - --kube-context string The kubernetes context to use - -n, --namespace string The kubernetes namespace to use - --no-warn If true does not show any warning when deploying into a different namespace or kube-context than before - -p, --profile strings The DevSpace profiles to apply. Multiple profiles are applied in the order they are specified - --profile-parent strings One or more profiles that should be applied before the specified profile (e.g. devspace dev --profile-parent=base1 --profile-parent=base2 --profile=my-profile) - --profile-refresh If true will pull and re-download profile parent sources - --restore-vars If true will restore the variables from kubernetes before loading the config - --save-vars If true will save the variables to kubernetes after loading the config - --silent Run in silent mode and prevents any devspace log output except panics & fatals - -s, --switch-context DEPRECATED: Switches and uses the last kube context and namespace that was used to deploy the DevSpace project - --var strings Variables to override during execution (e.g. --var=MYVAR=MYVALUE) - --vars-secret string The secret to restore/save the variables from/to, if --restore-vars or --save-vars is enabled (default "devspace-vars") -``` - diff --git a/docs/versioned_docs/version-5.18/configuration/commands/basics.mdx b/docs/versioned_docs/version-5.18/configuration/commands/basics.mdx deleted file mode 100644 index a01e314f4e..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/commands/basics.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Custom Commands -sidebar_label: commands ---- - -The idea of custom commands is that someone on a team defines a set of useful commands and stores them in the `devspace.yaml`, then commits and pushes this config to the code repository. Now, others can run these custom commands without having to remember all the details or having to read through endless pages of documentation. - -Custom commands are being shared in the `commands` section of `devspace.yaml`: -```yaml -# File: devspace.yaml -images: - default: - image: john/backend -commands: -- name: debug-backend - command: "devspace dev --profile=debug-backend $@" -profiles: -- name: debug-backend - patches: - - op: replace - path: images.default.entrypoint - value: ["npm", "run", "debug"] -``` - -:::note -Custom commands can be used for more than just running `devspace` commands, e.g. they can run any other script or command, set environment variables etc. If you are familiar with the `scripts` section of the `package.json` for Node.js, you will find that `devspace run [name]` works pretty much the same way as `npm run [name]` -::: - -The above example configuration would allow everyone to run the custom command `debug-backend` like this: -```bash -devspace run debug-backend -devspace run debug-backend --verbose-dependencies -devspace run debug-backend -- --verbose-dependencies -s -``` - -And `devspace run` would execute the following commands internally: -```bash -devspace dev --profile=debug-backend -devspace dev --profile=debug-backend --verbose-dependencies -devspace dev --profile=debug-backend --verbose-dependencies -s -``` - -:::note `--` End of Options Separator -The `--` between the command name and the additional flags for the command tells your terminal that the arguments and flags that follow after the `--` do not belong to `devspace run` and should not be parsed. It is not required but often helpful to use `--` when executing commands using `devspace run`. -::: - -:::info Interactive Commands -Custom commands proxy input and output streams, so you can even share interactive commands such as `devspace enter`. -::: - - -## Configuration - -### `name` -The `name` option is mandatory and expects a string with name that serves as an alias for the command provided in the `command` option. - - -### `command` -The `command` option is mandatory and expects a string with an arbitrary terminal command. - -While you can run any `devspace` command, you can also run other commands (if installed), set environment variables or use `bash` style expressions such as `&&`, `||` or `;`. To ensure that many of your team mates can run the command on any platform, it is highly recommended to keep your command expressions as simple as possible. - -:::info Cross-Platform -Write all commands in `bash` style. DevSpace is using a library to make them cross-platform executable. -::: - -### `appendArgs` -The `appendArgs` option expects either true or false and will append given arguments to the command. If not specified, this option defaults to false. - -Example: -```yaml -commands: -# Running 'devspace run append my-value' will print 'my-value' -- name: append - command: echo $@ -# Running 'devspace run no-append my-value' will print '' -- name: no-append - command: echo -# Running 'devspace run append-option my-value' will print 'my-value' -- name: append-option - appendArgs: true - command: echo -``` - -### `description` -The `description` option is optional and expects a string with a description of what this command does and when it should be used. This is only used for helping other users to understand the meaning of a command and will be shown when the user runs: `devspace list commands` - - -
- -## Useful Commands - -### `devspace list commands` -Run this command to list all custom commands that are configured: -```bash -devspace list commands -``` - - -### `devspace run dependency1.command` -You can run a command defined in one of the dependencies of the current project like this: -```bash -devspace run [dependency].[command] [command-flags-and-args] -``` - -:::note Working Directory -When running a command of a dependency, DevSpace will use the root folder of the dependency as current working directory when executing the command. -::: diff --git a/docs/versioned_docs/version-5.18/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-5.18/configuration/dependencies/basics.mdx deleted file mode 100644 index d8e454564c..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/dependencies/basics.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Dependencies -sidebar_label: "Basics" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: - -- You want to reuse an already existing `devspace.yaml` of another project -- You want to define a more complex pipeline with multiple build, hook and deploy steps -- You want to define a common build / deploy step for other projects - -Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. - - - - -```yaml -dependencies: -- name: api-server - source: - git: https://github.com/my-api-server - branch: stable - dev: - ports: true -- name: auth-server - source: - git: https://github.com/my-auth-server - revision: c967392 - profile: production -- name: database-server - source: - git: https://github.com/my-database-server - tag: v3.0.1 - subPath: /configuration - vars: - - name: ROOT_PASSWORD - value: ${ROOT_PASSWORD} -``` - - - - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - - - - -## Dependency Source -DevSpace is able to work with dependencies from the following sources: -- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration -- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) - - -## Execution Order - -Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 - dev: - sync: true -- name: dep2 - source: - path: dep2 - dev: - ports: true -images: - image1: - image: myimage/image -deployments: -- name: deployment1 - helm: - ... -dev: - ports: ... - sync: ... -``` - -### Explanation -In the above `devspace.yaml`, execution order would be as followed: -* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) -* Execute dependency dep2's pull secrets, image building & deployments -* Build image `image1` -* Deploy deployment `deployment1` -* Start merged portforwarding from `dep2` and `dev.ports` -* Start sync from `dep1` and `dev.sync` - -## Referencing Dependencies - -### Reference Image Names -You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageSelector: ${runtime.dependencies.dep1.images.image1} -``` - -With `dep1/devspace.yaml`: -```yaml -images: - image1: - image: myusername/devspace -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: myusername/devspace -``` - -### Referencing Dependencies in Deployment Values / Manifests - -It is also possible to reference a dependency's image with [runtime variables](../variables/runtime-variables.mdx) in a deployment: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -deployments: - - name: quickstart - helm: - componentChart: true - values: - containers: - - image: ${runtime.dependencies.dep1.image1.image}:${runtime.dependencies.dep1.image1.tag} # -> replaced with 'myusername/devspace:xxxx' -``` - -With a dependency `dep1/devspace.yaml` that looks like: -```yaml -images: - image1: - image: myusername/devspace -``` - -## Dependency Resolution -When a DevSpace project has dependencies, DevSpace will: - -1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository -2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) -3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets -4. Remove the leave node from the tree and repeat step 3 until everything has been deployed - -The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. - -### Redundant Dependencies -If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. - -### Circular Dependencies -If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. - -## Useful Commands - -### `devspace update dependencies` -If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.18/configuration/deployments/basics.mdx b/docs/versioned_docs/version-5.18/configuration/deployments/basics.mdx deleted file mode 100644 index bc80d1e7af..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/deployments/basics.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Deployments -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; - -Deployments are configured within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction - -- name: "deployment-2" # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml - -- name: "deployment-3" # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... - -- name: "deployment-4" # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: "deployment-1" # Name of this deployment - helm: # Deploy using the Component Helm Chart - componentChart: true # Use the component chart - values: ... # See: https://devspace.sh/component-chart/docs/introduction -``` - - - - -```yaml -deployments: -- name: database # Name of this deployment - helm: # Deploy a Helm Chart - chart: - name: bitnami/mysql # Deploy chart from bitnami registry - values: ... -- name: backend # Name of this deployment - helm: ... # Deploy another Helm Chart - chart: - name: ./chart # Deploy chart from local folder - values: ... -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - manifests: - - app/manifests/ - - db/deployment.yaml -``` - - - - -```yaml -deployments: -- name: backend # Name of this deployment - kubectl: # Deploy Kubernetes manifests or Kustomizations - kustomize: true - manifests: - - app/kustomization/ -``` - - - - -:::info Sequential Deployment -Unlike images which are build in parallel, deployments will be deployed sequentially following the order in which they are specified in the `devspace.yaml`. -::: - -## Run Deployments -When you run one of the following commands, DevSpace will run the deployment process: -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger the deployment process: -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - -## Deployment Process -DevSpace loads the `deployments` configuration from `devspace.yaml` and builds one deployment after another in the order that they are specified in the `deployments` array. Additionally, DevSpace also deploys related projects speficied in `dependencies`. - - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - -
- ---- - -## Useful Commands - -### `devspace list deployments` -This command lists all deployments and their status: -```bash -devspace list deployments -``` - -### `devspace render` -This command prints all Kubernetes manifests that would be created when running `devspace deploy` or `devspace dev` but without actually deploying them to the cluster: -```bash -devspace render -``` -In case of Helm deployments, this command behaves similar to `helm install --dry-run --debug` - -:::info Image Building & Tag Replacement -This command will build images (if necessary) and update the tags within manifests and Helm chart values. -::: diff --git a/docs/versioned_docs/version-5.18/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-5.18/configuration/deployments/helm-charts.mdx deleted file mode 100644 index d845717aa6..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/deployments/helm-charts.mdx +++ /dev/null @@ -1,571 +0,0 @@ ---- -title: Deploy Helm Charts -sidebar_label: helm ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentInfoComponentChart from '../../fragments/info-component-chart.mdx'; - -To deploy Helm charts, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - - - - - - -```yaml {5,6} -deployments: -- name: backend - helm: - chart: - name: chart-name - repo: https://my-charts.company.tld/ - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images.app as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: ${runtime.images.app.image} - # If registry.url/repo/image was found under images.app as well, will be - # rewritten to generated_tag - onlyTag: ${runtime.images.app.tag} -``` - - - - -```yaml {5} -deployments: -- name: backend - helm: - chart: - name: ./path/to/chart - values: - # If registry.url/repo/image was found under images as well, will be - # rewritten to registry.url/repo/image:generated_tag - imageWithTag: registry.url/repo/image - # If registry.url/repo/image was found under images.app as well, will be - # rewritten to registry.url/repo/image - imageWithoutTag: ${runtime.images.app.image} - # If registry.url/repo/image was found under images.app as well, will be - # rewritten to generated_tag - onlyTag: ${runtime.images.app.tag} -``` - - - - - -```yaml {5} -deployments: -- name: backend - helm: - chart: - git: - url: https://github.com//.git - # optional git configs - branch: branchName - tag: tag - revision: revision - subPath: subpath/chartdir -``` - - - - -## Chart - -### `componentChart` -The `componentChart` option expects a boolean which states if the Component Helm Chart should be used for deployment. - - - -:::warning -If `componentChart: true` is configured, all options under `chart` will be ignored. -::: - -#### Default Value for `componentChart` -```yaml -componentChart: false -``` - -#### Example: Component Chart Deployment -```yaml {4} -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: reg.tld/username/devspace - service: - ports: - - port: 3000 -``` - -### `chart.name` -The `name` option is mandatory and expects a string stating either: -- **a path to a local chart** that is stored on the filesystem -- **or the name of a remote chart** that is stored in a repository (one specified via [`repo` option](#chartrepo)) or in the form of `repo/name`, where `repo` was added via `helm repo add repo https://repo.url` beforehand - -DevSpace follows the same behavior as `helm install` and first checks if the path specified in `name` exists on the file system and is a valid chart. If not, DevSpace will assume that the `name` is not a path but the name of a remote chart located in a chart repository. - -#### Example: Simple Helm Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -``` - -### `chart.version` -The `version` option expects a string stating the version of the chart that should be used. - -#### Default Value for `version` -```yaml -version: "" -``` - -:::note Latest Version -If no version is specified, Helm will by default use the latest version of the chart. -::: - -#### Example: Custom Chart Version -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - version: "1.3.1" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --version="1.3.1" -``` - -### `chart.repo` -The `repo` option expects a string with a URL to a [Helm Chart Repository](https://helm.sh/docs/chart_repository/). This is equivalent of using the `--repo` flag in `helm install` - -#### Example: Custom Chart Repository -```yaml -deployments: -- name: database - helm: - chart: - name: custom-chart - repo: https://my-repo.tld/ -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database custom-chart --repo "https://my-repo.tld/" -``` - -### `chart.username` -The `username` option expects a string that specifies the user that should be used to access `chart.repo`. Will be used as value for the helm flag `--username` - -### `chart.password` -The `password` option expects a string that specifies the password that should be used to access `chart.repo`. Will be used as value for the helm flag `--password` - -## Values -Helm charts can be configured by overriding the default values of the chart. - -### `values` -The `values` option expects an object with values that should be overriding the default values of this Helm chart. - -Compared to the `valuesFiles` option, using `values` has the following advantages: -- It is easier to comprehend and faster to find (no references) -- It allows you to use [dynamic config variables](../../configuration/variables/basics.mdx) - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `values` -```yaml -values: {} -``` - -#### Example: Using Values in devspace.yaml -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - values: - mysqlRootPassword: ${MYSQL_ROOT_PASSWORD} - mysqlUser: db_user - mysqlDatabase: app_database -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --set mysqlRootPassword="$MYSQL_ROOT_PASSWORD" --set mysqlUser="db_user" --set mysqlDatabase="app_database" -``` - -### `valuesFiles` -The `valuesFiles` option expects an array of paths to yaml files which specify values for overriding the values.yaml of the Helm chart. - -Compared to the `values` option, using `valuesFiles` has the following advantages: -- It reduces the size of your `devspace.yaml` especially when setting many values for a chart -- It allows you to run Helm commands directly without DevSpace, e.g. `helm upgrade [NAME] -f mysql/values.yaml` - -:::info -Because both, `values` and `valuesFiles`, have advantages and disadvantages, it is often useful to combine them. When setting both, values defined in `values` have precedence over values defined in `valuesFiles`. -::: - -#### Default Value for `valuesFiles` -```yaml -valuesFiles: [] -``` - -#### Example: Using Values Files -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - valuesFiles: - - mysql/values.yaml - - mysql/values.production.yaml -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql -f mysql/values.yaml -f mysql/values.production.yaml -``` - - -### `replaceImageTags` -The `replaceImageTags` option expects a boolean stating if DevSpace should do [Image Tag Replacement](../../configuration/deployments/basics.mdx#3-tag-replacement). - -By default, DevSpace searches all your values (specified via `values` or `valuesFiles`) for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -DevSpace will replace the following things: -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - replaceImageTags: false -``` - - -## Helm Options - -### `upgradeArgs` -The `upgradeArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm upgrade` during deployment. - -### `templateArgs` -The `templateArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm template` during `devspace render`. - -### `deleteArgs` -The `deleteArgs` specifies an array of arguments that will be passed by devspace additionally to the standard arguments to `helm delete` during `devspace purge`. - -### `wait` -The `wait` option expects a boolean that will be used for the [helm flag `--wait`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `wait` -```yaml -wait: false -``` - -#### Example: Helm Flag Wait -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - wait: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --wait -``` - -### `displayOutput` - -The `displayOutput` option expects a boolean and allows helm output to be printed to the console after `helm install` and `helm upgrade`. This can be used to display `notes.txt` from your helm charts. - -#### Default Value for `displayOutput` -```yaml -displayOutput: false -``` - -#### Example: displayOutput -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - displayOutput: true -``` - -**Explanation:** -Deploying the above example would print the helm output and the `notes.txt` from the bitnami/mysql chart. - - -### `timeout` -The `timeout` option expects an integer representing a number of seconds that will be used for the [helm flag `--timeout`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -#### Default Value for `timeout` -```yaml -timeout: 5m0s # defined by helm -``` - -#### Example: Helm Flag Timeout -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - timeout: 300s -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --timeout=300s -``` - -### `force` -The `force` option expects a boolean that will be used for the [helm flag `--force`](https://helm.sh/docs/helm/helm_upgrade). - -#### Default Value for `force` -```yaml -force: false -``` - -#### Example: Helm Flag Force -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - force: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -helm install database bitnami/mysql --force -``` - -### `recreate` -The `recreate` option expects a boolean that states if DevSpace should set the Helm flag `--recreate-pods`. It tells Helm to restart all pods for applicable resources (e.g. Deployments). - -#### Default Value for `recreate` -```yaml -recreate: false -``` - -#### Example: Enable Recreate Pods -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - recreate: true -``` - -### `atomic` -The `atomic` option expects a boolean that states if DevSpace should pass the `--atomic` flag to Helm. If set, the upgrade process rolls back all changes in case the upgrade fails. This flag also sets the [`--wait` option](#wait). - -#### Default Value for `atomic` -```yaml -atomic: false -``` - -#### Example: Enable Atomic Deployment -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - atomic: true -``` - -### `cleanupOnFail` -The `cleanupOnFail` option expects a boolean that states if DevSpace should set the Helm flag `--cleanup-on-fail`. It allows that Helm deletes newly created resources during a rollback in case the rollback fails. - -#### Default Value for `cleanupOnFail` -```yaml -cleanupOnFail: false -``` - -#### Example: Enable Cleanup On Fail -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - cleanupOnFail: true -``` - -### `disableHooks` -The `disableHooks` option expects a boolean that tells DevSpace to disable hooks when executing Helm commands. - -#### Default Value for `disableHooks` -```yaml -disableHooks: false -``` - -#### Example: Disable Hooks -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - disableHooks: true -``` - -### `v2` -The `v2` option expects a boolean that tells DevSpace to use the legacy version 2 of Helm instead of Helm v3. - -#### Default Value for `v2` -```yaml -v2: false -``` - -### `tillerNamespace` -The `tillerNamespace` option expects a string that will be used for the [helm flag `--tiller-namespace`](https://helm.sh/docs/intro/using_helm/#helpful-options-for-installupgraderollback). - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning Deprecated -This config option is deprecated because Tiller is not necessary anymore since DevSpace supports Helm v3. -::: - -#### Default Value for `tillerNamespace` -```yaml -tillerNamespace: "" # defaults to default namespace of current context -``` - -#### Example: Change Tiller Namespace -```yaml -deployments: -- name: database - helm: - chart: - name: bitnami/mysql - tillerNamespace: my-tiller-ns - v2: true -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -# Helm v2 CLI -helm install --name database bitnami/mysql --tiller-namespace=my-tiller-ns -``` - - -### `path` -The `path` option is optional and expects a string with the path of an Helm v2 binary / executable file which should be used for Helm v2 deployments. - -:::warning Helm 2 Only -This config option is only used when [`v2: true`](#v2) is configured as well. -::: - -:::warning -Setting `path` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `helm` to your `$PATH` environment variable instead. -::: - - -## General Options - -### `name` -The `name` option is required and expects a string with the name of the release used to deploy this Helm chart. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: database - helm: - chart: - name: bitnami/mysql -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the Helm chart to. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: database - namespace: some-namespace - helm: - chart: - name: bitnami/mysql -``` - -## `disabled` - -If true, the deployment will not be deployed, rendered or purged. Can be useful in combination with config expressions or command variables. - diff --git a/docs/versioned_docs/version-5.18/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-5.18/configuration/deployments/kubernetes-manifests.mdx deleted file mode 100644 index f4a1a33d4c..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/deployments/kubernetes-manifests.mdx +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Deploy Kubernetes Manifests -sidebar_label: kubectl (manifests) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kubernetes manifests with `kubectl apply`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -- name: frontend - kubectl: - manifests: - - frontend/manifest.yaml -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -f backend/ -kubectl apply -f backend-extra/ -kubectl apply -f frontend/manifest.yaml -``` - -:::note Kubectl -Deployments with `kubectl` require `kubectl` to be installed. If the `kubectl` binary cannot be found within the `$PATH` variable and it is not specified by specifying the [`cmdPath` option](#cmdpath), DevSpace will download the `kubectl` binary into the `$HOME/.devspace/bin` folder. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths or path globs that point to Kubernetes manifest files (yaml or json files) or to folders containing Kubernetes manifests or Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ - - glob/path/to/manifests/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `createArgs` -The `createArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl create`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize create` to render the manifests using the default flags `--dry-run --output yaml --validate=false`. The actual deployment will be executed using `kubectl apply` after DevSpace has replaced the image tags within the rendered manifests in memory. -::: - -#### Default Value for `createArgs` -```yaml -createArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - createArgs: - - "--recursive" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl create --dry-run --output yaml --validate=false --recursive -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -## `disabled` - -If true, the deployment will not be deployed, rendered or purged. Can be useful in combination with config expressions or command variables. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.18/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-5.18/configuration/deployments/kustomizations.mdx deleted file mode 100644 index 9feb9cc2e1..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/deployments/kustomizations.mdx +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Deploy Kustomizations -sidebar_label: kubectl (kustomize) ---- - -import FragmentReplaceImageTags from '../../fragments/kubectl-replaceImageTags.mdx'; -import FragmentKubectlApplyArgs from '../../fragments/kubectl-options-applyArgs.mdx'; -import FragmentKubectlDeleteArgs from '../../fragments/kubectl-options-deleteArgs.mdx'; -import FragmentKubectlCmdPath from '../../fragments/kubectl-options-cmdPath.mdx'; -import FragmentKubectlKustomize from '../../fragments/kubectl-kustomize.mdx'; - -To deploy Kustomizations using `kustomize` / `kubectl apply -k`, you need to configure them within the `deployments` section of the `devspace.yaml`. - -## Example -```yaml {4} -deployments: -- name: my-deployment - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - -The above example will be executing during the deployment process as follows: -```bash -kubectl apply -k my-kustomization/ -kubectl apply -k another-kustomization/ -``` - -:::warning Kubectl or Kustomize Required -Kustomization deployments require `kubectl` or `kustomize` to be installed. If both are available, DevSpace will use the `kustomize` binary by default. -::: - - -## Manifests - -### `manifests` -The `manifests` option is mandatory and expects an array of paths that point to directories containing Kustomizations. - -#### Example: Manifests -```yaml -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - my-kustomization/ - - another-kustomization/ -``` - - -### `kustomize` - - - - -### `replaceImageTags` - - - - -## Kubectl Options - -### `applyArgs` - - - -### `kustomizeArgs` -The `kustomizeArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kustomize build`. - -:::info Kustomize Deployments -DevSpace only uses `kustomize build` to render the manifest templates. The actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `kustomizeArgs` -```yaml -kustomizeArgs: [] -``` - -#### Example: Custom Kustomize Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - kustomize: true - kustomizeArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kustomize build --timeout=10s --grace-period=30 -f backend/ -``` - -### `deleteArgs` - - - - -### `cmdPath` - - - - -## General Options - -### `name` -The `name` option is required and expects a string to identify this deployment. - -#### Example: Deployment Name -```yaml {2} -deployments: -- name: backend - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -### `namespace` -The `namespace` option is required and expects a string with the namespace used to deploy the manifests. - -:::warning -Only use this option if you really need to. Hard-coding the namespace in `devspace.yaml` makes it harder to share the configuration with your colleagues. It is recommended to set the default namespace of the current context instead using: -```bash -devspace use namespace [some-namespace] -``` -::: - -#### Example: Deployment Namespace -```yaml {3} -deployments: -- name: backend - namespace: some-namespace - kubectl: - manifests: - - backend/ - - backend-extra/ -``` - -## `disabled` - -If true, the deployment will not be deployed, rendered or purged. Can be useful in combination with config expressions or command variables. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.18/configuration/development/basics.mdx b/docs/versioned_docs/version-5.18/configuration/development/basics.mdx deleted file mode 100644 index b0116b8e6a..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/basics.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Development Mode -sidebar_label: Basics ---- - -import FragmentWarningMultipleDev from '../../fragments/warning-multiple-dev.mdx'; -import FragmentWorkflowDeployDependencies from '../../fragments/workflow-deploy-dependencies.mdx'; -import FragmentWorkflowBuildImages from '../../fragments/workflow-build-images.mdx'; -import FragmentWorkflowReplaceTags from '../../fragments/workflow-replace-tags.mdx'; -import FragmentWorkflowDeployProject from '../../fragments/workflow-deploy-project.mdx'; -import FragmentNoteGeneralPurposeCommand from '../../fragments/note-general-purpose-command.mdx'; -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -## Why? -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have a much greater confidence that everything will work in production when shipping new features. - -Kubernetes-based development can be useful in the following cases: -- Your applications needs to access cluster-internal services (e.g. Cluster DNS) -- You want to test your application in a production-like environment -- You want to debug issues that are hard to reproduce on your local machine - -The development experience is very similar to using `docker-compose`, so if you are already familiar on how to develop with `docker-compose`, DevSpace will behave very similar. One of the major benefits of DevSpace versus docker-compose is that DevSpace allows you to develop in any Kubernetes cluster, either locally using minikube, Docker Kubernetes etc. or in any remote Kubernetes cluster. - - -## Start Development Mode -Start the development mode using this command: -```bash -devspace dev -``` - - - -### Important Flags for `devspace dev` -The following flags are available for all commands that trigger image building: -- `-t / --terminal` starts a terminal to a container -- `-d / --force-deploy` redeploy all deployments (even if they could be skipped because they have not changed) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed) - - - -## Development Process -The development process first runs the [deployment process](../../configuration/deployments/basics.mdx) (1. - 4.) and then continues with starting the development-specific features. - -### 1. Deploy Dependencies - - - - -### 2. Build, Tag & Push Images - - - - -### 3. Tag Replacement - - - - -### 4. Deploy Project - - - - -### 5. Start Port-Forwarding -DevSpace iterates over every item in the `dev.ports` array defined in the `devspace.yaml` and starts port-forwarding for each of the entries and the port mappings they define in the `forward` section. - -:::note -Before starting the actual port-forwarding threads, DevSpace waits until the containers and services are ready. -::: - -:::info -Port-Fowarding allows you to access your containers and Kubernetes services via localhost. -::: - -For detailed logs about the port-forwarding, take a look at `.devspace/logs/portforwarding.log`. - - -### 6. Start File Synchronization -DevSpace iterates over every item in the `dev.sync` array defined in the `devspace.yaml` and starts a bi-directional, real-time code synchronization for each of the entries and the path mappings they define. - -:::note Initial Sync -Right after starting the file synchronization, DevSpace runs the so-called initial sync which quickly computes the differences between your local folders and the remote container filesystems. If DevSpace detects changes, it synchronizes them first to get a clean state before starting the real-time synchronization which is invoked every time a file changes. -::: - -For detailed logs about the file synchronzation, take a look at `.devspace/logs/sync.log` for the current session and `.devspace/logs/sync.log.old` for previous logs. - - -### 7. Stream Logs or Open Terminal -DevSpace provides two options to develop applications in Kubernetes: -- using multi-container log streaming (default) -- using an interactive terminal session (run `devspace dev -i`) - -:::note Multi-Container Log Streaming (default) -The first option starts your application as defined in your Dockerfile or in your Kubernetes pod definition. After the pods are started, DevSpace streams the logs of all containers that are started with an image that was built during the image building process. Each log line is prefixed with the image name or alternatively with the pod name of the container. Before starting the actual log streaming, DevSpace prints the last 50 log lines of each container by default. - -Learn how to [customize which containers should be included in the log stream and how many log lines should be shown in the beginning](../../configuration/development/log-streaming.mdx). -::: - -:::note Terminal Session -To start a terminal mode, run: -```bash -devspace dev -t -``` -Instead of starting the multi-container log streaming, you can also start development mode using a terminal session. - -Terminal is configurable by [using the `dev.terminal` configuration section](../../configuration/development/terminal.mdx). -::: - -### 8. Open Links (optional) -DevSpace iterates over every item in the `dev.open` array defined in the `devspace.yaml` and tries to open the URL you provide for each item using the following method: - - - -Learn more about [configuring auto-opening links](../../configuration/development/open-links.mdx). - - - -## Useful Commands - -### `devspace enter` -The command `devspace dev -t` starts a terminal but it also starts port-forwarding and file synchronization which can only be opened once. However, you often need additional terminal sessions. To open a simple terminal session without starting port-forwarding and file sync, run the following command: -```bash -devspace enter -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace logs [-f]` -If you want to print or stream the logs of a single container, run: -```bash -# Print logs -devspace logs - -# Stream logs -devspace logs -f -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace sync` -If you want to start code synchronization on-demand (and even outside a DevSpace project), you can run commands like the ones shown here: -```bash -devspace sync --local-path=subfolder --container-path=/app -devspace sync --exclude=node_modules --exclude=test -devspace sync --pod=my-pod --container=my-container -``` - -If you do not provide a selector (e.g. pod name, label selector or image selector), DevSpace will show a picker with all available pods and containers. - - - - -### `devspace open` -To view your project in the browser either via port-forwarding or via ingress (domain), run the following command: -```bash -devspace open -``` -When DevSpace asks you how to open your application, you have two options as shown here: -```bash -? How do you want to open your application? - [Use arrows to move, space to select, type to filter] -> via localhost (provides private access only on your computer via port-forwarding) - via domain (makes your application publicly available via ingress) -``` -To use the second option, you need to make sure that the DNS of your domain points to your Kubernetes cluster and that you have an ingress-controller running in your cluster. - -:::info Automatic Error Analytics -If your application does not open as exepected, run [`devspace analyze` and DevSpace will try to identify the issue](#devspace-analyze). -::: - - -### `devspace analyze` -If your application is not starting as expected or there seems to be some kind of networking issue, you can let DevSpace run an automated analysis of your namespace using the following command: -```bash -devspace analyze -``` -After analyzing your namespace, DevSpace compiles a report with potential issues, which is a good starting point for debugging and fixing issues with your deployments. - - -### `devspace list commands` -DevSpace allows you to share commands for common development tasks which can be executed with `devspace run [command-name]`. To get a list of available commands, run: -```bash -devspace list commands -``` -Learn how to [configure shared commands for `devspace run`](../../configuration/commands/basics.mdx). - - -### `devspace list deployments` -To get a list of all deployments as well as their status and other information, run the following command: -```bash -devspace list deployments -``` - - -### `devspace purge` -If you want to delete a deployment from Kubernetes you can run: -```bash -# Removes all deployments remotely -devspace purge -# Removes deployment with given name -devspace purge --deployments=my-deployment-1,my-deployment-2 -``` - -:::warning -Purging a deployment does not remove it from the `deployments` section in the `devspace.yaml`. It just removes the deployment from the Kubernetes cluster. To remove a deployment from `devspace.yaml`, run `devspace remove deployment [NAME]`. -::: - -### `devspace update dependencies` -If you are using dependencies from other git repositories, use the following command to update the cached git repositories of dependencies: -```bash -devspace update dependencies -``` diff --git a/docs/versioned_docs/version-5.18/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-5.18/configuration/development/file-synchronization.mdx deleted file mode 100644 index 29183a9a5a..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/file-synchronization.mdx +++ /dev/null @@ -1,750 +0,0 @@ ---- -title: Configure File Synchronization -sidebar_label: sync ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -The code synchronization feature of DevSpace allows you to use hot reloading during development. Especially when using programming languages and frameworks that support hot reloading with tools like nodemon, re-building and re-deploying containers is very annoying and time consuming. Therefore, DevSpace uses a smart syncing mechanism that is able to sync local file changes to remote containers directly without the need of rebuilding or restarting the container. - -When starting the development mode, DevSpace starts the file sync as configured in the `dev.sync` section of the `devspace.yaml`. -```yaml {15-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - sync: - - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -``` - -:::info Start Sync Only -To only start the file sync without the other functions of the development mode, use `devspace sync` or `devspace sync --config=devspace.yaml` (to load the config). -::: - -Every sync configuration consists of two essential parts: -- [Pod/Container Selection](#podcontainer-selection) -- [Sync Path Mapping via `localSubPath` and `containerPath`](#sync-path-mapping) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this sync configuration. This can be used as a: -* Steady identifier when using profile patches -* When targeting this sync configuration with the before or after initial sync hook -* To override the log message prefix for this sync configuration. - -For example: -```yaml {3} -dev: - sync: - - name: devbackend - imageSelector: john/devbackend - localSubPath: ./ - containerPath: /app - excludePaths: - - node_modules/ - - logs/ -hooks: -- events: ["after:initialSync:devbackend"] - command: |- - /app/rebuild.sh - container: - imageSelector: john/devbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which the file synchronization should be established to: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Auto Reconnect -If the sync is unable to establish a connection to the selected container or loses it after starting the sync, DevSpace will try to restart the sync several times. -::: - -### `imageSelector` - - -#### Example: Select Container by Image -```yaml -vars: - - name: backend-image - value: john/devbackend - - name: backend-debugger-image - value: john/debugger -images: - backend: - image: ${backend-image} - backend-debugger: - image: ${backend-debugger-image} -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: ${backend-image} - - name: container-1 - image: ${backend-debugger-image} -dev: - sync: - - imageSelector: ${backend-image} - excludePaths: - - node_modules/ - - logs/ - - imageSelector: ${backend-debugger-image} - localSubPath: ./debug-logs - containerPath: /logs -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` or `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first sync configuration in the `dev.sync` section references the same image as `images.backend`. That means DevSpace would select the first container for file synchronization, that would match `john/devbackend:tag(backend)`, where `tag(backend)` is the last built tag of `images.backend` -- The first sync configuration does not define `localSubPath`, so it defaults to the project's root directory (location of `devspace.yaml`). -- The first sync configuration does not define `containerPath`, so it defaults to the container's working directory (i.e. `WORKDIR`). -- The `imageSelector` option of the second sync configuration in the `dev.sync` section references the same image as `images.backend-debugger`. That means DevSpace would select the second container for file synchronization, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following sync processes would be started when using the above config example assuming the local project root directoy `/my/project/`: - -1. `localhost:/my/project/` forwards to `container-0:$WORKDIR` **\*** -2. `localhost:/my/project/debug-logs/` forwards to `container-1:/logs` - -**\* Changes on either side (local and container filesystem) that occur within the sub-folders `node_modules/` and `logs/` would be ingored.** - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - sync: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - containerName: container-0 - localSubPath: ./src - containerPath: /app/src -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because the selected pod has two containers, we also need to specify the `containerName` option which defines the container that should be used for the file synchronization. - - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -#### Example -**See "[Example: Select Container by Label](#example-select-container-by-label)"** - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - - -
- -## Sync Path Mapping - -### `localSubPath` -The `localSubPath` option expects a string with a path that is relative to the location of `devspace.yaml`. - -#### Default Value For `localSubPath` -```yaml -localSubPath: ./ # Project root directory (folder containing devspace.yaml) -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -### `containerPath` -The `containerPath` option expects a string with an absolute path on the container filesystem. - -#### Default Value For `containerPath` -```yaml -containerPath: $WORKDIR # working directory, set as WORKDIR in the Dockerfile -``` - -#### Example -**See "[Example: Select Container by Image Name](#example-select-container-by-image)"** - - -
- -## Exclude Paths -The config options for excluding paths use the same syntax as `.gitignore`. - -:::note -An exclude path that matches a folder recursively excludes all files and sub-folders within this folder. -::: - -### `excludePaths` -The `excludePaths` option expects an array of strings with paths that should not be synchronized between the local filesystem and the remote container filesystem. - -#### Default Value For `excludePaths` -```yaml -excludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example: Exclude Paths from Synchronization -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ - downloadExcludePaths: - - tmp/ -``` -**Explanation:** -- Files in `logs/` and in `more/logs/` would not be synchronized at all. -- Files in `node_modules/` would only be synchronized from the container to the local filesystem but not the other way around. -- Files in `tmp/` would only be synchroniyed from the local to the container filesystem but not the other way around. - -#### Example: Only Sync Specific Folders -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - '**' - - '!/my-folder-1/' - - '!/my-folder-2/' -``` -**Explanation:** -- All files will be excluded except those in folders `./my-folder-1/` and `./my-folder-2/` - -### `excludeFile` -The `excludeFile` option expects a path to a file from which the exclude paths can be loaded. Once loaded, the behavior is identical to the `excludePaths` option. This is useful for sharing a common list of exclude paths between many components. The earlier example, [Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization), can be converted to files as follows: - -#### Example: Exclude Paths from Synchronization using files -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludeFile: .gitignore - uploadExcludeFile: upload.gitignore - downloadExcludeFile: download.gitignore -``` - -#### Example: `.gitignore` -``` -log/ -more/logs/ -``` - -#### Example: `upload.gitignore` -``` -node_modules/ -``` - -#### Example: `download.gitignore` -``` -tmp/ -``` - -### `downloadExcludePaths` -The `downloadExcludePaths` option expects an array of strings with paths that should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludePaths` -```yaml -downloadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `downloadExcludeFile` -The `downloadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the remote container filesystem to the local filesystem. - -#### Default Value For `downloadExcludeFile` -```yaml -downloadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -### `uploadExcludePaths` -The `uploadExcludePaths` option expects an array of strings with paths that should not be synchronized from the local filesystem to the remote container filesystem. - -:::info -This option is often useful if you want to download a dependency folder (e.g. `node_modules/`) for code completion but you never want to upload anything from there because of compiled binaries that are not portable between local filesystem and container filesystem (e.g. when your local system is Windows but your containers run Linux). -::: - -#### Default Value For `uploadExcludePaths` -```yaml -uploadExcludePaths: [] # Do not exclude anything from file synchronization -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization](#example-exclude-paths-from-synchronization)"** - -### `uploadExcludeFile` -The `uploadExcludeFile` option expects a path to a file from which the exclude paths can be loaded. These paths should not be synchronized from the local filesystem to the remote container filesystem. - -#### Default Value For `uploadExcludeFile` -```yaml -uploadExcludeFile: "" # Do not load exclude paths from a file -``` - -#### Example -**See "[Example: Exclude Paths from Synchronization using files](#example-exclude-paths-from-synchronization-using-files)"** - -
- -## Post-Sync Commands -Sometimes it is useful to execute commands after the sync uploads files/directories between the local filesystem and the container. - -:::warning -Make sure that post-sync commands will **not** trigger a new sync process which could lead to an **endless loop**. -::: - -### `onUpload.restartContainer` -The `restartContainer` option expects a boolean which defines if DevSpace should restart the container every time either a single file or even a batch of files have been uploaded to the container using file sync. - -:::caution Restart Helper Required -Setting `restartContainer: true` requires to set `injectRestartHelper: true` for the image that is used to run the affected container. Otherwise, this option does not have any effect. -::: - -:::note When not to use this option -Using `restartContainer: true` is most useful if your application runs based on a compiled language and you are **not** using a framework or language specific tool which provides hot reloading capabilities. If you are using tools like nodemon or frameworks like React, Rails or Flask, they allow you to enable hot reloading which may be much faster than restarting the entire container. In this case you should disable `restartContainer`. -::: - -#### Example: Enable Container Restart -```yaml {4,16} -images: - backend: - image: john/devbackend - injectRestartHelper: true -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - restartContainer: true -``` - - -### `onUpload.exec` -The `onUpload.exec` option defines command(s) that should be executed after DevSpace uploaded files and folder to the container. DevSpace will make sure that those commands are not executed while initially syncing the state and command execution will also halt any syncing activities. - -If this is defined together with `onUpload.restartContainer`, DevSpace will make sure that the commands are always executed **before** the container is restarted. - -#### Example: Post-Upload Commands -```yaml {14-29} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - onUpload: - # These post-sync commands will be executed after DevSpace synced changes to the container in the given order - exec: - - name: npm-install - command: |- - npm install - onChange: ["./package.json"] - - command: |- - echo 123 > local.txt - local: true # Execute this command locally instead of in the container - - command: "touch abc.txt" # string | Command that should be executed after DevSpace made changes - args: [] # string[] | Optional args that will force DevSpace to not execute the command in a shell - failOnError: false # bool | If true, DevSpace will restart the sync if the command fails (default: false) - local: false # bool | If true, DevSpace will run the command locally instead of in the container (default: false) - onChange: ["package.json"] # string[] | Optional array of file patterns that will trigger this command -``` - -## One-Directional Sync -These flags allow for local or remote container file systems to be ignored during synchronization. - -### `disableDownload` -The `disableDownload` option expects a boolean which enables/disables all synchronization from the remote container filesystem to the local filesystem. - -#### Default Value For `disableDownload` -```yaml -disableDownload: false # Do not ignore remote container files during synchronization -``` - -#### Example: Synchronize Local Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableDownload: true - excludePaths: - - logs/ - - more/logs/ - uploadExcludePaths: - - node_modules/ -``` - -### `disableUpload` -The `disableUpload` option expects a boolean which enables/disables all synchronization from the local filesystem to the remote container filesystem. - -#### Default Value For `disableUpload` -```yaml -disableUpload: false # Do not ignore local files during synchronization -``` - -#### Example: Synchronize Remote Container Filesystem Only -```yaml {14-20} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - disableUpload: true - excludePaths: - - logs/ - - more/logs/ - downloadExcludePaths: - - tmp/ -``` - - -
- -## Initial Sync - -### `initialSync` -The `initialSync` option expects a string with an initial sync strategy. The following strategies are available: - -#### • `mirrorLocal` mirrors the local filesystem inside the container (default) - -1. deletes all files inside the conainer that are not existing on the local filesystem -2. uploads all files which are existing on the local filesystem but are missing within the container -3. resolves all file conflicts (different content on local filesystem than in inside the container) by preferring the file on the local filesystem (i.e. all files in the container will be replaced if they are different than on the local filesystem) - -#### • `preferLocal` is like `mirrorLocal` but skips step 1. - -#### • `mirrorRemote` mirrors the container files to the local filesystem: - -1. deletes all files on the local filesystem that are not existing inside the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the file within the container (i.e. all files on the local filesystem will be replaced if they are different than inside the container) - -#### • `preferRemote` is like `mirrorRemote` but skips step 1. - -#### • `preferNewest` merges local and remote filesystem while resolving all conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem -3. resolves all file conflicts (different content on local filesystem than inside the container) by preferring the newest file (i.e. compares last modified timestamps and replaces all outdated files) - -#### • `keepAll` merges local and remote filesystem without resolving any conflicts - -1. uploads all files which are existing on the local filesystem but are missing within the container -2. downloads all files which are existing inside the container but are missing on the local filesystem - -#### Default Value For `initialSync` -```yaml -initialSync: mirrorLocal -``` - -#### Example: Configuring Initial Sync -```yaml {19} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - excludePaths: - - node_modules/* - - imageSelector: john/devbackend - localSubPath: ./node_modules/ - containerPath: /app/node_modules/ - initialSync: preferRemote -``` -**Explanation:** -With this configuration, `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- The first sync config section would synchronize all files except files within `node_modules/`. This means that during initial sync, all remote files that are not existing locally would be deleted and other files would be updated to the most recent version. -- The second sync config section would only synchronize files within `node_modules/` and because of `initialSync: preferRemote`, DevSpace would download all remote files which are not present on the local filesystem and override all local files which are different than the files within the container. - - -### `waitInitialSync` -The `waitInitialSync` option expects a boolean which defines if DevSpace should wait until the initial sync process has terminated before opening the container terminal or the multi-container log streaming. - -#### Default Value For `waitInitialSync` -```yaml -waitInitialSync: false # Start container terminal or log streaming before initial sync is completed -``` - -#### Example: Wait For Initial Sync To Complete -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - waitInitialSync: true -``` -**Explanation:** -With the configuration `devspace dev` would do the following: -- DevSpace would start port-forwarding and file synchronzation. -- Initial sync would be started automatically. -- After the initial sync process is finished, DevSpace starts the multi-container log streaming. - - -
- -## Network Bandwidth Limits -Sometimes it is useful to throttle the file synchronization, especially when large files or a large number of files are expected to change during development. The following config options provide these capabilities: - -### `bandwidthLimits.download` -The `bandwidthLimits.download` option expects an integer representing the max file download speed in KB/s, e.g. `download: 100` would limit the file sync to a download speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example: Limiting Network Bandwidth -```yaml {14-16} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - bandwidthLimits: - download: 200 - upload: 100 -``` -**Explanation:** -- Downloading files from the container to the local filesystem would be limited to a transfer speed of `200 KB/s`. -- Upload files from the local filesystem to the container would be limited to a transfer speed of `100 KB/s`. - -### `bandwidthLimits.upload` -The `bandwidthLimits.upload` option expects an integer representing the max file upload speed in KB/s, e.g. `upload: 100` would limit the file sync to a upload speed of `100 KB/s`. - -:::note -By default, the file synchronization algorithm uses the maximum bandwidth possible to make the sync process as fast as possible. -::: - -#### Example -**See "[Example: Limiting Network Bandwidth](#example-limiting-network-bandwidth)"** - -## Advanced Options - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. - -### `polling` - -Polling specifies if the DevSpace helper should traverse over all watched files and folders periodically in the container to identify file changes. By default, DevSpace will use [inotify](https://man7.org/linux/man-pages/man7/inotify.7.html) to detect changes which is more efficient, however sometimes it might be unsupported or not feasible in certain situations, in which polling might be preferred. - -```yaml {14} -images: - backend: - image: john/devbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend -dev: - sync: - - imageSelector: john/devbackend - polling: true -``` - -:::info -Polling might increase CPU consumption of the container drastically, depending on the amount of files and folders watched -::: - -:::info -If you are using a DevSpace config version below `v1beta10`, polling will be enabled by default, as it was the default syncing method in older DevSpace versions -::: - -## Useful Commands - -### `devspace sync` -If you want to start file synchronzation on-demand without having to configure it in `devspace.yaml` and without starting port-forwarding or log streaming etc, you can use the `devspace sync` command as shown in the examples below: -```bash -# Select pod with a picker -devspace sync --local-path=subfolder --container-path=/app - -# Select pod and container by name and use current working directory as local-path -devspace sync --pod=my-pod --container=my-container --container-path=/app -``` - - - -## FAQ - -
-How does the sync work? - -
- -DevSpace establishes a bi-directional code synchronization between the specified local folders and the remote container folders. It automatically recognizes any changes within the specified folders during the session and will update the corresponding files locally and remotely in the background. It uses a small helper binary that is injected into the target container to accomplish this. - -The algorithm roughly works like this: - -1. Inject a small helper binary via `kubectl cp` into the target container -2. Run initial sync accoring to the [`initialSync` config option](#initial-sync) -3. Watch for file changes on both sides (local and remote) and sync them according to the [sync path mappings](#sync-path-mapping) -4. After every sync process, [restart the container](#onuploadrestartcontainer) or run other custom [post-sync commands](#post-sync-commands) (optional) - -
- -
- -
-Are there any requirements for the sync to work? - -
- -The `tar` command has to be present in the container otherwise `kubectl cp` does not work and the helper binary cannot be injected into the container. - -Other than that, no server-side component or special container privileges for code synchronization are required, as the sync algorithm runs completely client-only within DevSpace. The synchronization mechanism works with any container filesystem and no special binaries have to be installed into the containers. File watchers running within the containers like nodemon will also recognize changes made by the synchronization mechanism. - -
- -
- -
-What is the performance impact on using the file sync? - -
- -The sync mechanism is normally very reliable and fast. Syncing several thousand files is usually not a problem. Changes are packed together and compressed during synchronization, which improves performance especially for transferring text files. Transferring large compressed binary files is possible, but can affect performance negatively. Remote changes can sometimes have a delay of 1-2 seconds till they are downloaded, depending on how big the synchronized folder is. It should be generally avoided to sync the complete container filesystem. - -
- -
diff --git a/docs/versioned_docs/version-5.18/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-5.18/configuration/development/log-streaming.mdx deleted file mode 100644 index a8725c3b02..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/log-streaming.mdx +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Configure Log Streaming -sidebar_label: logs ---- - -By default, DevSpace streams the logs of all containers that use one of the images defined in the `images` section of the `devspace.yaml`. - -To control which container logs should be streamed, you can configure the `dev.logs` section in the `devspace.yaml`. -```yaml {9-17} -images: - frontend: - image: gcr.io/my-org/appfrontend - backend: - image: john/appbackend - database: - image: john/database -dev: - logs: - showLast: 200 - # To display the sync log as well - sync: true - selectors: - - imageSelector: john/appbackend - - imageSelector: john/database -``` - -DevSpace will continously check what pods match the given selectors and start or end log streaming accordingly. - -## Configuration - -### `selectors` - -DevSpaces allows log streaming from pods and containers based on label or image selectors. You can configure them under the option `selectors`. - -```yaml -dev: - logs: - selectors: - # Selects all pods with the given label selectors and streams the logs to the console - - labelSelector: - abc: def - containerName: optional - namespace: optional - - labelSelector: - other: selector - - imageSelector: nginx - namespace: optional -``` - -### `sync` -The `sync` option expects an boolean which defines if the sync log should be merged with the pod and container logs. By default this option is true. - -### `showLast` -The `showLast` option expects an integer which defines how many log lines DevSpace will print for each container before starting to stream the container's logs in real-time. - -#### Default Value For `showLast` -```yaml -showLast: 50 -``` - -#### Example: Show Last 200 Log Lines -```yaml {22} -images: - frontend: - image: john/appfrontend - backend: - image: john/appbackend -deployments: -- name: app-frontend - helm: - componentChart: true - values: - containers: - - image: john/appfrontend -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - showLast: 200 -``` -**Explanation:** -- The above example defines 2 images and 2 deployments. -- DevSpace would stream the logs of: - - The container of deployment `app-frontend` because the image is `john/appfrontend` = `images.frontend.image` - - Only the first container of deployment `app-backend` because the image is `john/appbackend` = `images.backend.image` -- For each of the two containers, DevSpace would print the last 200 log lines before starting to stream the logs - - -### `disabled` -The `disabled` option expects a boolean which defines if DevSpace should start multi-container log streaming when running `devspace dev` or if DevSpace should just start other services (e.g. port-forwarding and sync) without starting the log stream. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disable Log Streaming -```yaml {14} -images: - backend: - image: john/appbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/appbackend - - image: john/appbackend-sidecar -dev: - logs: - disabled: true -``` diff --git a/docs/versioned_docs/version-5.18/configuration/development/open-links.mdx b/docs/versioned_docs/version-5.18/configuration/development/open-links.mdx deleted file mode 100644 index 41c1af1852..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/open-links.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Open Links in Browser -sidebar_label: open ---- - -import FragmentWorkflowOpenLinks from '../../fragments/workflow-open-links.mdx'; - -DevSpace allows you to define URLs that should open after deploying an application in development mode, i.e. using `devspace dev`. - -The configuration for automatically opening URLs can be found in the `dev.open` section of `devspace.yaml`. -```yaml -dev: - open: - - url: http://localhost:3000/ - - url: http://localhost:8089/ # DevSpace UI -``` - -:::note -Setting `dev.open` only affects `devspace dev`. To open your application after running `devspace deploy`, run `devspace open`. -::: - - -## Workflow - - - -## Configuration - -### `open` -The `open` option expects an array of auto-open configurations with exactly one of the following properties: -- `url` to open a URL in the default browser - -#### Default Value For `open` -```yaml -open: [] -``` - -#### Example: Open URL when Starting Dev Mode -```yaml -dev: - open: - - url: http://localhost:3000/login -``` -**Explanation:** -Running `devspace dev` using the above configuration would do the following: -- Build images and deploy the application -- Start port-forwarding and code-synchronization -- DevSpace opens the browser with URL `http://localhost:3000/login` diff --git a/docs/versioned_docs/version-5.18/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-5.18/configuration/development/port-forwarding.mdx deleted file mode 100644 index 6bd9eefb45..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/port-forwarding.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Configure Port-Forwarding -sidebar_label: ports[].forward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - - -Port-forwarding allows you to access your application on `localhost:[PORT]` by forwarding the network traffic from a localhost port to a specified port of a container. - -When starting the development mode, DevSpace starts port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {15-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -``` - -:::warning Unique Local Port -The `port` option must be unique across your entire `ports` section, e.g. you can only use the value `8080` once for the `port` option in your `ports` section. -::: - -Every port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-forward) - -## Configuration - -### `name` -The `name` option is optional and expects a string stating the name of this port-forwarding configuration. This can be used as a steady identifier when using profile patches or to override the log message prefix for this port configuration. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod Selection -The following config options are needed to determine the pod to which the traffic should be forwarded: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a port-forwarding connection to the selected pod or loses it after starting the port-forwarding, DevSpace will try to restart port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image Name -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - forward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageName` option of the first port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageName` option of the second port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following port-forwarding processes would be started when using the above config example: -- `localhost:8080` forwards to `container-0:80` -- `localhost:3000` forwards to `container-1:3000` - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - forward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `forward` -The `forward` section defines which localhost `port` should be forwarded to the `remotePort` of the selected container. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "localhost" # listen on all network interfaces -``` diff --git a/docs/versioned_docs/version-5.18/configuration/development/replace-pods.mdx b/docs/versioned_docs/version-5.18/configuration/development/replace-pods.mdx deleted file mode 100644 index ee33858993..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/replace-pods.mdx +++ /dev/null @@ -1,317 +0,0 @@ ---- -title: Replacing Pods for Development -sidebar_label: replacePods ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -`replacePods` gives you the option to exchange an already running or just deployed pod with a modified version. This is especially useful if you: - -- Need to configure or disable an option on a pod which is not configurable via your helm chart or manifests -- Do not want to use DevSpace for your pipeline and instead only want to use DevSpace for development -- Want to debug a setup in an already deployed app by exchanging a single pod temporarily with modifications - -For example: -```yaml -vars: -- name: IMAGE - value: idonotexist:neverexisted -deployments: -- name: my-app - helm: - componentChart: true - values: - containers: - - image: ${IMAGE} -dev: - # DevSpace will try to find a pod with the given image selector. If found (even if its currently in a failed state) - # DevSpace will copy the pod, scale down the owning ReplicaSet, Deployment or StatefulSet - # and create the new modified pod in the cluster. - replacePods: - - imageSelector: ${IMAGE} - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - # This will create a terminal to the replaced pod - terminal: - imageSelector: ${IMAGE} - # This will sync to the replaced pod's working directory - sync: - - imageSelector: ${IMAGE} -``` - -## How does it work? - -Each entry that you specify under `dev.replacePods` will tell DevSpace to search for a pod that should be replaced with the given configuration. If DevSpace finds a pod to replace, it does the following things: -- Copy the pod.metadata and pod.spec of the already running pod -- Scale down the owning ReplicaSet, Deployment or StatefulSet replicas to 0 -- Apply the patches to the copied pod -- Create the copied pod through a replica set in the cluster - -Within the `dev` part of DevSpace, replacing pods is the first step that is executed, which means that all other services such as port-forwarding, sync, log streaming or terminal forwarding will wait until DevSpace has either replaced the pods or already found replaced pods. The services will then target the newly created patched pod instead of the old one. - -:::note -DevSpace will automatically recognize changes to the parent Deployment, ReplicaSet or StatefulSet and apply them to the replaced pod automatically in the next run. -::: - -## Configuration - -### `name` -The `name` option is optional and expects a string stating the name of this replace pods configuration. This can be used as a steady identifier when using profile patches or to override the log messages for this replace pods configuration. - -For example: -```yaml {3} -dev: - replacePods: - - name: devbackend - imageSelector: john/devbackend - replaceImage: ubuntu:latest -profiles: -- name: production - patches: - - op: replace - path: dev.replacePods.name=devbackend.imageSelector - value: john/prodbackend -``` - -## Pod/Container Selection -The following config options are needed to determine the container which should be replaced: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -### `imageSelector` - - -#### Example: Select Container by Image Selector -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend -dev: - replacePods: - - imageSelector: john/devbackend - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - terminal: - imageSelector: john/devbackend -``` - -### `labelSelector` - - -#### Example: Select Container by Label -```yaml -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: idontexist -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - replaceImage: ubuntu:latest - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] - - op: replace - path: spec.containers[0].workingDir - value: "/workdir" - sync: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -### `containerName` -The `containerName` option expects a string with a container name. This option is used to decide which container should be selected when using the `labelSelector` option because `labelSelector` selects a pod and a pod can have multiple containers. - -:::info -The `containerName` option is not required if the pod you are selecting using `imageName` or `labelSelector` has only one container. -::: - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the container from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Pod Modifications - -### `replaceImage` - -`replaceImage` expects a string with the new image name (inclusive tag) that should be used for the selected pod. For example: `replaceImage: my-repo/my-debug-image:1.0`. In addition, DevSpace will also replace the following things: - -- **registry.url/repo/name** that corresponds to a `images.*.image`, will be rewritten to `registry.url/repo/name:generated_tag` -- **${runtime.images.image-key.image}** that corresponds to a `images.*` key, will be rewritten to `registry.url/repo/name` -- **${runtime.images.image-key.tag}** that corresponds to a `images.*` key, will be rewritten to `xApsTn` - -### `patches` - -`patches` define more generic patches that should be applied to the pod. You can basically modify anything in the pod here. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as implemented by the [yaml-patch](https://github.com/krishicks/yaml-patch) library. - -The `patches` option expects a patch object which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the pod (e.g. `metadata.annotations`, `spec.containers.name=backend.env`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `metadata.annotations`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `spec.containers`), you have two options: - -1. Use the index of the array item you want to patch, e.g. `spec.containers[0]` -2. Use a property selector matching the array item(s) you want to patch, e.g. `spec.containers.name=backend` - -Using a property selector is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A property selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -#### Example: Overwrite command and args of a pod -```yaml -dev: - replacePods: - - labelSelector: - app.kubernetes.io/component: app-backend - containerName: container-0 - patches: - - op: replace - path: spec.containers[0].command - value: ["sleep"] - - op: replace - path: spec.containers[0].args - value: ["9999999999"] -``` - -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. - -## Persistence - -Replace pods offer you the ability to easily persist certain folders in the exchanged pod through a [persistent volume claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). This might be useful if you have to sync large amounts of files that are needed in multiple containers or the replaced pod might get rescheduled or killed often. - -:::info Cleanup of Persistent Volume Claims -If DevSpace creates the persistent volume claim, it will also get cleaned up on a `devspace reset pods` or if config changes in the `replacePods` section are detected. -::: - -### `persistPaths` - -The `persistPaths` option expects an array of paths that should get persisted on the replaced pod. - -#### Example: Persist the folders -```yaml -dev: - replacePods: - - imageSelector: my-app/dev - persistPaths: - - path: /app - # Optional path on the persistent volume to mount - # volumePath: my-volume/app - # Optional name of the container to persist this path - # containerName: my-container -``` - -**Explanation:** -- The `imageSelector` would select the pod with image `my-app/dev`. -- DevSpace would create a new persistent volume claim for the pod if the pod was not yet replaced -- DevSpace would replace the pod with a pod which has a volume mount for the path `/app` that references the created persistent volume claim - -#### Options - -You can configure the following options in a persistent path: - -- `path`: the container path that should get persisted -- `volumePath`: optional path on the persistent volume to mount -- `containerName`: optional container name in the replaced pod to persist the path -- `readOnly`: if the path should get mounted read only -- `skipPopulate`: if true, devspace will not try to pre-populate the path -- `initContainer.resources`: resources of the pre-populating init container - -### `persistenceOptions` - -`persistenceOptions` is an object that defines additional options for `persistPaths`. You can configure the following options: - -- `size`: the size of the persistent volume to request. (Defaults to `10Gi`) -- `storageClassName`: the storage class name to use for the persistent volume claim. (Defaults to empty) -- `accessModes`: the access modes to use for the persistent volume claim. (Defaults to `ReadWriteOnce`) -- `readOnly`: if the persistent volume claim should get mounted in read only mode. (Defaults to `false`) -- `name`: the name of the persistent volume claim to use or create. (Defaults to name of the replaced pod) - -#### Example: Share a single persistent volume across two pods -```yaml -dev: - sync: - - imageSelector: my-image/frontend - containerPath: /app - replacePods: - - imageSelector: my-image/frontend - persistPaths: - - path: /app - volumePath: app - persistenceOptions: - name: my-pvc - - imageSelector: my-image/backend - persistPaths: - - path: /backend - volumePath: app - persistenceOptions: - name: my-pvc - readOnly: true -``` - -**Explanation:** -- DevSpace will create a persistent volume claim `my-pvc` if it does not exist -- DevSpace will replace the pods with image `my-image/frontend` and `my-image/backend` with pods that mount the persistent volume claim called `my-pvc` -- DevSpace will sync the local files into the persisted folder `/app` of the replaced pod with image `my-image/frontend`. Since the replaced pods share a common persistent volume claim, also the backend container will get the updated files. - -## Reset replaced pods - -If you want to reset replaced pods and revert the cluster state to before, you can run -``` -devspace reset pods -``` diff --git a/docs/versioned_docs/version-5.18/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-5.18/configuration/development/reverse-port-forwarding.mdx deleted file mode 100644 index 79cc8c7138..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/reverse-port-forwarding.mdx +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Configure Reverse Port-Forwarding -sidebar_label: ports[].reverseForward ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -Reverse port-forwarding allows you to forward traffic from within your containers to your local machine. This can be useful when: -- using certain remote debuggers that connect to your IDE instead of the other way around -- developing a service on localhost which should be accessed from other services that run within the cluster, i.e. using the [Telepresence development model](https://www.telepresence.io/discussion/why-telepresence) but with DevSpace to get better performance and cross-platform support - -With reverse port-forwarding, you can access `localhost:[PORT]` inside the container and it will redirect to a program that runs on your local dev machine. - -When starting the development mode, DevSpace starts reverse port-forwarding as configured in the `dev.ports` section of the `devspace.yaml`. -```yaml {20-23} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - forward: - - port: 8080 - remotePort: 80 - reverseForward: - - port: 5678 - remotePort: 5678 - - port: 3303 -``` - -:::warning Unique Remote Port -The `remotePort` option must be unique across your entire `ports` section for all selectors that match the same pods, e.g. you can only use the value `8080` once for the `remotePort` option in your `ports` section unless multiple port mappings target different pods. -::: - -Every reverse port-forwarding configuration consists of two parts: -- [Pod/Container Selection](#pod-selection) -- [Port Mapping via `port` (and optionally via `remotePort` and `bindAddress`)](#port-mapping-reverseforward) - -## Configuration -### `name` -The `name` option is optional and expects a string stating the name of this reverse port-forwarding configuration. This can be used as a steady identifier when using profile patches or to override the log message prefix for this port configuration. - -For example: -```yaml {3} -dev: - ports: - - name: devbackend - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 -profiles: -- name: production - patches: - - op: replace - path: dev.ports.name=devbackend.imageSelector - value: john/prodbackend -``` - - -## Pod Selection -The following config options are needed to determine the pod from which the traffic should be forwarded to localhost: -- [`imageSelector`](#imageselector) -- [`labelSelector`](#labelselector) -- [`containerName`](#containername) -- [`namespace`](#namespace) - -:::info Combine Options -If you specify multiple of these config options, they will be jointly used to select the pod / container (think logical `AND / &&`). -::: - -:::info Auto Reconnect -If DevSpace is unable to establish a reverse port-forwarding connection to the selected pod or loses it after starting the reverse port-forwarding, DevSpace will try to restart reverse port-forwarding several times. -::: - -### `imageSelector` - - -#### Example: Select Pod by Image -```yaml {2,4,18,22} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - imageSelector: john/devbackend - reverseForward: - - port: 8080 - remotePort: 80 - - imageSelector: john/debugger - reverseForward: - - port: 3000 -``` -**Explanation:** -- The above example defines two images that can be used as `imageSelector`: `john/devbackend` and `john/debugger` -- The deployment starts two containers and each of them uses an image from the `images` section. -- The `imageSelector` option of the first reverse port-forwarding configuration in the `dev.ports` section references `backend`. That means DevSpace would select the first container for reverse port-forwarding, as this container uses the `image: john/devbackend` which belongs to the `backend` image as defined in the `images` section. -- The `imageSelector` option of the second reverse port-forwarding configuration in the `dev.ports` section references `backend-debugger`. That means DevSpace would select the second container for reverse port-forwarding, as this container uses the `image: john/debugger` which belongs to the `backend-debugger` image as defined in the `images` section. - -In consequence, the following reverse port-forwarding processes would be started when using the above config example: -- `localhost:80` inside the container will forward to `localhost:8080` on your local machine -- `localhost:3000` inside the container will forward to `localhost:3000` on your local machine - - -### `labelSelector` - - -#### Example: Select Pod by Label -```yaml {18-21} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - name: container-0 - image: john/devbackend - - name: container-1 - image: john/debugger -dev: - ports: - - labelSelector: - app.kubernetes.io/name: devspace-app - app.kubernetes.io/component: app-backend - custom-label: custom-label-value - reverseForward: - - port: 8080 - remotePort: 80 -``` -**Explanation:** -- The `labelSelector` would select the pod created for the component deployment `app-backend`. -- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected. - - -### `containerName` -The `containerName` option expects a string with the name of the container to use within the pod selected by `labelSelector`. This option is not required if `imageName` is used or there is only one container inside the selected pod. - - -### `namespace` -The `namespace` option expects a string with a Kubernetes namespace used to select the pod from. - -:::warning -It is generally **not** needed (nor recommended) to specify the `namespace` option because, by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to. -::: - -## Port Mapping `reverseForward` -The `reverseForward` section defines which `remotePort` inside the selected container should be forwarded to the `port` on your local machine. - -:::note -By default, `remotePort` will take the same value as `port` if `remotePort` is not explicitly defined. -::: - -### `port` -The `port` option is mandatory and expects an integer from the range of user ports [1024 - 49151]. - -:::warning -Using a `port` < 1024 is likely to cause problems as these ports are reserved as system ports. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image)"** - - -### `remotePort` -The `remotePort` option expects an integer from the range of valid ports [0 - 65535]. - -:::info -By default, `remotePort` has the same value as `port` if `remotePort` is not explictly defined. -::: - -#### Example -**See "[Example: Select Pod by Image Name](#example-select-pod-by-image-name)"** - - -### `bindAddress` -The `bindAddress` option expects a valid IP address that the local port should be bound to. - -#### Default Value For `bindAddress` -```yaml -bindAddress: "0.0.0.0" # listen on all network interfaces -``` - -## Container Architecture - -### `arch` - -Arch specifies which DevSpace helper architecture should be used for the container. Currently valid values are either no value, `amd64` or `arm64`. Depending on this value, DevSpace will inject the DevSpace helper binary with the corresponding architecture suffix. diff --git a/docs/versioned_docs/version-5.18/configuration/development/terminal.mdx b/docs/versioned_docs/version-5.18/configuration/development/terminal.mdx deleted file mode 100644 index 8a5661d640..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/development/terminal.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Configure Terminal -sidebar_label: terminal ---- - -import FragmentImageSelector from '../../fragments/selector-image-selector.mdx'; -import FragmentLabelSelector from '../../fragments/selector-label-selector.mdx'; - -There are two main modes how to develop with DevSpace, by streaming the log output of pods in DevSpace or by opening a terminal to the pod you would like to develop with. If you prefer the latter, you can configure the `dev.terminal` option to tell DevSpace to open a terminal to a target container. - -In the `dev.terminal` section in the `devspace.yaml` you can configure the terminal: -```yaml {18-23} -images: - frontend: - image: myregistry/appfrontend -dependencies: -- name: backend - source: - path: backend -deployments: -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appfrontend - workDir: '/path/to/my/workdir' - # If you would like to open a different shell or start - # it with a different command you can also use - command: ["bash"] -``` - -:::warning Sleeping Container -You will need to make sure that the container has a terminal equipped and is sleeping so that you can start your application. -::: - -## Configuration - -### `imageSelector` - - -#### Example: Setting imageName -```yaml {25-34} -images: - frontend: - image: myregistry/appfrontend - backend: - image: myregistry/appbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: myregistry/appbackend -- name: frontend - helm: - componentChart: true - values: - containers: - - image: myregistry/appfrontend - command: ["sleep"] - args: ["999999999"] -dev: - terminal: - imageSelector: myregistry/appbackend -``` - -### `labelSelector` - - -#### Example: Setting labelSelector -```yaml {25-34} -dev: - terminal: - labelSelector: - app: my-app - # If the pod has multiple containers make sure to set this - containerName: container1 -``` - -### `containerName` -If you select a pod via `labelSelector` and the pod has multiple containers, you'll need to specify a container name with this option. - -### `namespace` -If this option is specified DevSpace will search the pod in this namespace. - -### `workDir` -If this option is specified DevSpace will open the shell in the specified working directory. - -### `command` -The `command` option expects a string array as optional configuration for how to open the shell for terminal forwarding. If this option is specified, `workDir` will not work anymore. - -:::note Command Termination -If `command` is a non-interactive command that terminates, DevSpace will run the command and exits after the command has terminated. -::: diff --git a/docs/versioned_docs/version-5.18/configuration/env-file.mdx b/docs/versioned_docs/version-5.18/configuration/env-file.mdx deleted file mode 100644 index d196a4fc62..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/env-file.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Environment Variable File -sidebar_label: .env ---- - -Besides reading environment variables available in your terminal session, DevSpace also reads environment variables from the `.env` file inside your project. The syntax of the `.env` file is the [same as for docker-compose](https://docs.docker.com/compose/env-file/): - -- Each line should have the format `VAR_NAME=VAR_VALUE`. -- **There is *no* special handling of quotation marks. This means that they are part of the `VAR_VALUE`.** -- Lines beginning with # are processed as comments and ignored. - -## Precedence -- Environment variables defined in your terminal session (including system variables) always take precendence over the variables in your `.env` file. -- Variables defined in your `.env` file take precende over the default values defined for config variables (configured in the `vars` section of `devspace.yaml`). - -## Define Default Flags -A common use case for the `.env` file is to set default flags for the `devspace` commands such as `devspace dev` or `devspace deploy`. You can define the following environment variables to set default flags: -- `DEVSPACE_FLAGS` for global flags that should be added to each commands (e.g. `DEVSPACE_FLAGS=-s -p dev`) -- `DEVSPACE_[COMMAND]_FLAGS` to add default flags for single commands (e.g. `DEVSPACE_DEV_FLAGS=-s --verbose-dependencies`) - -:::note Overriding Default Flags -Specifying flags for a command will override the default flags, e.g. if `DEVSPACE_FLAGS=-s -p dev` is configured and you run `devspace dev -p production`, the following command would be executed: `devspace dev -s -p production` -::: - -#### Example: Setting Default Flags for DevSpace -```bash -# File: .env -DEVSPACE_FLAGS=-s -p dev -DEVSPACE_DEV_FLAGS=-s --verbose-dependencies -``` diff --git a/docs/versioned_docs/version-5.18/configuration/hooks/basics.mdx b/docs/versioned_docs/version-5.18/configuration/hooks/basics.mdx deleted file mode 100644 index afb3ba4fed..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/hooks/basics.mdx +++ /dev/null @@ -1,279 +0,0 @@ ---- -title: Hooks -sidebar_label: hooks ---- - -DevSpace allows you to define certain actions that should be executed during the pipeline. This makes it possible to customize the deployment and development process with DevSpace. The following actions can be executed with hooks: -- Execute a command on the local machine (in a golang shell or directly on the system) -- Execute a command in a container -- Upload a file or folder into a container -- Download a file or folder from a container -- Wait for a container to start or terminate -- Print the logs of container - -Hooks can be defined in the `hooks` section of `devspace.yaml`: -```yaml -hooks: -# Execute the hook in a golang shell (cross operating system compatible) -- name: "pre-image-build-hook" - command: "echo before image building" - events: ["before:build"] -# Execute the hook in a golang shell (cross operating system compatible) -- name: "post-image-build-hook" - command: | - echo Built Image ${runtime.images.image-1.image}:${runtime.images.image-1.tag} - events: ["after:build:image-1"] -# Execute the hook directly on the system (echo binary must exist) -- command: "echo" - args: ["before image building"] - events: ["before:build:image-1", "before:build:image-2"] -# Execute the hook only on windows -- command: "echo before each image" - os: windows - events: ["before:build:*"] -``` - -This tells DevSpace to execute the command `echo before image building` before any image will be built. - -## Lifecycle Events - -You are able to define hooks for the following lifecycle events: -- `before:deploy`, `after:deploy`, `before:deploy:[name]`, `after:deploy:[name]`, `error:deploy:[name]`, `skip:deploy:[name]`: executed while DevSpace deploys `deployments`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:render`, `after:render`, `before:render:[name]`, `after:render:[name]`, `error:render:[name]`: executed while DevSpace renders `deployments` during `devspace render`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:purge`, `after:purge`, `before:purge:[name]`, `after:purge:[name]`, `error:purge:[name]`: executed while DevSpace purges `deployments` during `devspace purge`. `[name]` can be replaced with the config name of a deployment or `*` to match all. -- `before:build`, `after:build`, `before:build:[name]`, `after:build:[name]`, `error:build:[name]`, `skip:build:[name]`: executed while DevSpace builds `images`. `[name]` can be replaced with the config name of an image or `*` to match all. -- `start:sync:[name]`, `stop:sync:[name]`, `error:sync:[name]`, `restart:sync:[name]`, `before:initialSync:[name]`, `after:initialSync:[name]`, `error:initialSync:[name]`: executed while DevSpace syncs files with `dev.sync`. `[name]` can be replaced with the config name of a sync configuration or `*` to match all. -- `start:portForwarding:[name]`, `restart:portForwarding:[name]`, `error:portForwarding:[name]`, `stop:portForwarding:[name]`: executed while DevSpace port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `start:reversePortForwarding:[name]`, `restart:reversePortForwarding:[name]`, `error:reversePortForwarding:[name]`, `stop:reversePortForwarding:[name]`: executed while DevSpace reverse port forwards with `dev.ports`. `[name]` can be replaced with the config name of a port forwarding configuration or `*` to match all. -- `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` -- `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:error`, `devCommand:interrupt`, `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`: executed at certain lifecycle events during the `devspace dev` command -- `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed -- `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed -- `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed -- `before:resolveDependencies`, `after:resolveDependencies`, `error:resolveDependencies`, `before:buildDependencies`, `after:buildDependencies`, `error:buildDependencies`, `before:deployDependencies`, `after:deployDependencies`, `error:deployDependencies`, `before:purgeDependencies`, `after:purgeDependencies`, `error:purgeDependencies` executed at different checkpoints when dependencies are resolved, deployed, built or purged - -:::info Errors in Hooks -If any hook returns a non zero exit code, DevSpace will abort and print an error message. -::: - -For `error:` events the actual error will be passed to the hook via the environment variable `DEVSPACE_HOOK_ERROR`. For example: -```yaml -# This will print the error to the console that has occured during a deployment -hooks: -- events: ["error:deploy:*"] - command: "echo The following error has occurred during deploying $DEVSPACE_HOOK_DEPLOY_NAME: $DEVSPACE_HOOK_ERROR" - os: darwin,windows - name: "error-hook" -``` - -## Execute hooks in a container - -DevSpace allows you to execute commands directly in a container instead of the local system. You can specify this in the `container` section of the hook: - -```yaml -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - events: ["after:deploy:my-deployment"] -... -``` - -By default, DevSpace will wait for all pods / containers that were selected with the given selector to come up. As soon as all targets are running, DevSpace will execute the hook and wait for it to finish. You can define if DevSpace should wait and how long it should wait with `wait` and `timeout`: - -```yaml -... -hooks: -- command: "echo" - args: ["Hello from within the container!"] - container: - imageSelector: ${runtime.images.app.image}:${runtime.images.app.tag} - # Or select via labelSelector etc. - # labelSelector: ... - # namespace: ... - # containerName: ... - # pod: ... - wait: true # This is the default - timeout: 300 # Timeout in seconds - events: ["after:deploy:my-deployment"] -... -``` - -## Upload or Download files from a container - -Hooks can be used to upload or download files from a container. In the background, DevSpace will basically do a `kubectl cp` to the specified container. Example: -```yaml -hooks: -# Upload the complete local bin folder to the container path ./bin -- upload: - localPath: bin - containerPath: bin - container: - imageSelector: ${runtime.images.test.image}:${runtime.images.test.tag} - events: ["after:deploy:my-deployment"] - name: "upload-hook" -# Download a single file from the container to the local path -- download: - localPath: build/artifact.jar - containerPath: /abs/path/build/artifact-test.jar - container: - imageSelector: ${runtime.images.java.image}:${runtime.images.java.tag} - events: ["after:deploy:my-deployment-2"] - name: "download-hook" -``` - -## Wait for a pod to be running - -This hook action can be useful if you want to ensure a certain pod is running before you continue with the pipeline. An example configuration could look like this: -```yaml -... -deployments: -- name: my-database - helm: - componentChart: true - values: - ... -hooks: -# This hook will ensure that every time the deployment -# my-database is deployed that DevSpace will wait until -# all pods and containers that match the labelSelector -# app.kubernetes.io/component: my-database are running -- wait: - # DevSpace will wait for all containers that match the label selector below to become running. - # If there are init containers, make sure to set terminatedWithCode as well. - running: true - # This can be needed if there are for example init containers - # that terminate instead of become running. - terminatedWithCode: 0 - container: - labelSelector: - app.kubernetes.io/component: my-database - # You could also select just a specific container with - # containerName: database-container - events: ["after:deploy:my-database"] - name: "wait-for-pod-hook" -... -``` - -## Print the logs of a container - -This action can be useful to print logs of jobs or print the logs of init containers that would not be printed otherwise during `devspace dev`. An example configuration could look like this: - -`job.yaml`: -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: my-pod - labels: - app.kubernetes.io/component: my-job -spec: - restartPolicy: Never - containers: - - command: ["sh"] - args: ["-c", "echo 'Job Start' && sleep 5 && echo 'Doing Things...' && sleep 5 && echo 'Job End'"] - image: alpine - name: job -``` - -`devspace.yaml`: -```yaml -version: ... -deployments: -- name: my-job - kubectl: - manifests: - - job.yaml -hooks: -# This hook will wait until the selected container is either running or already -# terminated and then print the logs of it until it terminates. -- logs: {} - container: - labelSelector: - app.kubernetes.io/component: my-job - events: ["after:deploy:my-job"] - name: "print-logs-hook" -``` - -## Execute hooks in the background - -By default, DevSpace will wait for a hook to finish and then move on with the pipeline. However, in some cases it might be desired that a hook is executed in the background to speed up a process. You can specify a background hook with the `background` option: - -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - events: ["after:deploy"] - name: "background-hook" -... -``` - -If you do not want to stream the output of the hook to the console, you can also mark the hook as silent, which will prevent any hook output: -```yaml -... -hooks: -- command: "sh" - args: ["-c", "sleep 10 && echo 'Hello, I was run inside the background!'"] - background: true - silent: true - events: ["after:deploy"] - name: "silent-background-hook" -... -``` - -## Execute hooks only on certain operating systems - -Hooks can be executed only on certain operating systems: - -```yaml {3,6} -hooks: -- command: echo before image building on windows - os: windows - events: ["after:build"] - name: windows-hook -- command: echo before image building on mac and linux - os: darwin,linux - events: ["after:build"] - name: darwin-linux-hook -``` - -## Execute hooks once - -Hooks can be executed only once for each targeted container. This means as long as the container where the hook was executed stays running, the hook will not be executed for this container again until it restarts. This can be useful for running one-time development tasks without using init containers. In the following example, the command would only run once for the newest container running with the image `nginx:1.21`. - -```yaml {8} -... -hooks: -- command: | - echo Hello World! - echo From within the container! - container: - imageSelector: nginx:1.21 - once: true - events: ["after:deploy"] - name: one-time-hook -... -``` - -If you run `devspace dev` or `devspace deploy` now multiple times and the container is not replaced or restarted, the hook is only executed once. - -## Hook Context Information - -DevSpace passes certain environment variables to the hook execution: -- **DEVSPACE_HOOK_KUBE_CONTEXT**: the name of the kube context that was used -- **DEVSPACE_HOOK_KUBE_NAMESPACE**: the name of the kube namespace that was used -- **DEVSPACE_HOOK_OS_ARGS**: json encoded os.Args that were used to call devspace -- **DEVSPACE_HOOK_ERROR**: if an error has occured contains the error string (only for onError hooks) -- **DEVSPACE_HOOK_EVENT**: the event that has triggered the hook - -Depending on the hook there will be other context variables set that are prefixed with `DEVSPACE_HOOK_`. diff --git a/docs/versioned_docs/version-5.18/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-5.18/configuration/images/append-dockerfile-instructions.mdx deleted file mode 100644 index 78fc212199..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/append-dockerfile-instructions.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Append Build Instructions In-Memory -sidebar_label: appendDockerfileInstructions ---- - - -## `appendDockerfileInstructions` -The `appendDockerfileInstructions` expects an array of strings with each string containing a Dockerfile instruction, e.g. `RUN chmod...`, `USER root`. - -This option is very useful to add development-specific instructions (installing dev tooling like debuggers, setting a different runtime user for the container etc.) without the need to change the actual Dockerfile. - -:::info In-Memory -DevSpace adds these instructions dynamically to your Dockerfile when building images. However, this happens in-memory and does **not** change the Dockerfile. -::: - -:::tip Combination with Profiles -It is often useful to create a [profile](../profiles/basics.mdx) `production` with a patch that removes the `appendDockerfileInstructions` entirely. This way, you can also evaluate what you are working on in a more production-like way using a single command: `devspace deploy -p production` -::: diff --git a/docs/versioned_docs/version-5.18/configuration/images/basics.mdx b/docs/versioned_docs/version-5.18/configuration/images/basics.mdx deleted file mode 100644 index 6b236619f4..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/basics.mdx +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: Image Building -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; -import WarningBuildToolPriority from '../../fragments/warning-build-tool-priority.mdx'; - -Images are configured within the `images` section of the `devspace.yaml`. - -## Examples - - - - -```yaml {3} -images: - backend: - image: my-docker-username/appbackend - database: - image: my-docker-company/appbackend -``` - - - - -```yaml {3} -images: - backend: - image: image.company.tld/appbackend - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-9} -images: - backend: - image: image.company.tld/appbackend - tags: - - latest - # This will be replaced during build time with - # something like dev-ads13as1-sA4ve. Each hashtag - # represents a random character. - - dev-${devspace.git.commit}-##### - database: - image: image.company.tld/appbackend -``` - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -:::info What is BuildKit? -[BuildKit](https://github.com/moby/buildkit) is an open-source concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit that lets you build images inside containers that run on top of Kubernetes or in your local docker daemon. To force image building using BuildKit, set `build.buildKit: {}`. To tell DevSpace to use in cluster building set `build.buildKit.inCluster: {}` as shown above. Learn more about [configuring BuildKit builds](../../configuration/images/buildkit.mdx). -::: - - - - -```yaml {4-6} -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true -``` - -:::info What is kaniko? -Kaniko is an open-source tool that lets you build images inside containers that run on top of Kubernetes. DevSpace uses kaniko as automatic fallback if Docker is not installed. To force image building using kaniko, set `build.kaniko.cache: true` as shown above. Learn more about [configuring kaniko builds](../../configuration/images/kaniko.mdx). -::: - - - - -```yaml {4-11} -images: - backend: - image: john/appbackend - build: - custom: - skipImageArg: true - command: |- - # Also works on windows as this is executed in a golang shell - docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile -``` - - - - -```yaml {5} -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` - - - - -:::note Parallel Image Building -To speed up the build process, the images you specify under `images` will all be built in parallel (unless you use the `--build-sequential` flag). -::: - - - - -## Run Image Building -When you run one of the following commands, DevSpace will run the image building process: -- `devspace build` (only image building without deployment) -- `devspace deploy` (before deploying the application) -- `devspace dev` (before deploying the application and starting the development mode) - -### Important Flags -The following flags are available for all commands that trigger image building: -- `--build-sequential` build images sequentially instead of in parallel (provides more detailed logs for each image) -- `-b / --force-build` rebuild all images (even if they could be skipped because context and Dockerfile have not changed since the latest build) - -## Image Building Process -DevSpace loads the `images` configuration from `devspace.yaml` and builds all images in parallel. The multi-threaded, parallel build process of DevSpace speeds up image building drastically, especially when building many images and using remote build methods. - -### 1. Load Dockerfile -DevSpace loads the contents of the Dockerfile specified in `image[*].dockerfile` (defaults to `./Dockerfile`). - -:::info Use Relative Paths -Dockerfile paths used in `dockerfile` should be relative to the `devspace.yaml`. -::: - -### 2. Override Entrypoint (if needed) -DevSpace allows you to apply an in-memory override of a Dockerfile's `ENTRYPOINT` by configuring the `entrypoint` option for the image. Similar to the Dockerfile `ENTRYPOINT`, the `images[*].entrypoint` option should be defined as an array. - -:::note Useful for Profiles -Configuring `ENTRYPOINT` overrides can be particularly useful when defining different [config profiles](../../configuration/profiles/basics.mdx) in your `devspace.yaml`. -::: - -### 3. Load Build Context -DevSpace loads the context to build this image as specified in `context` (defaults to `./`). The context path serves as root directory for Dockerfile statements like `ADD` or `COPY`. - -:::info Use Relative Paths -Context paths used in `context` should be relative to the `devspace.yaml`. -::: - - - -### 4. Skip Build & Push (if possible) -DevSpace tries to speed up image building by skipping images when they have not changed since the last build process. To do this, DevSpace caches the following information after building an image: -- a hash of the `Dockerfile` used to build the image (including ENTRYPOINT override) -- a hash over all files in the `context` used to build this image (excluding files in `.dockerignore`) - -The next time you trigger the image building process, DevSpace will generate these hashes again and compare them to the hashes of the last image building process. If all newly generated hashes are equal to the old ones stored during the last image building process, then nothing has changed and DevSpace will skip this image. - -:::note Force Build -You can use the `-b / --force-build` flag to tell DevSpace to build all images even if nothing has changed. -::: - -### 5. Build Image -DevSpace uses one of the following [build tools](../../configuration/images/basics.mdx) to create an image based on your Dockerfile and the provided context: -- [`docker`](../../configuration/images/docker.mdx) for building images using a Docker daemon (default, prefers Docker daemon of local Kubernetes clusters) -- [`kaniko`](../../configuration/images/kaniko.mdx) for building images directly inside Kubernetes (automatic fallback for `docker`) -- [`custom`](../../configuration/images/custom.mdx) for building images with a custom build command (e.g. for using Google Cloud Build) -- [`disabled`](../../configuration/images/disabled.mdx) if this image should not be built (especially useful for [config `profiles`](../../configuration/profiles/basics.mdx)) - -### 6. Tag Image -DevSpace automatically tags all images after building them using a tagging schema that you can customize using the `tag` option. By default, this option is configured to generate a random string consisting of 5 characters. - -[Learn more about defining a custom tagging schema.](../../configuration/images/image-tagging.mdx#tags-tagging-schema) - -:::info Tag Replacement -Before deploying your application, DevSpace will use the newly generated image tags and replace them in-memory in the values for your [Helm charts](../../configuration/deployments/helm-charts.mdx) and [Kubernetes manifests](../../configuration/deployments/kubernetes-manifests.mdx), so they will be deployed using the newest image tag. -::: - -### 7. Push Image -DevSpace automatically pushes your images to the respective registry that should be specified as part of the `image` option. Just as with regular Docker images, DevSpace uses Docker Hub if no registry hostname is provided within `image`. - - -:::note -You can skip this step when proving the `--skip-push` flag. Beware that deploying your application after using `--skip-push` will only work when your images have already been pushed to the registry or when you are using a local Kubernetes cluster (e.g. minikube). -::: - -### 8. Create Pull Secrets -When deploying your application via DevSpace, Kubernetes needs to be able to pull your images from the registry that is used to store your images when pushing them. For this purpose, Kubernetes relies on so-called image pull secrets. DevSpace can automatically create these secrets for you, if you configure `createPullSecret: true` for the respective image in your `devspace.yaml`. - -:::note -You do **not** need to change anything in your Kubernetes manifests or Helm charts to use the image pull secrets that DevSpace creates because DevSpace [adds these secrets to the default service account in the namespace](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) used to deploy your project. - -After running `devspace build`, `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the following command: -```bash -kubectl get serviceaccount default -o yaml -``` -Take a look at the `imagePullSecrets` section of the output showing the yaml definition of the service account `default`. -::: - -## Advanced Topics - -### Authentication (Registry) -DevSpace uses the same credential store as Docker. So, if you already have Docker installed and you have logged in to a private registry before, DevSpace will be able to push to this registry. So, if you want to push to a registry using DevSpace, simply authenticate using this command: -```bash -docker login # for Docker Hub -docker login [REGISTRY] # for any other registry (e.g. my-registry.tld) -``` - -:::note -If you do **not** have Docker installed, DevSpace initializes a Docker credential store for you and stores your login information just like Docker would do it. -::: - - -### Skip Push (Local Clusters) -If you are using a local Kubernetes cluster, DevSpace will try to build the image using the Docker deamon of this local cluster. If this process is successful, DevSpace will skip the step of pushing the image to a registry as it is not required for deploying your application. diff --git a/docs/versioned_docs/version-5.18/configuration/images/buildkit.mdx b/docs/versioned_docs/version-5.18/configuration/images/buildkit.mdx deleted file mode 100644 index 8f60c99638..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/buildkit.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Build Images with BuildKit -sidebar_label: buildKit ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [BuildKit](https://github.com/moby/buildkit) as build tool allows you to build images either locally or inside your Kubernetes cluster without a Docker daemon. - -:::info -In order to use the build kit you'll either need to have [docker](https://docs.docker.com/get-docker/) installed locally or the [buildx CLI](https://github.com/docker/buildx/releases). **If you only want to use the in cluster build functionality, you won't need a running docker daemon and just need the CLI tools.** -::: - -With `buildKit` enabled, DevSpace will use `docker buildx build` for building. If in cluster building is enabled, DevSpace will deploy a BuildKit deployment into the Kubernetes cluster that will function as target BuildKit daemon for `docker buildx build`. You can also share a single Kubernetes BuildKit daemon across multiple users to share a common build cache. - -To set `buildKit` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -## In Cluster Building - -If the `inCluster` object is set, DevSpace will build the image directly in the Kubernetes cluster instead of using the local docker daemon. DevSpace will start or reuse a BuildKit deployment in the Kubernetes cluster that acts as target BuildKit daemon. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - inCluster: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- `buildKit.inCluster` tells DevSpace to build the image inside the target Kubernetes cluster instead of using the local docker daemon. -- By default, DevSpace will create a BuildKit daemon deployment inside the target namespace that will be used for this and all future builds. - -### `inCluster.namespace` - -The option takes a string and defines the namespace where to create the BuildKit deployment in. Defaults to the current DevSpace target namespace. - -:::info -By setting `name` and `namespace` you can share a single BuildKit deployment for multiple users. This will have the advantage that a shared build cache is used. -::: - -### `inCluster.name` - -The option takes a string and defines the name of the BuildKit builder DevSpace will use or create if it does not exist. `name` will also be the name of the BuildKit deployment that is created by DevSpace. By default, DevSpace will create a BuildKit builder in the following form: devspace-NAMESPACE. For more information about what BuildKit builders are check the [docker docs](https://docs.docker.com/engine/reference/commandline/buildx_create/). - -### `inCluster.rootless` - -The option takes a boolean and defines if the BuildKit deployment should deploy a non priviledged pod. By default, the BuildKit deployment will try to create a priviledged pod. - -### `inCluster.image` - -The option takes a string and defines the docker image to use for the BuildKit deployment. - -### `inCluster.nodeSelector` - -The option takes a string in the form of `my-label=value,my-label2=value2` that will be used as node selector for the BuildKit deployment. - -### `inCluster.noCreate` - -The option takes a boolean as value. By default, DevSpace will try to create a new builder if it cannot be found. If this option true, DevSpace will fail if the specified builder cannot be found. - -### `inCluster.noRecreate` - -The option takes a boolean as value. By default, DevSpace will try to recreate the builder if the builder configuration in the devspace.yaml differs from the actual builder configuration. If this is true, DevSpace will not try to do that. - -### `inCluster.noLoad` - -The option takes a boolean as value. If image push is disabled (for example by flag `--skip-push` or via `build.buildKit.skipPush`), DevSpace will load the created image into the local docker daemon. If the option is true, DevSpace will not try to do that. - -### `inCluster.createArgs` - -The option takes a string array as value. These arguments will be appended to the `docker buildx create` command. - -## BuildKit options - -If `buildKit.inCluster` is omitted, DevSpace will build the image with the local docker daemon and not interact with the Kubernetes cluster. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: {} -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- Internally DevSpace will use `docker buildx build` to build the image. - -### `skipPush` - -The option takes a boolean as value. If this option is enabled, DevSpace will not push the image to the registry. If in cluster build is enabled, DevSpace will try to load the image into the local docker daemon if the image is not pushed. - -:::tip -DevSpace will automatically skip image pushing if it detects a local docker daemon such as docker-desktop or minikube. You can disable this behaviour by setting the flag `--skip-push-local-kube=false` -::: - -### `preferMinikube` - -The option takes a boolean as value. If this option is disabled, DevSpace will not try to use the minikube docker daemon for image building. This option only has an effect, if minikube is installed and the current kube context is `minikube`. - -### `args` - -This option takes a string array as value. The arguments will be appended to the `docker buildx build` call DevSpace will run. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - args: ["--cache-to", "user/app:cache"] -``` - -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The args option will append arguments to the `docker buildx build` command which will then look something like this: `docker buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -### `command` - -The option takes a string array as value. By default, DevSpace will use `docker buildx` as base command for interacting with BuildKit, if this option is set, you can tell DevSpace to use a different base command. For example: -```yaml -images: - backend: - image: john/appbackend - build: - buildKit: - command: ["/path/to/my/buildx"] -``` -**Explanation:** -- `buildKit` tells DevSpace to use the BuildKit engine to build the image. -- The command option will tell DevSpace to use this command instead of `docker buildx` and the actual build command will look like this: `/path/to/my/buildx build --tag john/appbackend:DRLzYNS --push --file Dockerfile --cache-to user/app:cache -` - -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - - diff --git a/docs/versioned_docs/version-5.18/configuration/images/custom.mdx b/docs/versioned_docs/version-5.18/configuration/images/custom.mdx deleted file mode 100644 index 01036e4637..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/custom.mdx +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Custom Build Scripts -sidebar_label: custom ---- - -## `custom` -Using `custom` as build tool allows you to define a custom command for building images. This is particularly useful if you want to use a remote build system such as Google Cloud Build. - -:::warning -Make sure your `custom` build command terminates with exit code 0 when the build process was successful. -::: - -### `command` -The `command` option expects a string with the path to a build script or the name of a binary that should be executed in order to build an image. - -#### Example: Building Images With `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - skipImageArg: true - command: |- - # Also works on windows as this is executed in a golang shell - docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile -``` -**Explanation:** -The image `backend` would be built using the command `docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile"` while `${runtime.images.backend.image}` would be replaced with the `image` option (in this case: `john/appbackend`) and `${runtime.images.backend.tag}` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `imageFlag` -The `imageFlag` option expects a string which states the name of the flag that is used to pass the image name (including auto-generated tag) to the custom build script defined in `command`. - -#### Default Value For `imageFlag` -```yaml -imageFlag: "" # Defaults to passing image and tag as an argument instead of using a flag -``` - -#### Example: Defining `imageFlag` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[IMAGE]:[TAG]"` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `skipImageArg` -The `skipImageArg` option expects a boolean which specifies if DevSpace should add an argument to the command with the `image:tag`. If enabled DevSpace will omit the image argument completely - -#### Example: Defining `skipImageArg` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - skipImageArg: true - command: |- - # Also works on windows as this is executed in a golang shell - docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile -``` -**Explanation:** -The image `backend` would be built using the command `docker build -t ${runtime.images.backend.image}:${runtime.images.backend.tag} . -f custom/Dockerfile` - -### `imageTagOnly` -The `imageTagOnly` option expects a boolean which specifies if DevSpace should only add the image `tag` instead of `image:tag` as argument. - -#### Example: Defining `imageTagOnly` For `custom` Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - imageTagOnly: true - args: - - "--arg1" - - "--flag" - - "flag-value" - - "--arg2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --arg1 --flag flag-value --arg2 --image "[TAG]"` while `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - -### `args` -The `args` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **before** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Using `args` and `appendArgs` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" - appendArgs: - - "arg3" - - "--flag2" - - "flag-value-2" -``` -**Explanation:** -The image `backend` would be built using the command `./build --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG] arg3 --flag2 flag-value-2` while `[IMAGE]` would be replaced with the `image` option (in this case: `john/appbackend`) and `[TAG]` would be replaced with the tag generated according to the [tagging schema](../../configuration/images/basics.mdx#6-tag-image). - - -### `appendArgs` -The `appendArgs` option expects an array of strings which represent additional flags and arguments that should be passed to the custom build command **after** the argument containing `[IMAGE]:[TAG]`. - -#### Default Value For `appendArgs` -```yaml -appendArgs: [] -``` - -#### Example -**See "[Example: Using `args` and `appendArgs` For Custom Builds](#example-using-args-and-appendargs-for-custom-builds)"** - -### `commands` -The `commands` option expects an array of commands that should be executed on a specific operating system. This will only exchange the base command, but all other arguments will be appended the same way. - -#### Example: Using `commands` for Custom Builds -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build-default.sh - commands: - - command: ./build-windows.ps - os: windows - - command: ./build-darwin.sh - os: darwin - args: - - "--flag1" - - "flag-value-1" - - "arg1" - - "arg2" -``` -**Explanation:** -- **linux**: The image `backend` would be built using the command `./build-default.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **windows**: The image `backend` would be built using the command `./build-windows.ps --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` -- **darwin (macOS)**: The image `backend` would be built using the command `./build-darwin.sh --flag1 flag-value-1 arg1 arg2 [IMAGE]:[TAG]` - -### `onChange` -The `onChange` option expects an array of strings which represent paths to files or folders that should be watched for changes. DevSpace uses these paths and the hash values it stores about these paths for evaluating if an image should be rebuilt or if the image building can be skipped because the context of the image has not changed. - -:::info -It is highly recommended to specify this option when using `custom` as build tool in order to speed up the build process. -::: - -#### Default Value For `onChange` -```yaml -onChange: [] -``` - -#### Example: OnChange Option For custom Build Command -```yaml -images: - backend: - image: john/appbackend - build: - custom: - command: ./build - imageFlag: "--image" - onChange: - - some/path/ - - another/path/file.txt -``` -**Explanation:** -The image `backend` would be built using the command `./build --image "[IMAGE]:[TAG]"` and DevSpace would skip the build if none of the files within `some/path/` nor the file `another/path/file.txt` has changed since the last build. diff --git a/docs/versioned_docs/version-5.18/configuration/images/disabled.mdx b/docs/versioned_docs/version-5.18/configuration/images/disabled.mdx deleted file mode 100644 index c5a8e42cd9..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/disabled.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Disable Image Building -sidebar_label: disabled ---- - -## `disabled` -The `disabled` option expects a boolean and allows you to disable image building for an image. - -#### Default Value For `disabled` -```yaml -disabled: false -``` - -#### Example: Disabling Image Building -```yaml -images: - frontend: - image: john/appfrontend - build: - disabled: true - backend: - image: john/appbackend -``` -**Explanation:** -- The first image `frontend` would not be built at all. -- The second image `backend` would be built using [`docker`](../../configuration/images/docker.mdx) because nothing is specified and `docker` is the default build tool for images. diff --git a/docs/versioned_docs/version-5.18/configuration/images/docker.mdx b/docs/versioned_docs/version-5.18/configuration/images/docker.mdx deleted file mode 100644 index c96fd80e88..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/docker.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Build Images with Docker -sidebar_label: docker ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -## `docker` -If nothing is specified, DevSpace always tries to build the image using `docker` as build tool. - - -### `useBuildKit` -The `useBuildKit` option expects a boolean which allows to enable buildkit builds (i.e. `DOCKER_BUILDKIT=1`). - -#### Default Value For `useBuildKit` -```yaml -useBuildKit: false -``` - -#### Example: Docker useBuildKit -```yaml -images: - backend: - image: john/appbackend - build: - docker: - useBuildKit: true -``` - -### `useCli` -If `useCli` is true, devspace will use the local docker installation for building and invoke `docker build`. This option is implicitly true, if `useBuildKit` or `args` is specified. - -### `args` -The `args` option expects an array of strings to be passed as arguments and flags to Docker. - -:::warning -When specifying `args`, DevSpace will invoke your installed Docker CLI via a command-line call instead of using the built-in Docker client. This has the negative effects that: -- The kaniko fallback will not be used anymore. -- You need to make sure that everyone who is using this configuration has the same version (or a compatible one) of Docker installed. -::: - -#### Example: Docker args -```yaml -images: - backend: - image: john/appbackend - build: - docker: - args: - - "--no-cache" - - "--compress" -``` - - -### `disableFallback` -When using `docker` as build tool, DevSpace checks if Docker is installed and running. If Docker is not installed or not running, DevSpace will use kaniko as fallback to build the image unless the option `disableFallback` is set to `false`. - -#### Default Value For `disableFallback` -```yaml -disableFallback: false -``` - -#### Example: Disabling kaniko Fallback -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - build: - docker: - disableFallback: true -``` -**Explanation:** -- The first image `backend` would be built using Docker and if Docker is not available, the image would be built using kaniko as a fallback. -- The second image `frontend` would be built using Docker and if Docker is not available, DevSpace would exit with a fatal error instead of using the kaniko fallback. - - -### `preferMinikube` -DevSpace preferably uses the Docker daemon running in the virtual machine that belongs to your local Kubernetes cluster instead of your regular Docker daemon. This has the advantage that images do not need to be pushed to a registry because Kubernetes can simply use the images available in the Docker daemon belonging to the kubelet of the local cluster. Using this method is only possible when your current kube-context points to a local Kubernetes cluster and is named `minikube`, `docker-desktop` or `docker-for-desktop`. - -#### Default Value For `preferMinikube` -```yaml -preferMinikube: true -``` - -#### Example: Building Images in Minikube -```yaml -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -**Explanation:** -- The first image `backend` would be preferably built with Minikube's Docker daemon and the image would **not** be pushed to a registry. -- The second image `frontend` would **not** be built with the Docker daemon of Minikube and it would be pushed to a registry after building and tagging the image using Docker (or kaniko as fallback). - -### `skipPush` -The `skipPush` option expects a boolean value stating if pushing the image to a registry should be skipped during the build process. - -If DevSpace is using a local Kubernetes cluster, pushing images might not be necessary because the image might already be accessible by Kubernetes via a local Docker daemon. In this case, it can make sense to speed up the process by setting `skipPush` to `true`. - -:::info Auto-Enabled for Minikube & Docker Desktop -DevSpace automatically skips image push for kube-contexts with the following names: -- `minikube` -- `docker-desktop` -- `docker-for-desktop` - -This allows to keep `skipPush: false` for these local clusters which helps to keep the configuration reusable and indepent of the kube-context, i.e. it makes it easier to switch between local and remote clusters. -::: - -:::warning Remote Clusters -Setting this option means that the configuration cannot be used to deploy to remote clusters anymore, which makes it harder to switch between clusters and keep the configuration cluster-independent. -::: - -#### Default Value For `skipPush` -```yaml -skipPush: false -``` - -#### Example -```yaml {7} -images: - backend: - image: john/appbackend - build: - docker: - preferMinikube: true - skipPush: true - frontend: - image: john/appfrontend - build: - docker: - preferMinikube: false -``` -The above configration would only push the `frontend` image but not the `backend` image. To manually trigger image building and pushing for all images, run: -```bash -devspace build -``` - - - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `target` - - - - -### `network` - - - - -### `buildArgs` - - diff --git a/docs/versioned_docs/version-5.18/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-5.18/configuration/images/dockerfile-context.mdx deleted file mode 100644 index 0b6cc404af..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/dockerfile-context.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Configure Dockerfile & Context -sidebar_label: dockerfile + context ---- - -import FragmentFaqImageContext from '../../fragments/faq-image-context.mdx'; - -## `dockerfile` -The `dockerfile` option expects a string with a path to a `Dockerfile`. -- The path in `dockerfile` should be relative to the `devspace.yaml`. -- When setting the `dockerfile` option, it is often useful to set the [`context` option](#context) as well. -- To share your configuration with team mates, make sure `devspace.yaml` and all `Dockerfiles` used in the `images` section are checked into your code repository. - -#### Default Value For `dockerfile` -```yaml -dockerfile: ./Dockerfile -``` - -#### Example: Different Dockerfile -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - dockerfile: frontend/Dockerfile - context: frontend/ -``` -**Explanation:** -- The first image would be built using the Dockerfile in `./Dockerfile` and the context path `./`. -- The second image would be built using the Dockerfile in `./frontend/Dockerfile` and the context path `./frontend/`. -- Switching the `context` for image `frontend` would assure that a statement like `ADD file.txt` or `COPY file.txt .` in `./frontend/Dockerfile` would use the local file `./frontend/file.txt` instead of `./file.txt`. -- In this example, it would probably be useful to have a `./.dockerignore` file which ignores the `frontend/` folder when building the first image called `backend`. - -:::note -See **[Best Practices for Image Building](../../guides/image-building.mdx)** for details on how to optimize your Dockerfiles and use `.dockerignore` for faster image building. -::: - - - -## `context` -The `context` option expects a string with a path to the folder used as context path when building the image. The context path serves as root directory for Dockerfile statements like ADD or COPY. - - - -#### Default Value For `context` -```yaml -context: ./ -``` - -#### Example -**See "[Example: Different Dockerfiles](#example-different-dockerfile)"** diff --git a/docs/versioned_docs/version-5.18/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-5.18/configuration/images/entrypoint-cmd.mdx deleted file mode 100644 index 5e8b440f1c..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/entrypoint-cmd.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Override ENTRYPOINT and CMD -sidebar_label: entrypoint + cmd ---- - -:::warning -If you are overriding the Dockerfile `ENTRYPOINT` or `CMD`, it only affects the image but **not** the deployment in Kubernetes. If a deployment using this image defines the `command` or `args` options, they will take precedence over the overrides you define for the image. -::: - -### `entrypoint` -The `entrypoint` option expects an array of strings which tells DevSpace to override the `ENTRYPOINT` defined in the `Dockerfile` during the image building process. - -:::note -If you are overriding the `ENTRYPOINT`, it is often useful to also [override the `CMD` statement](#cmd). If you want to define `entrypoint: ...` for an image and you do **not** want the `CMD` statement from the Dockerfile, add `cmd: []` to the image configuration in your `devspace.yaml`. -::: - -#### Default Value For `entrypoint` -```yaml -entrypoint: [] -``` - -#### Example: Override ENTRYPOINT For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - entrypoint: - - npm - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `ENTRYPOINT` (e.g. `[npm, start]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `ENTRYPOINT`, DevSpace would use the `[npm, run, dev]` as value for `ENTRYPOINT` - - -## `cmd` -The `cmd` option expects an array of strings which tells DevSpace to override the `CMD` defined in the `Dockerfile` during the image building process. - -:::note -`CMD` generally defines the arguments for `ENTRYPOINT`. -::: - -#### Default Value For `cmd` -```yaml -cmd: [] -``` - -#### Example: Override CMD For Image -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - cmd: - - run - - dev -``` -**Explanation:** -- The first image `backend` will be built using the regular `CMD` (e.g. `[start]`) for `ENTRYPOINT` (e.g. `[npm]`) defined by the Dockerfile located in `./Dockerfile` -- The second image `frontend` will be built using the same Dockerfile but instead of the original `CMD`, DevSpace would use the `[run, dev]` as value for `CMD` diff --git a/docs/versioned_docs/version-5.18/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-5.18/configuration/images/image-tagging.mdx deleted file mode 100644 index 70a96b84f8..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/image-tagging.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Image Name & Tagging Schema -sidebar_label: image + tags ---- - -The `images` section in `devspace.yaml` is a map with keys representing the name of the image and values representing the image definition including `tag`, `dockerfile` etc. -```yaml -images: # map[string]struct | Images to be built and pushed - image1: # string | Name of the image - image: gcr.io/username/image # string | Image repository and name - tags: # string[] | Image tags (may be a tagging schema with variables) - - latest - - 0.0.1 - - dev-${devspace.git.commit} - - dev-${USER}-### # Each # will be replaced with a random character -``` - -## `image` *Image Repository* -The `image` option expects a string containing the image repository including registry and image name. - -- Make sure you [authenticate with the image registry](../../configuration/images/basics.mdx#authentication-registry) before using in here. -- For Docker Hub images, do not specify a registry hostname and use just the image name instead (e.g. `mysql`, `my-docker-username/image`). - -#### Example: Multiple Images -```yaml -images: - backend: - image: john/appbackend - frontend: - image: custom-registry.com:5000/peter/appfrontend -``` -**Explanation:** -- The first image `backend` would be tagged as `appbackend:[TAG]` pushed to Docker Hub using the path `john` (which generally could be your Docker Hub username). -- The second image `frontend` would be tagged as `appfrontend:[TAG]` and pushed to `custom-registry.com:5000` using the path `peter`. - -## `tags` *Tagging Schema* -The `tags` option expects an array of strings, each containing a static tag or a tagging schema used to automatically tag images before pushing them to the registry. The tagging schema can contain [dynamic config variables](../../configuration/variables/basics.mdx). While you can define your own config variables, DevSpace provides a set of pre-defined variables. The most commonly used variables for tagging are: -- **devspace.timestamp** A unix timestamp when the config was loaded -- **devspace.git.commit**: A short hash of the local repo's current git commit -- **devspace.namespace**: The default namespace of your current kube-context - -Besides dynamic config variables, DevSpace offers you a possibility to mark certain parts of the image tag as random generated. During image build DevSpace will fill these parts with random characters. The placeholder for a random character is **#**. For example, let's assume you want to generate tags with the format dev-BRANCH-RANDOM, you would write the tag as: -```yaml -images: - default: - image: my-registry.com/user/image - tags: - # The five # are replaced with 5 random characters. The variable ${devspace.git.branch} is replaced - # with the current branch the user is on - - 'dev-${devspace.git.branch}-#####' -``` - -:::info Unique Tags For Development -**Make sure tags are unique** when defining a custom tagging schema for development. Unique tags ensure that your application gets started with the newly built image instead of using an older, cached version. Therefore, it is highly recommended for non-production tags to either use `#` placeholders or `devspace.timestamp` as a suffix in your tagging schema (see [example below](#example-custom-tagging-schema)). -::: - -#### Default Value For `tag` -```yaml -tags: -- '#####' -``` - -#### Example: Custom Tagging Schema -```yaml -images: - backend: - image: john/appbackend - tags: - - latest - - dev-backend-${devspace.git.commit}-##### -``` -**Explanation:** -The above example would always use the tag `latest` and additionaly generate random tags which could look like this one: `dev-backend-b6caf8a-Jak9i`. This example tag consists of the following substrings defined by the tagging schema: -- `dev-` static string -- `-backend-` static string -- `b6caf8a` latest git commit hash on current local branch -- `-` static string -- `Jak9i` auto-generated random string diff --git a/docs/versioned_docs/version-5.18/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-5.18/configuration/images/inject-restart-helper.mdx deleted file mode 100644 index d0af502cc5..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/inject-restart-helper.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Container Restart Helper -sidebar_label: injectRestartHelper ---- - -## `injectRestartHelper` -The `injectRestartHelper` option expects a boolean which decides if DevSpace should inject a restart helper and override the `ENTRYPOINT+CMD` of the image in runtime during the build process which wraps the regular container start command and allows to restart the regular container start command without terminating/recreating the container. - - -:::note How does it work? -The idea of the restart helper is to start the restart helper script as PID 1 inside the conainer. This script will then start the original container entrypoint which will run your application. If a [restart is triggered](#trigger-a-restart), the restart helper will just restart the application again. -::: - -:::tip Automatic Restart On File Change -The restart helper per se does not do much except restarting your application if it has been killed. You can combine this config option with the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) which will effectively restart your application inside the container every time DevSpace syncs files into the container. -::: - - -#### Default Value For `injectRestartHelper` -```yaml -injectRestartHelper: false -``` - -#### Example: Inject Restart Helper -```yaml -images: - backend: - image: john/appbackend - frontend: - image: john/appfrontend - injectRestartHelper: true -``` - - -
- -## Trigger a Restart -You can restart a pod that has a restart helper injected with devspace itself: -``` -devspace restart -n my-namespace -devspace restart -n my-namespace --pod my-pod -devspace restart -n my-namespace --label-selector abc=def -``` - -Restart a pod via kubectl: -``` -kubectl exec my-pod -- sh -c 'PID=$(cat /.devspace/devspace-pid) && rm /.devspace/devspace-pid && kill -9 -$PID' -``` - -You can also manually trigger a restart through the restart helper by doing the following (same as with kubectl): -```bash -# 1. Get the PID of your applications process -PID=$(cat /.devspace/devspace-pid) - -# 2. Remove the PID file to tell the restart helper that this is an intended restart -# (otherwise the restart helper will terminate as well which will kill the container) -rm /.devspace/devspace-pid - -# 3. Kill the application process group (restart helper on PID 1 will detect this and restart it again) -kill -9 -$PID -``` - -:::note Automatic Restart On File Change -This is exactly what DevSpace is doing when the [post-sync command `restartContainer: true`](../development/file-synchronization.mdx#onuploadrestartcontainer) is configured. -::: - - -
- -## Restart Helper Script -```bash -#!/bin/sh -# -# A process wrapper script to simulate a container restart. This file was injected with devspace during the build process -# -set -e -pid="" -trap quit TERM INT -quit() { - if [ -n "$pid" ]; then - kill $pid - fi -} -while true; do - setsid "$@" & - pid=$! - echo "$pid" > /.devspace/devspace-pid - set +e - wait $pid - exit_code=$? - if [ -f /.devspace/devspace-pid ]; then - rm -f /.devspace/devspace-pid - printf "\nContainer exited with $exit_code. Will restart in 7 seconds...\n" - sleep 7 - fi - set -e - printf "\n\n############### Restart container ###############\n\n" -done -``` - -## Providing a custom restart helper script or changing the existing script - -DevSpace provides a way to change the existing restart helper script by defining the option `restartHelperPath`: -```yaml -images: - frontend: - image: john/appfrontend - injectRestartHelper: true - restartHelperPath: path/to/restarthelper.sh -``` - -DevSpace will now inject this script instead of the bundled restart helper script (see above). You can also specify an URL instead of a local path. This can be handy if you want to start up the application in a special way or want to make adjustments to the existing restart helper script. diff --git a/docs/versioned_docs/version-5.18/configuration/images/kaniko.mdx b/docs/versioned_docs/version-5.18/configuration/images/kaniko.mdx deleted file mode 100644 index a8ab00d1a1..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/kaniko.mdx +++ /dev/null @@ -1,336 +0,0 @@ ---- -title: Build Images with kaniko -sidebar_label: kaniko ---- - -import FragmentBuildOptionsTarget from '../../fragments/build-option-target.mdx'; -import FragmentBuildOptionsNetwork from '../../fragments/build-option-network.mdx'; -import FragmentBuildOptionsBuildArgs from '../../fragments/build-option-buildArgs.mdx'; - -Using [kaniko](https://github.com/GoogleContainerTools/kaniko) as build tool allows you to build images directly inside your Kubernetes cluster without a Docker daemon. DevSpace simply starts a build pod and builds the image using `kaniko`. - -:::note Automatic Cleanup -After the build process completes, the build pod started for the kaniko build process will be deleted again. -::: - -To set `kaniko` as default build tool, use the following configuration: -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: {} -``` - -## Flags & Arguments - -### `cache` -The `cache` option expects a boolean that states if kaniko should make use of layer caching by pulling the previously build image and using the layers of this image as cache. - -#### Default Value For `cache` -```yaml -cache: true -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - cache: false -``` -**Explanation:** -- The first image `backend` would be built using kaniko and make use of the build cache. -- The second image `frontend` would be built using kaniko and **not** use the build cache. - - -### `snapshotMode` -The `snapshotMode` option expects a string that can have the following values: -- `full` tells kaniko to do a full filesystem snapshot -- `time` tells kaniko to do a filesystem snapshot based on `mtime` (default) - -:::warning Limitations -One of the biggest limitations of the `time` mode is that kaniko might **miss** file metadata changes introduced by `RUN` statements, e.g. kaniko might skip a command such as `RUN chown 333:333 -R /app`. In cases where this is not an option, use `full` instead. Learn more about [limitations related to kaniko snapshots using `mtime`](https://github.com/GoogleContainerTools/kaniko#mtime-and-snapshotting). -::: - -#### Default Value For `snapshotMode` -```yaml -snapshotMode: time -``` - -#### Example: Building Images with kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - cache: true - frontend: - image: john/appfrontend - build: - kaniko: - snapshotMode: time -``` -**Explanation:** -- The first image `backend` would be built using kaniko and creating full filesystem snapshots. -- The second image `frontend` would be built using kaniko and calculate filesystem snapthots only based on `mtime`. - - -### `insecure` -The `insecure` option expects a boolean stating if kaniko should allow to push to an insecure (plain HTTP instead of HTTPS) registry. - -:::warning -This option should only be set to `true` for testing purposes. -::: - -#### Default Value For `insecure` -```yaml -insecure: false -``` - -#### Example: Push to Insecure Registry With kaniko -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - insecure: false -``` -**Explanation:** -The image `backend` would be built using kaniko and pushing to the insecure registry `123.456.789.0:5000` would be allowed. - - -### `args` -The `args` option expects an array of strings that will be passed as arguments (and flags) when running the kaniko build command. - -:::note Kaniko Documentation -Take a look at the kaniko documentation for a full [list of available flags](https://github.com/GoogleContainerTools/kaniko#additional-flags). -::: - -#### Default Value For `args` -```yaml -args: [] -``` - -#### Example: Passing Args to kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - args: - - --cache-dir=/tmp - - --verbosity=debug -``` -**Explanation:** -The image `backend` would be built using kaniko and the flags `--cache-dir=/tmp --verbosity=debug` would be set when running the build command within the kaniko pod used for image building. - - - -
- -## Build Pod Configuration - -### `image` -The `image` option expects a string stating the image that should be used for the kaniko container within the build pod. - -#### Default Value For `image` -```yaml -image: gcr.io/kaniko-project/executor:v0.17.1 -``` - -#### Example: Use Different Kaniko Image/Version -```yaml -images: - backend: - image: 123.456.789.0:5000/john/appbackend - build: - kaniko: - image: gcr.io/kaniko-project/executor:v0.19.0 -``` - -### `initImage` -The `initImage` option expects a string stating the image that should be used for the init kaniko container within the build pod. (default is `alpine`) - -### `pullSecret` -The `pullSecret` option expects a string with the name of a Kubernetes secret which is used by kaniko as pull/push secret (e.g. for pulling the base image defined in the `FROM` statement of the Dockerfile and for pushing the newly built image after the kaniko build process). - -:::info -In most cases, DevSpace already makes sure that kaniko gets the correct pull secrets to push and pull to registries. -::: - -#### Default Value For `pullSecret` -```yaml -pullSecret: "" -``` - -#### Example: Pull Secret For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - pullSecret: custom-pull-secret -``` -**Explanation:** -The image `backend` would be built using kaniko and kaniko would use the Kubernete secret `custom-pull-secret` to pull images from registries that require authentication. - -:::tip Creating Pull Secrets using `hooks` -If you use the `pullSecret` option, you have to manually create the secret before DevSpace tries to build your images. You can automate this by [defining a hook in devspace.yaml](../../configuration/hooks/basics.mdx) as show in this example: -```yaml -hooks: -- command: kubectl - args: - - create - - secret - - generic - - custom-pull-secret - - --from-literal - - config.json='{ "credsStore":"ecr-login" }' - when: - before: - images: all -``` -::: - -:::note Building AWS ECR images on EKS -If your EKS instance is [configured with access to ECR (see instance role permissions for AWS EKS and ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html), your pull secret referenced by the `pullSecret` option, could be created with this kubectl command: -```yaml -kubectl create secret generic custom-pull-secret --from-literal config.json='{ "credsStore":"ecr-login" }' -``` -The resulting Kubernetes secret would look like this: -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: custom-pull-secret -data: - config.json: eyAiY3JlZHNTdG9yZSI6ImVjci1sb2dpbiIgfQ== -``` -If you define `pullSecret: custom-pull-secret` as shown in the example above, DevSpace will automatically mount this secret into the kaniko container and kaniko will be able to pull from and push to ECR. -::: - - -### `additionalMounts` -The `additionalMounts` option expects an array of mount options that allow to mount Kubernetes Secrets and ConfigMaps into the kaniko container within the build pod. - -#### Default Value For `additionalMounts` -```yaml -additionalMounts: [] -``` - -#### Example: Mount ConfigMaps & Secrets For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - additionalMounts: - - mountPath: /some/configmap/dir - configMap: - name: my-configmap - - mountPath: /some/secret/dir - secret: - name: my-secret - items: - - key: aws-token - path: token.json -``` -**Explanation:** -The above configuration would create a kaniko container which mounts the following volumes: -- All keys within the ConfigMap `my-configmap` will be mounted as files within the folder `/some/configmap/dir`. The filenames will be the keys within the ConfigMap. -- The key `aws-token` within the Secret `my-secret` will be mounted as the file `/some/secret/dir/token.json`. - - -### `resources` -The `resources` option expects a Kubernetes resource object, so that the kaniko pod can specify `requests` and `limits` for resources such as `memory` and `cpu`. - -#### Default Value For `resources` -```yaml -resources: {} -``` - -#### Example: Resource Limits For Kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - resources: - limits: - memory: "256Mi" - cpu: "500m" -``` - - -### `namespace` -The `namespace` option expects a string stating a namespace that should be used to start the kaniko build pod in. - -:::warning Hard-Coding Namespaces Discouraged -Unless you really know what you are doing, it is discouraged to hard-code namespaces within devspace.yaml because that makes it harder to share the project and its configuration with others. -::: - -#### Default Value For `namespace` -```yaml -namespace: "" # defaults to the default namespace of the current kube-context -``` - -#### Example: Different Namespace For kaniko -```yaml -images: - backend: - image: john/appbackend - build: - kaniko: - namespace: build-namespace -``` -**Explanation:** -The image `backend` would be built using kaniko and the build pod started to run the kaniko build process would be created within the namespace `build-namespace` within the cluster that the current kube-context points to. - -### `serviceAccount` - -The service account to use for the build pod. - -### `nodeSelector` - -A key value map of the node selector to use for the build pod. - -### `tolerations` - -Array of node [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#concepts) that should be used to schedule the build pod. - -
- -## Build Options -DevSpace allows you to configure the following build options: -- `target` defining the build target for multi-stage builds -- `network` to define which network to use during building (e.g. `docker build --network=host`) -- `buildArgs` to pass arguments to the Dockerfile during the build process - - -### `options.target` - - - - -### `options.network` - - - - -### `options.buildArgs` - - diff --git a/docs/versioned_docs/version-5.18/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-5.18/configuration/images/pull-secrets.mdx deleted file mode 100644 index e09163eae5..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/pull-secrets.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Image Pull Secrets -sidebar_label: createPullSecret ---- - -## `createPullSecret` -The `createPullSecret` option expects a boolean that tells DevSpace if a pull secret should be created for the registry where this image will be pushed to. -- If there are multiple images with the **same registry** and any of the images will define `createPullSecret: true`, the pull secret will be created no matter if any of the other images using the same registry explicitly defines `createPullSecret: false`. -- There is **no need to change your Kubernetes manifests, Helm charts, or other deployments to reference the pull secret** because DevSpace will [add the pull secret to the service account](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) which deploys your project. This ensures that the pull secret is automatically considered by Kubernetes although it is not explicitly referenced by your pods. -- After running `devspace deploy` or `devspace dev`, you should be able to see the auto-generated pull secrets created by DevSpace when you run the command `kubectl get serviceaccount default -o yaml` and take a look at the `imagePullSecrets` section of this service account. - -#### Default Value For `createPullSecret` -```yaml -createPullSecret: true -``` - -#### Example: Different Dockerfiles -```yaml -images: - backend: - image: john/appbackend - createPullSecret: false - frontend: - image: john/appfrontend -``` -**Explanation:** -- The first image `backend` will be pushed to Docker Hub and DevSpace will **not** create a pull secret for Docker Hub because `createPullSecret` is `false`. - This makes sense for public images where no login is required to pull the image or where you want to manage the pull secret yourself. -- The second image `frontend` will be pushed to gcr.io and DevSpace will create a pull secret for gcr.io because `createPullSecret` defaults to `true`, - so Kubernetes can pull the image from gcr.io. diff --git a/docs/versioned_docs/version-5.18/configuration/images/rebuild-strategy.mdx b/docs/versioned_docs/version-5.18/configuration/images/rebuild-strategy.mdx deleted file mode 100644 index c5aa10e53a..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/images/rebuild-strategy.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Rebuild Strategies -sidebar_label: rebuildStrategy ---- - -## `rebuildStrategy` -The `rebuildStrategy` option expects a string which decides when DevSpace will rebuild an image. By default DevSpace will rebuild an image if one of the conditions is true: -- The image was not built before -- The dockerfile has changed -- The configuration within the devspace.yaml for the image has changed -- A file within the docker context (excluding .dockerignore rules) has changed - -:::tip Skip Rebuild Manually -DevSpace will skip building when the `--skip-build` flag is explicitly provided. -::: - -:::tip Trigger Rebuild Manually -DevSpace will always rebuild when the `-b / --force-rebuild` flag is explicitly provided. -::: - -#### Options For `rebuildStrategy` -Currently DevSpace supports the rebuild strategies `always` and `ignoreContextChanges`: -- **always**: if this strategy is provided, DevSpace will always rebuild the image -- **ignoreContextChanges**: same as default except that DevSpace will ignore changes to files within the docker context - -#### Example -```yaml {4,7} -images: - backend: - image: john/appbackend - rebuildStrategy: always - frontend: - image: john/appfrontend - rebuildStrategy: ignoreContextChanges - cache: - image: john/cache - build: - disabled: true -``` -**Explanation:** -When running `devspace dev`, `devspace build` or `devspace deploy` using the above configuration, DevSpace would: -- **not** build the image `cache` because `build.disabled` is `true` -- build the image `frontend` only if it was not built yet, there were changes to the Dockerfile or the image config itself changed -- build the image `backend` because `rebuildStrategy` is set to `always` diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/activation.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/activation.mdx deleted file mode 100644 index 15dae79bd2..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/activation.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: "Profiles: Activation" -sidebar_label: activation ---- - -The `activation` option is optional and allows you to activate a profile using regular expression matching of either Devspace or environment variables. An activation is configured with the profile it activates in `devspace.yaml`. - - -#### Example: Defining a Profile Activation using `vars` -```yaml {1-3,7-8} -vars: -- name: ENV - default: development -profiles: -- name: production - activation: - - vars: - ENV: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The `production` profile would be activated when the Devspace variable `ENV` has value `production`. In this example, it has a default value of `development`, so it is not activated unless you override the value using `--var ENV=production` - -#### Example: Defining a Profile Activation using Environment Variables -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "production" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The `production` profile would be activated when the environment variable `ENV` has value `production`: - -#### Example: Regular Expression Activation -```yaml {3-5} -profiles: -- name: production - activation: - - env: - ENV: "prod-\d+" - patches: - - op: replace - path: images.backend.image - value: john/prodbackend -``` -The profile `production` would be activated when the environment variable `ENV` matches the regular expression `prod-\d+`. This can be useful for matching environment variables that have dynamic values. Regular expressions will have start of string (`^`) and end of string (`$`) anchors added automatically to avoid unexpected substring matching. - -#### Example: Matching All -When multiple `env` or `vars` name/expression pairs are specified in the same activation, all expressions must match to activate the profile. For example, the `production` profile is activated when the environment variable `CI` is `true` and the Devspace variable `ENV` is `development`: -```yaml {3-7} -profiles: -- name: production - activation: - - env: - CI: "true" - vars: - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -:::note Combining `env` and `vars` -While possible to activate profiles using environment variables and Devspace variables, `vars` can also be populated through environment variables. In the above example, we could have also defined `CI` as a Devspace variable with `source: env` and only used `vars` in the activation. -::: - -#### Example: Matching Any -When `env` or `vars` are used in multiple activations, the profile is activated when any expression matches. In this example, the `production` profile is activated when either match their expressions: -```yaml {3-7} -profiles: -- name: production - activation: - - env: - CI: "true" - - vars: - ENV: "development" - patches: - - op: replace - path: images.backend.image - value: john/devbackend -``` - -### Dependency Activations -When `dependencies` are referenced from a `devspace.yaml`, the dependency's profile activations will also be evaluated. In this example, any profile activations in `./component-1/devspace.yaml` or `./component-2/devspace.yaml` would be evaluated. - -```yaml -dependencies: -- name: component-1 - source: - path: ./component-1 -- name: component-2 - source: - path: ./component-2 -``` - -#### Example: Disable Activations by Dependency -The `disableProfileActivation` option can be used to disable profile activations for specific dependencies. In the following example, the activations for `./component-1/devspace.yaml` would be ignored, while the activations in `./component-2/devspace.yaml` would be evaluated: -```yaml {5} -dependencies: -- name: component-1 - source: - path: ./component-1 - disableProfileActivation: true -- name: component-2 - source: - path: ./component-2 -``` - -### Disable Activations Globally -The `--disable-profile-activation` flag can be used to disable all profile activations, including those specifed within each dependency's `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/basics.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/basics.mdx deleted file mode 100644 index 8c13d24a13..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/basics.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Config Profiles -sidebar_label: Basics ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -DevSpace allows you to define different profiles for different use cases (e.g. working on different services in the same project, starting certain debugging environments) or for different deployment targets (e.g. dev, staging production). - -Profiles allow you to define: -- [`replace`](../../configuration/profiles/replace.mdx) statements to override entire sections of the config. -- [`merge`](../../configuration/profiles/merge.mdx) patches ([JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386)) to change specific parts of the config. -- [`patches`](../../configuration/profiles/patches.mdx) ([JSON Patch, RFC 6902](https://tools.ietf.org/html/rfc6902)) to modify certain paths in the config. - -:::note Combine several strategies -It is possible to use several strategies together within one profile. The execution order inside a single profile is: -1. `replace` -2. `merge` -3. `patches` - -You can also apply multiple profiles through the `--profile` flag -::: - -:::tip Debug Profiles - - - -::: - -A profile has to be configured in the `profiles` section of the `devspace.yaml`. -```yaml {15-25} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: remove - path: deployments.name=backend.helm.values.containers[1] - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -``` - -## Useful Commands - -### `devspace print -p [profile]` - - - - - -### `devspace list profiles` -To get a list of available profiles, you can run this command: -```bash -devspace list profiles -``` - -### `devspace use profile [profile]` -To permanently switch to a different profile, you can run this command: -```bash -devspace use profile [PROFILE_NAME] -``` - -:::note -Permanently switching to a profile means that all future commands (e.g. `devspace deploy` or `devspace dev`) will be executed using this profile until the user [resets the profile](#devspace-use-profile---reset) (see below). -::: - -### `devspace use profile --reset` -To permanently switch back to the default configuration (no profile replaces and patches active), you can run this command: -```bash -devspace use profile --reset -``` - -### `devspace [deploy] -p [profile]` -Most DevSpace commands support the `-p / --profile` flag. Using this flag, you can run a single command with a different profile without switching your profile permenantly: -```bash -devspace build -p [PROFILE_NAME] -devspace deploy -p [PROFILE_NAME] -devspace dev -p [PROFILE_NAME] -devspace dev -i -p [PROFILE_NAME] -``` diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/merge.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/merge.mdx deleted file mode 100644 index ac8c7420cb..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/merge.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Profiles: Merge" -sidebar_label: merge ---- - -Merge patches are a way to perform specific overrides to the configuration without having to create a completely separate config file. Patch functionality follows [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386) semantics. - -### Example - -Merge patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {16-30} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - merge: - images: - # Change the backend image - backend: - image: john/prodbackend - # Delete the backend-debugger image - backend-debugger: null - # Override deployments - deployments: - - name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config is merged with the given merge patch at `profiles[0].merge`. -- Merge patches follow the rules as defined in [JSON Merge Patch, RFC 7386](https://tools.ietf.org/html/rfc7386): - - Arrays are overriden - - Objects are merged together - - Keys that have a `null` value are removed from objects -- The resulting config used in-memory when the profile `production` is used would look like this (you can check via `devspace print -p production`): - -```yaml -# In-Memory Config After Applying Merge Patches For Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/parents.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/parents.mdx deleted file mode 100644 index 8ac70e6678..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/parents.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Profiles: Parents" -sidebar_label: parents ---- - -import FragmentApplyMultiple from '../../fragments/profiles-apply-multiple.mdx'; - -The `parents` option is optional and expects the names of other profiles which should be applied before this profile. -The profiles are applied in the order they are specified. It is also possible to apply profiles from distant `devspace.yaml`s. -The kind of profile inheritance that the `parents` option provides can help to reduce redundancy when multiple profiles need to change the config in a similar way. - -:::info Execution Order -A parent profile is applied before the profile that defines the parent. A parent profile can have parents of its own. -::: - -#### Example: Defining a Parent Profile -```yaml {16-17} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - parents: - - profile: staging - patches: - - op: add - path: deployments.name=backend.helm.values.containers - value: - image: john/cache -- name: staging - replace: - images: - backend: - image: john/backendprod - patches: - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/backendprod - - op: remove - path: deployments.name=backend.helm.values.containers[1] -``` -When the `production` profile is active, the `replace` and `patches` statements configured in `staging` would be applied first because of the `parents` statement in line 16. After applying the `staging` profile, DevSpace would additionally apply the currently active `production` profile. In this example, the `production` profile is based on the `staging` profile and the only difference is that the `production` profile adds another container to the `backend` deployment which is using the image `john/cache`. - -#### Example: Defining multiple Parent Profiles -```yaml -version: v1beta9 -profiles: -- name: multi-parents - # Field that applies the profile deployments first and then the profile images - parents: - - profile: deployments - - profile: images -- name: deployments - replace: - deployments: - - name: my-deployment - helm: - componentChart: true - values: - containers: - - name: test -- name: images - replace: - images: - test: - image: mydockeruser/devspace - createPullSecret: true -``` - - -It is also possible to load a profile from a different source with the option `profiles.*.parents.*.source` that can define profiles that lie in a different `devspace.yaml`: - -#### Example: Define a profile from a different devspace.yaml -```yaml -version: v1beta9 -profiles: -- name: dev - parents: - # Will load the profile images from the devspace.yaml specified in other-folder/devspace.yaml - - profile: images - source: - path: other-folder # devspace.yaml will be automatically appended to the path (same syntax as with dependencies) - # or load from url - # path: https://raw.githubusercontent.com/my-org/my-repo/master/devspace.yaml - # or load from git - # git: https://github.com/loft-sh/devspace.git - - profile: deployments - source: - path: other-folder-2 -``` - -Under `source` the same options can be specified as for loading [dependencies](../../configuration/dependencies/basics.mdx). - - diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/patches.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/patches.mdx deleted file mode 100644 index 3c0464e854..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/patches.mdx +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: "Profiles: Patches" -sidebar_label: patches ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -Patches are a way to perform minor overrides to the configuration without having to create a separate config file. Patch functionality follows JSON Patch([RFC](https://tools.ietf.org/html/rfc6902)) semantics, as well as enhanced `path` selectors, as implemented by the [yaml-jsonpath](https://github.com/vmware-labs/yaml-jsonpath) library. - -## Example -Patches are ideal for reflecting changes between different environments, e.g. dev, staging and production. -```yaml {15-26} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[0].image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers[1].image - value: john/cache -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config would be patched with 3 patches. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Patches For Profile `production` -images: - backend: - image: john/prodbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend - - image: john/cache -``` - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `patches` -The `patches` option expects an array of patch objects which consists of the following properties: -- `op` stating the patch operation (possible values: `replace`, `add`, `remove`) -- `path` stating a jsonpath or a xpath within the config (e.g. `images.backend.image`, `deployments.name=backend.helm.values.containers[1]`) -- `value` stating an arbitrary value used by the operation (e.g. a string, an integer, a boolean, a yaml object) - -:::warning `op: add` only for arrays -Using `op: add` only works as expected when `path` points to an array value. Using `op: add` to add properties to an object (e.g. `deployments[*].helm.values`) will **not** work and instead replace all existing properties. -::: - -:::tip Array Paths -When you want to define a `path` that contains an array (e.g. `deployments`), you have several options: - -1. Use the index of the array item you want to patch, e.g. `deployments[0]`, `deployments/0` -2. Use a property selector matching the array item(s) you want to patch, e.g. `deployments.name=backend` -3. Use a wildcard selector to match all array item(s), e.g. `deployments.*`,`deployments[*]` or `deployments/*` -4. Use a comparison selector matching the array item(s) you want to patch, e.g. `deployments[?(@.helm.timeout=='1000s')]` -5. Use a regular expression selector matching the array item(s) you want to patch, e.g. `deployments[?(@.name=~/^production/)]` - -Using a selector rather than the array index is often better because it is more resilient and will not cause any issues even if the order of an array's items is changed later on. A selector is also able to select multiple array items if all of them have the same value for this property. -::: - -:::info Value For Replace / Add -If you use the `replace` or `add` operation, `value` is a mandatory property. -::: - -:::info -If `value` is defined, the new value must provide the correct type to be used when adding or replacing the existing value found under `path` using the newly provided `value`, e.g. an array must be replaced with an array. -::: - -:::note -The `patches` of a profile can modify all parts of the configuration **except** the sections `profiles` and `commands`. -::: - -#### Example: Config Patches -```yaml {15-38} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: images.backend.image - value: john/stagingbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/stagingbackend - - op: remove - path: deployments.name=backend.helm.values.containers.image=john/debugger -- name: production - patches: - - op: replace - path: images.backend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/devbackend.image - value: john/prodbackend - - op: replace - path: deployments.name=backend.helm.values.containers.image=john/debugger.image - value: john/cache -``` -**Explanation:** -- The above example defines 2 profiles: `staging`, `production` -- Users can use the flag `-p staging` to use the `staging` profile for a single command execution -- Users can use the flag `-p production` to use the `production` profile for a single command execution -- Users can permanently switch to the `staging` profile using: `devspace use profile staging` -- Users can permanently switch to the `production` profile using: `devspace use profile production` - -#### Example: Config Patches using Recursive Descent Selectors -```yaml {18,21,25,28} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: staging - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/stagingbackend - - op: remove - path: deployments..[?(@.image=='john/debugger')] -- name: production - patches: - - op: replace - path: ..[?(@.image=='john/devbackend')].image - value: john/prodbackend - - op: replace - path: deployments..[?(@.image=='john/debugger')].image - value: john/cache -``` -**Explanation:** -- The above example has the same result as this [previous example](#example-config-patches). -- By using a recursive descent selector, we can change many `image` values at once. -- When the `staging` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/stagingbackend`, and all deployment containers with `image` property equal to `john/debugger` are removed. -- When the `production` profile is used, all `image` properties that have value `john/devbackend` are changed to `john/prodbackend`, and all deployment containers with `image` property equal to `john/debugger` are changed to `john/cache`. - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.18/configuration/profiles/replace.mdx b/docs/versioned_docs/version-5.18/configuration/profiles/replace.mdx deleted file mode 100644 index 21c4a5d99d..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/profiles/replace.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Profiles: Replace" -sidebar_label: replace ---- - -import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx'; - -## Configuration - -### `name` -The `name` option is mandatory and expects a string defining the name of the profile. - -### `replace` - -The `replace` option expects an object with the following (optional) fields: -- `images` which will replace the entire `images` section of the devspace.yaml -- `deployments` which will replace the entire `deployments` section of the devspace.yaml -- `dev` which will replace the entire `dev` section of the devspace.yaml -- `dependencies` which will replace the entire `dependencies` section of the devspace.yaml -- `hooks` which will replace the entire `hooks` section of the devspace.yaml - -#### Example: Using Config Replace For Profile `production` -```yaml {16-19} -images: - backend: - image: john/devbackend - backend-debugger: - image: john/debugger -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/devbackend - - image: john/debugger -profiles: -- name: production - replace: - images: - backend: - image: john/prodbackend - patches: - - op: remove - path: deployments[0].helm.values.containers[1] -``` -**Explanation:** -- The above example defines 1 profile: `production` -- When using the profile `production`, the config section `images` would be entirely replaced and additionally, 1 patch would be applied. -- The resulting config used in-memory when the profile `production` is used would look like this: - -```yaml -# In-Memory Config After Applying Profile `production` -images: - backend: - image: john/prodbackend -deployments: -- name: app-backend - helm: - componentChart: true - values: - containers: - - image: john/prodbackend -``` - -:::tip Combine Replace & Patches -As shown in this example, it is possible to use `replace` and `patch` options in combination. -::: - -## Useful Commands - -### `devspace print -p [profile]` - - diff --git a/docs/versioned_docs/version-5.18/configuration/pullSecrets/basics.mdx b/docs/versioned_docs/version-5.18/configuration/pullSecrets/basics.mdx deleted file mode 100644 index 2407bf95b3..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/pullSecrets/basics.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Pull Secrets -sidebar_label: pullSecrets ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to configure additional [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) that should be created in the target namespace. For each configured pull secret in the `devspace.yaml`, DevSpace will create a secret in the target namespace and add the secret to the `imagePullSecrets` field of the service account. - -For [images](../images/basics.mdx), DevSpace will also automatically create a pull secret, if authentication data can be found in the local docker store and creation is [enabled](../images/pull-secrets.mdx) via `createPullSecret`. - -Image Pull Secrets are defined in the `pullSecrets` section of the `devspace.yaml`. - - - - -```yaml -# If you don't want to specify the password and username directly in the config -# you can use variables, .env file or save the credentials in the local docker store -pullSecrets: -- registry: my-registry.com:5000 - username: ${REGISTRY_USER} - password: ${REGISTRY_PASSWORD} -``` - - - - -```yaml -# If you leave out the username & password DevSpace will try -# to get these from the local docker store. Make sure you -# are logged into the registry with `docker login my-registry.com:5000` -pullSecrets: -- registry: my-registry.com:5000 -``` - - - - -```yaml -pullSecrets: -- registry: my-registry.com:5000 - secret: my-pull-secret-name - serviceAccounts: - - default - - my-other-service-account -``` - - - - -## Configuration - -### `registry` -The `registry` option is mandatory and expects a string with the registry name for which a pull secret should be created for. - -### `disabled` -The `disabled` option is optional and expects a bool if the pull secret should get created for the specified registry. - -### `username` -The `username` option is optional and expects a string with the username to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `password` -The `password` option is optional and expects a string with the password to login into the registry. If this field is empty, DevSpace will try to find out username and password from the local docker store. - -### `email` -The `email` option is optional and expects a string with the email to login into the registry. This can be left empty usually since username and password are enough to log into a docker registry. If empty, the default value will be `noreply@devspace.cloud`. - -### `secret` -The `secret` option is optional and expects a string how the secret should be named. If empty, DevSpace will automatically create a meaningful name for the secret. - -### `serviceAccounts` -The `serviceAccounts` option is optional and expects an array of strings to which the pull secret should be added. If an image pull secret is added to a service account, the service account is able to pull images from that registry even without specifying the image pull secret in a pod definition. If this is empty, DevSpace will add the pull secret to the `default` serviceaccount. diff --git a/docs/versioned_docs/version-5.18/configuration/require/basics.mdx b/docs/versioned_docs/version-5.18/configuration/require/basics.mdx deleted file mode 100644 index b21908ec3f..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/require/basics.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Required Versions -sidebar_label: require ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of: - -- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version -- **Installed Plugins** (`require.plugins`): You can define required plugins and their version -- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range - -Requirements are defined in the `require` section of the `devspace.yaml`. - - - - -```yaml -# You can either specify an exact version or a version range or even -# multiple versions. -require: - devspace: '>= 4.0, < 6.0' -``` - - - - -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - - name: loft - version: ">= 1.11.0" -``` - - - - -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` - - - - -## Configuration - -### `devspace` -The `devspace` option can be used to define a version constraint for the DevSpace version that is required to use this config. Constraints can have `=`, `!=`, `<`, `>`, `>=` or `<=` in front of them and can be chained for a logical AND: -- **Exact Version**: `v1.0.0` -- **Newer Versions**: `>= v1.0.0` -- **Older Versions**: `< v1.0.0` -- **Multiple**: `>= v4.0.0, <= v8.0.0, != v5.0.0` - -### `plugins` -The `plugins` option takes an array of required plugins that need to be installed. For each plugin a name (`require.plugins[*].name`) and version constraint (`require.plugins[*].version`) is required. - -For example: -```yaml -# Each plugin that is defined under plugins needs to be installed -# in the required version. -require: - plugins: - # Requires that the plugin loft is installed with at least version v1.11.0 - - name: loft - version: ">= 1.11.0" -``` - -### `commands` -The `commands` option takes an array of required commands that need to be installed. For each command a name (`require.commands[*].name`) and version constraint (`require.commands[*].version`) is required. By default, DevSpace will try to call the command via `NAME version` to figure out its version. DevSpace will use the regex `(v\\d+\\.\\d+\\.\\d+)` to parse the command version and assumes the first matching group contains the version. If no matching group can be found or the command does not exist, DevSpace will fail. - -You can override the arguments used by DevSpace to retrieve the command version via `require.commands[*].versionArgs`. You can also override the regex that is used by DevSpace to parse the command version via `require.commands[*].versionRegEx`. The version regex needs to define a single matching group that specifies the version. The first match of that matching group will be handled as command version by DevSpace. - -For example: -```yaml -require: - # By default devspace will try to call the command 'NAME version' - # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version - commands: - - name: helm - version: '> 3.0.0' - - name: my-custom-command - # Override the default args - versionArgs: ["--version"] - # Override the default reg ex - versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)" - version: '4.6.7' -``` diff --git a/docs/versioned_docs/version-5.18/configuration/variables/basics.mdx b/docs/versioned_docs/version-5.18/configuration/variables/basics.mdx deleted file mode 100644 index 4778d203fb..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/basics.mdx +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: Config Variables -sidebar_label: Basics ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -DevSpace allows you to make your configuration dynamic by using variables in `devspace.yaml`. - -While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. Variables are defined within the `vars` section of `devspace.yaml`. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -# Variables defined by value will not -# be asked or overwritten through environment -- name: MYSQL_VERSION - value: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -```yaml {3,5-6} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - command: "echo 5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - - - - -```yaml {3} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: {} -``` - -:::tip -DevSpace allows you to use config variables without explicitly defining them as variables. You can simply reference them via `${MY_ENV_VAR}` anywhere in your `devspace.yaml`. Implicit variables use `source: all`. -::: - - - - -:::info Source -The `source` option of a config variable expects either: -- `all` means to check environment variables **first** and then ask a question if no env variable is defined (**default**) -- [`env`](../../configuration/variables/source-env.mdx) means to check environment variables **only** -- [`input`](../../configuration/variables/source-input.mdx) means to ask the user a question **once** (values will be cached in `.devspace/generated.yaml`) -- [`command`](../../configuration/variables/source-command.mdx) means DevSpace will not ask the user a question and instead execute a command to determine the value of the variable. -::: - -:::warning Pass Variables via CLI -A useful feature in DevSpace is that you can also specify variables as flags, which will override previous values (if there are any): -``` -devspace deploy --var VAR1=VALUE1 --var VAR2=VALUE2 -``` -::: - -:::note Input Caching -If `source` is either `all` or `input` and the variable is not defined, the user will be asked to provide a value either using a generic question or the one provided via the [`question`](../../configuration/variables/source-input.mdx#question) option. The user-provided value will be cached encrypted in `.devspace/generated.yaml` and the user will only be asked again after the cache has been cleared first using: -```bash -devspace reset vars -``` -::: - -To disable this functionality set the field `noCache` to `true`. This will make devspace prompt for the variable on every run. - -## Useful Commands - -### `devspace list vars` -To get a list of all variables defined in the `devspace.yaml`, you can run this command: -```bash -devspace list vars -``` - -### `devspace reset vars` -Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run: -```bash -devspace reset vars -``` - -DevSpace will fill the variables cache again, once you run the next build or deployment command. - -### `devspace print` -The following command prints the config after all variables have been replaced: -```bash -devspace print -``` -You can optionally add the `-p / --profiles` flag to this command. - -### `export VAR_NAME=value` -The value for a config variable can also be set by defining an environment variable named `[VAR_NAME]`. Setting the value of a config variable with name `${IMAGE_NAME}` would be possible by setting an environment value `IMAGE_NAME`. - - - - - -```powershell -$env:IMAGE_NAME = "some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - - -```bash -export IMAGE_NAME="some-value" -``` - - - diff --git a/docs/versioned_docs/version-5.18/configuration/variables/predefined-variables.mdx b/docs/versioned_docs/version-5.18/configuration/variables/predefined-variables.mdx deleted file mode 100644 index 6465503abf..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/predefined-variables.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Predefined Variables -sidebar_label: "predefined" ---- - -Predefined variables are certain variables provided by DevSpace that might be useful to use within your config. These variables allow you for example to change configuration based on kubernetes context or namespace. - -## Predefined Variables -DevSpace provides some variables that are filled automatically and can be used within the config. These can be helpful for image tagging and other use cases: - -- **devspace.namespace**: The default namespace of the current kube-context (= the namespace that you are deploying to) -- **devspace.context**: Name of the current kube-context -- **devspace.git.commit**: A short hash of the local repo's current git commit -- **devspace.git.branch**: The current branch name of the local repo -- **devspace.version**: The version of the devspace cli without a leading v (e.g. 5.4.3) -- **devspace.profile**: The main profile used for DevSpace (value of the last --profile flag) -- **devspace.userHome**: The absolute path to the user's home directory -- **devspace.timestamp** A unix timestamp when the config was loaded -- **devspace.random**: A random 6 character long string - -#### Example: Using `${devspace.git.commit}` -```yaml -images: - default: - image: myrepo/devspace - tags: ["${devspace.git.commit}-${devspace.timestamp}"] -``` -**Explanation:** -This config will tag the image in the form of `myrepo/devspace:d9b4bcd-1559766514`. Many other combinations are possible with this method. - - diff --git a/docs/versioned_docs/version-5.18/configuration/variables/runtime-variables.mdx b/docs/versioned_docs/version-5.18/configuration/variables/runtime-variables.mdx deleted file mode 100644 index 2bca9e58a2..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/runtime-variables.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Runtime Variables -sidebar_label: "runtime" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Runtime variables are special variables that are only available in certain config areas and are filled during runtime. Those variables are useful to access certain runtime information, such as hook output or image tags. - - - - -```yaml -images: - app: - image: registry.url/repo/image -deployments: -- name: backend - helm: - chart: - name: chart-name - repo: https://my-charts.company.tld/ - values: - # Will be rewritten to registry.url/repo/image:generated_tag - imageWithTag: ${runtime.images.app} - # Will be rewritten to registry.url/repo/image - imageWithoutTag: ${runtime.images.app.image} - # Will be rewritten to generated_tag - onlyTag: ${runtime.images.app.tag} -``` - - - - -```yaml -images: - app: - image: myuser/image -hooks: - - name: "image-digest" - command: | - # This command prints the image digest - echo $(docker inspect ${runtime.images.app.image}:${runtime.images.app.tag} --format='{{index .RepoDigests 0}}' | cut -d'@' -f2) - events: ["after:build:app"] -deployments: -- name: checkout - helm: - chart: - name: ./kubernetes/helm/app - values: - app: - image: - digest: ${runtime.hooks.image-digest.stdout} -``` - - - - -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageSelector: ${runtime.dependencies.dep1.images.image1} -``` - - - - -Runtime variables can be used in the following DevSpace config sections: - -``` -/images/*/build/custom/command -/images/*/build/custom/commands/*/command -/images/*/build/custom/args/* -/images/*/build/custom/appendArgs/* -/deployments/*/helm/values/** -/hooks/*/command -/hooks/*/args/* -/hooks/*/container/imageSelector -/dev/ports/*/imageSelector -/dev/sync/*/imageSelector -/dev/replacePods/*/imageSelector -/dev/replacePods/*/replaceImage -/dev/logs/*/selectors/*/imageSelector -/dev/terminal/imageSelector -``` - -:::info -If you try to use a runtime variable in a different config section, DevSpace will print an error and fail. -::: - -The following runtime variables exist: - -- **`runtime.images.IMAGE_NAME`**: Holds the image name (defined at `images.*.image`) and tag that was built by DevSpace (e.g. `my-repo.com/image:latest`) -- **`runtime.images.IMAGE_NAME.tag`**: Holds the image tag that was built by DevSpace (e.g. `asdHTR` or `latest`) -- **`runtime.images.IMAGE_NAME.image`**: Holds the image name (defined at `images.*.image`) that was used for building (e.g. `my-repo.com/image`) -- **`runtime.hooks.HOOK_NAME.stdout`**: Holds the stdout output of an executed local or remote hook command -- **`runtime.hooks.HOOK_NAME.stderr`**: Holds the stderr output of an executed local or remote hook command - -## Accessing runtime variables of dependencies - -You can also access runtime variables of an executed dependency by using `runtime.dependencies.DEPENDENCY_NAME...`. - -For example: -```yaml -dependencies: -- name: dep1 - source: - path: dep1 -dev: - # Will open a terminal to the pod with the - # image from dep1 - terminal: - imageSelector: ${runtime.dependencies.dep1.images.image1} -``` diff --git a/docs/versioned_docs/version-5.18/configuration/variables/source-command.mdx b/docs/versioned_docs/version-5.18/configuration/variables/source-command.mdx deleted file mode 100644 index a6ce305f50..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/source-command.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Variables From Commands -sidebar_label: "source: command" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `command`, DevSpace will **not** ask the user a question and instead execute a command to determine the value of the variable. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - # Will execute the command in a Golang Shell (cross plattform compatible) - command: "echo 5.5" -``` - -If you need different commands depending on the operating system you can use `commands`: -```yaml {3,7-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: command - commands: - - command: bash - args: ["-c", "echo '5.5'"] - os: linux,darwin - command: echo - args: ["5.5"] -``` - -:::info -If not command for the current operating system can be found under `commands`, the `command` and `args` will be used as fallback. -::: - - - -## Configuration - -### `name` - - - - -### `command` & `args` - -The command and arguments to execute to retrieve the value of the variable. The captured stdout of the command will be used as variable value. Whitespaces and newlines will be trimmed from the command output. - -:::tip -You can use other variables in the command or args definition as long as they are either a predefined variable or defined before the variable in the `vars` array. For example: -```yaml -vars: -- name: SECRET_NAME - source: env -- name: SECRET_VALUE - command: ./retrieve-secret-value.sh - args: ["--secret-name=${SECRET_NAME}", "--namespace=${devspace.namespace}"] -``` -::: - -### `commands` - -Commands expects an array of objects that define commands for specific operating systems. If no command can be found for the current operating system in `commands`, then `command` will be used as fallback. - -```yaml -vars: -- name: MYSQL_VERSION - source: command - commands: - # Use command on linux - - command: bash - args: ["-c", "echo '5.5'"] - os: linux - # Use command on mac - - command: bash - args: ["-c", "echo '5.6'"] - os: darwin - # Use on all other operating systems - command: echo - args: ["5.5"] -``` - -### `default` - -If the command returns nothing, this is the value that will be used for this variable. - -### `alwaysResolve` - -If enabled, the variable will be loaded even though it is not used within the config. This might be useful for variables that should be resolved after a config expression is applied. E.g.: - -`devspace.yaml`: -``` -vars: -- name: my-var - value: my-value - alwaysResolve: true -hooks: -- name: my-hook - command: $(cat command.txt) - events: ["after:deploy"] -``` - -`command.txt`: -``` -echo Hello ${my-var}! -``` - diff --git a/docs/versioned_docs/version-5.18/configuration/variables/source-env.mdx b/docs/versioned_docs/version-5.18/configuration/variables/source-env.mdx deleted file mode 100644 index 5ade5179a7..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/source-env.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Environment Variables -sidebar_label: "source: env" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If the `source` is `env`, DevSpace will **not** ask the user a question and instead use environment variables to determine the value of the variable. -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - source: env - default: "5.5" -``` - -:::info -If `source` is `env` and the environment variable is **not** defined, DevSpace will use the [`default` value](#default) or terminate with a fatal error, if there is **no** [`default` value](#default) configured. -::: - - - -## Configuration - -### `name` - - - - -### `default` - - - -### `alwaysResolve` - -If enabled, the variable will be loaded even though it is not used within the config. This might be useful for variables that should be resolved after a config expression is applied. E.g.: - -`devspace.yaml`: -``` -vars: -- name: my-var - value: my-value - alwaysResolve: true -hooks: -- name: my-hook - command: $(cat command.txt) - events: ["after:deploy"] -``` - -`command.txt`: -``` -echo Hello ${my-var}! -``` diff --git a/docs/versioned_docs/version-5.18/configuration/variables/source-input.mdx b/docs/versioned_docs/version-5.18/configuration/variables/source-input.mdx deleted file mode 100644 index 7e729a9326..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/source-input.mdx +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Input-based Variables -sidebar_label: "source: all | input" ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FragmentVarsName from '../../fragments/vars-name.mdx'; -import FragmentVarsDefault from '../../fragments/vars-default.mdx'; -import FragmentVarsForceString from '../../fragments/vars-force-string.mdx'; - -If `source: all (default) | input`, DevSpace may ask the user a question to determine the value of a config variable. - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - default: "5.7" -``` - - - - -```yaml {3,5-10} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - options: - - "5.5" - - "5.6" - - "5.7" -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - password: true -``` - - - - -```yaml {3,5-7} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - question: Which mysql version do you want to use? - noCache: true -``` - - - - -:::tip Ignore Env Variables -If you want DevSpace to ignore environment variables, you can explicitly define `source: input` to make sure only explict user input will be used to set the value of the variable. -::: - - - - -## Configuration - -### `name` - - - - -### `default` - - - - -### `question` -The `question` option expects a string with a question that will be asked when the variable is not defined. DevSpace tries to resolve the variable according to the `source` of the variable and if it is not set via any of the accepted sources, DevSpace will prompt the user to define the value by entering a string. - -:::note Question -- Defining the `question` is optional but often helpful to provide a better usability for other users. -- If [valid `options` for the variable value](#options) are configured, DevSpace will show a picker/selector instead of a regular input field/prompt. -- If a [`default` value](#default) is configured for the variable, DevSpace will use this [`default` value](#default) as default answer for the question that can be easily selected by pressing enter. -::: - -#### Default Value For `question` -```yaml -question: Please enter a value for [VAR_NAME] # using the variable name -``` - - -### `options` -The `options` option expects an array of strings with each string stating a allowed value for the variable. - -#### Example: Define Variable Options -```yaml -vars: -- name: REGISTRY - question: Which registry do you want to push to? - source: input - options: - - hub.docker.com - - my.private-registry.tld - - gcr.io - default: my.private-registry.tld -``` -**Explanation:** -If the variable `REGISTRY` is used for the first time during `devspace deploy`, DevSpace will ask the user to select which value to use by showing this question: -```bash -Which registry do you want to push to? (Default: my.private-registry.tld) -Use the arrows UP/DOWN to select an option and ENTER to choose the selected option. - hub.docker.com -> my.private-registry.tld - gcr.io -``` - -### `noCache` -The `noCache` option expects a boolean that disables the caching behavior for variables. When set to `true`, this will prompt the user on every run and will not save the value. - -#### Default Value For `noCache` -```yaml -noCache: false -``` - -### `password` -The `password` option expects a boolean that defines if DevSpace should hide the user input when the user provides the value for this variable by entering a response to the question asked in the command line. - -#### Default Value For `password` -```yaml -password: false -``` - -#### Example: Hide User Response -```yaml -vars: -- name: REGISTRY_TOKEN - question: "Please enter your registry token:" - source: input - password: true -``` -**Explanation:** -If the variable `REGISTRY_TOKEN` is used for the first time during `devspace deploy`, DevSpace will ask the user to provide a value by showing this question: -```bash -? Please enter your registry token: ******* -``` -The response the user enters will be hidden as `*******` to protect others from seeing the input while the user is typing. - - -### `validationPattern` -The `validationPattern` option expects a string stating a regular expression that validates if the value entered by the user is allowed as a value for this variable. - -:::info -If the provided value does **not** match the regex in `validationPattern`, DevSpace will either show a generic error message or the message provided in [`validationMessage`](#validationmessage). -::: - -### `validationMessage` -The `validationMessage` option expects a string stating an error message that is shown to the user when providing a value for the variable that does not match the regex provided in [`validationPattern`](#validationpattern). - -### `alwaysResolve` - -If enabled, the variable will be loaded even though it is not used within the config. This might be useful for variables that should be resolved after a config expression is applied. E.g.: - -`devspace.yaml`: -``` -vars: -- name: my-var - value: my-value - alwaysResolve: true -hooks: -- name: my-hook - command: $(cat command.txt) - events: ["after:deploy"] -``` - -`command.txt`: -``` -echo Hello ${my-var}! -``` diff --git a/docs/versioned_docs/version-5.18/configuration/variables/source-none.mdx b/docs/versioned_docs/version-5.18/configuration/variables/source-none.mdx deleted file mode 100644 index 0aa1ec06ec..0000000000 --- a/docs/versioned_docs/version-5.18/configuration/variables/source-none.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Fixed Variables -sidebar_label: "value" ---- - -import FragmentVarsName from '../../fragments/vars-name.mdx'; - -You can specify fixed variables with the `value` field. This cannot be used together with `default` in a single variable definition. -```yaml {3,5-8} -images: - database: - image: "mysql:${MYSQL_VERSION}" -vars: -- name: MYSQL_VERSION - value: "5.5" -- name: NAMESPACE - value: ${devspace.namespace}-suffix -# If you set 'default: my-value' and 'source: none' will be -# internally converted to 'value: my-value'. -# Both variable definitions below are handled exactly the same -- name: SOURCE_NONE - default: my-value - source: none -- name: SOURCE_NONE - value: my-value -``` - -:::note OVERWRITING -If you want to overwrite a fixed variable, you can use the `--var FIXED=new-value` flag -::: - -## Configuration - -### `name` - - - -### `value` - -The `value` option expects a string, integer or boolean defining the value for the variable. You can also use other variables in a value, with one of the following conditions being true: - -- The used variable is defined before the variable that wants to use it -- The used variable is a predefined variable - -### `alwaysResolve` - -If enabled, the variable will be loaded even though it is not used within the config. This might be useful for variables that should be resolved after a config expression is applied. E.g.: - -`devspace.yaml`: -``` -vars: -- name: my-var - value: my-value - alwaysResolve: true -hooks: -- name: my-hook - command: $(cat command.txt) - events: ["after:deploy"] -``` - -`command.txt`: -``` -echo Hello ${my-var}! -``` diff --git a/docs/versioned_docs/version-5.18/fragments/build-option-buildArgs.mdx b/docs/versioned_docs/version-5.18/fragments/build-option-buildArgs.mdx deleted file mode 100644 index e393e26231..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/build-option-buildArgs.mdx +++ /dev/null @@ -1,16 +0,0 @@ -The `buildArgs` option expects a map of buildArgs representing values for the `--build-arg` flag used for `docker` or `kaniko` build commands. - -#### Example: Defining Build Args for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - buildArgs: - arg1: arg-value-2 - arg2: arg-value-2 -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--build-arg arg1=arg-value-1 --build-arg arg2=arg-value-2` flags. diff --git a/docs/versioned_docs/version-5.18/fragments/build-option-network.mdx b/docs/versioned_docs/version-5.18/fragments/build-option-network.mdx deleted file mode 100644 index 550dad783c..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/build-option-network.mdx +++ /dev/null @@ -1,15 +0,0 @@ - -The `network` option expects a string stating the network setting for building the image. - -#### Example: Defining a Network for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - network: host -``` -**Explanation:** -The image `backend` would be built using `docker` and `docker build` would be called using the `--network=host` flag. diff --git a/docs/versioned_docs/version-5.18/fragments/build-option-target.mdx b/docs/versioned_docs/version-5.18/fragments/build-option-target.mdx deleted file mode 100644 index 9755b00e7c..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/build-option-target.mdx +++ /dev/null @@ -1,14 +0,0 @@ -The `target` option expects a string stating the build target when using multi-stage builds. - -#### Example: Defining a Build Target for Docker -```yaml -images: - backend: - image: john/appbackend - build: - docker: - options: - target: production -``` -**Explanation:** -The image `backend` would be built using `docker` and the target `production` would be used for building the image as defined in the `Dockerfile`. diff --git a/docs/versioned_docs/version-5.18/fragments/choose-project.mdx b/docs/versioned_docs/version-5.18/fragments/choose-project.mdx deleted file mode 100644 index 6876c72e5d..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/choose-project.mdx +++ /dev/null @@ -1,87 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-nodejs -cd devspace-quickstart-nodejs -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-python -cd devspace-quickstart-python -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-ruby -cd devspace-quickstart-ruby -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-golang -cd devspace-quickstart-golang -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-java -cd devspace-quickstart-java -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-php -cd devspace-quickstart-php -``` - - - - -```bash -git clone https://github.com/loft-sh/devspace-quickstart-asp-dotnet -cd devspace-quickstart-asp-dotnet -``` - - - - -```bash -# Navigate to the root directory of your project -cd /path/to/your/project -``` - -:::info -If you are using DevSpace for the first time, it is highly recommended that you use one of the demo projects. -::: - - - diff --git a/docs/versioned_docs/version-5.18/fragments/config-commands.mdx b/docs/versioned_docs/version-5.18/fragments/config-commands.mdx deleted file mode 100644 index b8e5c3d092..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/config-commands.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```yaml -commands: # struct[] | Array of custom commands -- name: "debug-backend" # string | Name of the command to run via `devspace run debug-backend` - command: "devspace dev -i backend" # string | Command to be executed when running `devspace run [name]` - appendArgs: false # bool | If true, DevSpace will append all arguments to the command - args: ... # string[] | Args for the command to be executed -``` diff --git a/docs/versioned_docs/version-5.18/fragments/config-dev.mdx b/docs/versioned_docs/version-5.18/fragments/config-dev.mdx deleted file mode 100644 index 04b77d614e..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/config-dev.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```yaml -dev: # struct | Options for "devspace dev" - ports: [] # struct[] | Array of port-forwarding settings for selected pods - open: [] # struct[] | Array of auto-open settings - sync: [] # struct[] | Array of file sync settings for selected pods - logs: ... # struct | Options for configuring multi-container log streaming - autoReload: ... # struct | Options for auto-reloading (i.e. re-deploying deployments and re-building images) - interactive: ... # struct | Options for configuring the interactive mode -``` diff --git a/docs/versioned_docs/version-5.18/fragments/config-profiles.mdx b/docs/versioned_docs/version-5.18/fragments/config-profiles.mdx deleted file mode 100644 index 767fe2723d..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/config-profiles.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```yaml -profiles: # struct[] | Array of config profiles -- name: profile-name # string | Name of the profile - parents: - - profile: parent-profile # string | Name of the parent of this profile (profile inheritance) - source: # | Optional source where to find the profile - git: https://github.com/my-repo # string | HTTP(S) URL of the git repository to retrieve the profile from - subPath: repo/sub/path # string | Path within the git repo where devspace.yaml can be found - branch: master # string | Git branch to checkout - tag: v1.2.3 # string | Git tag to checkout - revision: ac66e49 # string | Git revision (commit has) to checkout - disableShallow: false # bool | Allows to disable shallow git clones using "--depth 1" - cloneArgs: [] # string[] | Array of args for the "git clone" command for retrieving git based dependencies - path: ../../my-projects/repo # string | Path to a project on your local computer or an URL to a devspace.yaml - merge: {} # struct | Merge the provided object into the config - patches: # struct[] | Array of config patches - - op: "replace" # enum | Patch operation (replace, add, remove) - path: "images.backend.cmd" # string | Jsonpath or xpath to config option that should be patched - value: "" # arbitrary | Value to use for patch operation - replace: # struct | Array of replacements for entire config sections - images: {} # struct | Replacement for entire `images` section - deployments: {} # struct | Replacement for entire `deployments` section - dev: {} # struct | Replacement for entire `dev` section - dependencies: {} # struct | Replacement for entire `dependencies` section - hooks: {} # struct | Replacement for entire `hooks` section -``` diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-dev.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-dev.mdx deleted file mode 100644 index 6d9fc46404..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-dev.mdx +++ /dev/null @@ -1,28 +0,0 @@ -The `dev` option allows you to reuse certain parts of a dependencies `dev` configuration. - -:::note -If `dev` configuration is reused this will be merged into the top-level `devspace.yaml` and executed after image building and deployment -::: - -#### Example: Override Config Vars for Dependency -```yaml -# This will use the dev.ports configuration of the dependency -# component-1 -dependencies: -- source: - path: component-1 - dev: - ports: true -``` - -### `dev.ports` - -If enabled will reuse the dependency's `dev.ports` configuration. - -### `dev.sync` - -If enabled will reuse the dependency's `dev.sync` configuration. **The base path of the sync configurations reused from a dependency is the folder where the dependency is saved in and not the current working directory.** - -### `dev.replacePods` - -If enabled will reuse the dependency's `dev.replacePods` configuration. diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-ignoreDependencies.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-ignoreDependencies.mdx deleted file mode 100644 index 43fbfdfd5f..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-ignoreDependencies.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `ignoreDependencies` option expects a boolean that defines if the dependencies of this dependencies should not be resolved and deployed. - -:::info -Using `ignoreDependencies` can be useful to prevent problematic **circular dependencies**. -::: - -#### Default Value For `ignoreDependencies` -```yaml -ignoreDependencies: false -``` - -#### Example: Ignore Dependencies of Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - ignoreDependencies: true -``` diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-name.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-name.mdx deleted file mode 100644 index 113b05ec86..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-name.mdx +++ /dev/null @@ -1,10 +0,0 @@ -The `name` option is optional and expects a string stating the name of this dependency. - -:::note -Adding a `name` for a dependency makes it possible to reference the dependency using flags, e.g. -```bash -devspace deploy --dependency=[name] -devspace purge --dependency=[name] -devspace render --dependency=[name] -``` -::: diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-namespace.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-namespace.mdx deleted file mode 100644 index 7b19c52545..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-namespace.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `namespace` option is optional and expects a string stating a namespace that should be used to deploy the dependency to. - -:::note -By default, DevSpace deploys project dependencies in the same namespace as the project itself. -::: - -:::info -You should only use the `namespace` option if you are an advanced user because using this option requires any user that deploys this project to be able to create this namespace during the deployment process or to have access to the namespace with the current kube-context, if the namespace already exists. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-overwrite-vars.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-overwrite-vars.mdx deleted file mode 100644 index 9c3272671e..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-overwrite-vars.mdx +++ /dev/null @@ -1,54 +0,0 @@ -The `overwriteVars` option is optional and expects a boolean. If this option is enabled it will overwrite all defined variables within the dependency config with the values of the variables defined in the base config. Variables that are not used or not defined within the base config aren't overwritten in the dependency config. - -For example: -```yaml -# devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-base-value -- name: DEFINED_AND_NOT_USED - value: my-other-base-value -dependencies: -- name: dep1 - source: - path: dep1 - overwriteVars: true - # If overwriteVars is true, all variables that are used within this - # config are passed to the dependency and will overwrite the values of variables with - # the same name there. In this case only the variable DEFINED_AND_USED - # will be passed to the dependency, as DEFINED_AND_NOT_USED is not used within the config. - # overwriteVars: true - # - # If you want to pass the variable DEFINED_AND_NOT_USED to the dependency as well, - # you can either use it somewhere within the config or explicitly pass it to the dependency with vars. - # vars: - # - name: DEFINED_AND_NOT_USED - # value: ${DEFINED_AND_NOT_USED} -deployments: -- name: deployment - helm: - componentChart: true - values: - containers: - - image: ${DEFINED_AND_USED} -``` - -and - -```yaml -# dep1/devspace.yaml -vars: -- name: DEFINED_AND_USED - value: my-dep-value -- name: DEFINED_AND_NOT_USED - value: my-other-dep-value -deployments: - # This will be my-other-dep-value -- name: ${DEFINED_AND_NOT_USED} - helm: - componentChart: true - values: - containers: - # This will be my-base-value - - image: ${DEFINED_AND_USED} -``` diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-profile.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-profile.mdx deleted file mode 100644 index c239f9232c..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-profile.mdx +++ /dev/null @@ -1,9 +0,0 @@ -The `profile` option expects a string with the name of a profile defined in the `devspace.yaml` of this dependency. When configuring this option, this profile will be used to deploy the dependency, i.e. the dependency will be deployed similar to running `devspace deploy -p [profile]` within the folder of the dependency. - -#### Example: Use Config Profile for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - profile: production -``` diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-skipBuild.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-skipBuild.mdx deleted file mode 100644 index 96fee3ea55..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-skipBuild.mdx +++ /dev/null @@ -1,18 +0,0 @@ -The `skipBuild` option expects a boolean that defines if the image building process should be skipped when deploying this dependency. This is often useful if you rather want to use the tags that are defined in the deployment files (e.g. manifests or helm charts) which may reference more stable, production-like versions of the images. - -:::info -Using `skipBuild` is useful when trying to speed up the dependency deployment process, especially when working with many dependencies that frequently change. -::: - -#### Default Value For `skipBuild` -```yaml -skipBuild: false -``` - -#### Example: Skip Build for Dependency -```yaml -dependencies: -- source: - git: https://github.com/my-api-server - skipBuild: true -``` diff --git a/docs/versioned_docs/version-5.18/fragments/dependency-vars.mdx b/docs/versioned_docs/version-5.18/fragments/dependency-vars.mdx deleted file mode 100644 index 9348f9e66e..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/dependency-vars.mdx +++ /dev/null @@ -1,19 +0,0 @@ -The `vars` option expects an array of objects with name and value of variables defined in the `devspace.yaml` of this dependency. When configuring this option, the variables will be overriden similar to passing variables via the `--var` flag to devspace. -It is also useful to deploy the same dependency multiple times with just small adjustments. - -#### Example: Override Config Vars for Dependency -```yaml -# This will deploy the api server two times with -# different variable configurations -dependencies: -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-1 -- source: - git: https://github.com/my-api-server - vars: - - name: NAME - value: api-server-2 -``` diff --git a/docs/versioned_docs/version-5.18/fragments/faq-image-context.mdx b/docs/versioned_docs/version-5.18/fragments/faq-image-context.mdx deleted file mode 100644 index ca104f7443..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/faq-image-context.mdx +++ /dev/null @@ -1,10 +0,0 @@ -
-What does "context" mean in terms of image building? - -
- -The context is archived and sent to the Docker daemon before starting to process the Dockerfile. All references of local files within the Dockerfile are relative to the root directory of the context. - -That means that a Dockerfile statement such as `COPY ./src /app` would copy the folder `src/` within the context path into the path `/app` within the container image. So, if the context would be `/my/project/database`, for example, the folder that would be copied into `/app` would have the absolute path `/my/project/database/src` on your local computer. - -
diff --git a/docs/versioned_docs/version-5.18/fragments/info-component-chart.mdx b/docs/versioned_docs/version-5.18/fragments/info-component-chart.mdx deleted file mode 100644 index 298ca4cdf0..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/info-component-chart.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::info Component Chart Docs -The component chart is a flexible Helm chart for deploying custom applications in a standardized manner. Learn more in the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/install-cli.mdx b/docs/versioned_docs/version-5.18/fragments/install-cli.mdx deleted file mode 100644 index 77f86a4251..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/install-cli.mdx +++ /dev/null @@ -1,88 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - -DevSpace is a client-only binary. It is super lightweight, does not require any server-side component, and it does not have any dependencies. - - - - -```bash -npm install -g devspace -``` - - - - -```bash -yarn global add devspace -``` - - - - -```bash -brew install devspace -``` - - - - -```bash -# AMD64 / Intel -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 / Silicon Mac -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```bash -# AMD64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; - -# ARM64 -curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-linux-arm64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace; -sudo install devspace /usr/local/bin; -``` - - - - -```powershell {4} -md -Force "$Env:APPDATA\devspace"; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'; -Invoke-WebRequest -UseBasicParsing ((Invoke-WebRequest -URI "https://github.com/loft-sh/devspace/releases/latest" -UseBasicParsing).Content -replace "(?ms).*`"([^`"]*devspace-windows-amd64.exe)`".*","https://github.com/`$1") -o $Env:APPDATA\devspace\devspace.exe; -$env:Path += ";" + $Env:APPDATA + "\devspace"; -[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User); -``` - -:::info Check Environment Variable $PATH -Line 4 of this install script adds the install directory `%APPDATA%\devspace` to the `$PATH` environment variable. This is only effective for the current powershell session, i.e. when opening a new terminal window, `devspace` may not be found. - -**Make sure to add the folder `%APPDATA%\devspace` to the `PATH` environment variable after installing DevSpace via Powershell. Afterwards, a reboot might be necessary.** - -To confirm that DevSpace is successfully installed, reboot and test via: -```bash -devspace --version -``` -::: - - - - -Alternatively, you can simply download the binary for your platform from the [GitHub Releases](https://github.com/loft-sh/devspace/releases) page and add this binary to your PATH. diff --git a/docs/versioned_docs/version-5.18/fragments/kube-context.mdx b/docs/versioned_docs/version-5.18/fragments/kube-context.mdx deleted file mode 100644 index f1eb89c0ce..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kube-context.mdx +++ /dev/null @@ -1,114 +0,0 @@ - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Step from '@site/src/components/Step/Step'; -import FragmentTipUseNamespace from './tip-use-namespace.mdx'; -import FragmentNoteCreateSpace from './note-create-space.mdx'; - - - - -:::note Local Clusters -Local clusters run on your local dev machine and include: minikube, kind, k3s, mikrok8s etc. -::: - -If you want to deploy to a local Kubernetes cluster, make sure your **current kube-context** points to this cluster and tell DevSpace which namespace to use: - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -:::note Remote Clusters -Remote clusters run in a cloud or private data center and include: GKE, EKS, AKS, bare metal etc. -::: - - - - -```bash -devspace use context # to select the right k8s cluster -devspace use namespace my-namespace # will be automatically created during deployment -``` - - - - - - -#### Kubernetes multi-tenancy - -One of the options for setting up a multi-tenant Kubernetes environment would be to use [Loft](https://loft.sh/). -It allows the developers to create isolated Kubernetes environments in a self-service fashion. - -[Loft](https://loft.sh/) offers a wide range of features to facilitate multi-tenancy in Kubernetes. One of such features is the ability to create [Virtual Clusters](https://loft.sh/features/virtual-kubernetes-clusters) - a lightweight, fully functional and certified Kubernetes distribution that runs fully within the host cluster. - -[Loft](https://loft.sh/) also adds a resource called "Space" into your Kubernetes cluster. A "Space" is a virtual representation of a Kubernetes namespace, and we will be creating one in the steps below. - - -#### How to use Loft - -1 - -#### Setup Loft and connect your cluster - -See the [Loft getting started guide](https://loft.sh/docs/getting-started/setup) for details. - -
-2 - -#### Install the Loft plugin for DevSpace - -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -
-3 - -#### Login to Loft via DevSpace - -```bash -devspace login https://your-loft-instance.tld -``` - -
-4 - -#### Create isolated namespaces (= Spaces) - -```bash -devspace create space my-app -``` - - - -
-5 - -#### Add cluster users and allow them to create Spaces - -Learn more about how to do this in the [Loft documentation](https://loft.sh/docs/getting-started/cluster-accounts). - -
-
- -
-
diff --git a/docs/versioned_docs/version-5.18/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-5.18/fragments/kubectl-kustomize.mdx deleted file mode 100644 index a70dde2e5e..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kubectl-kustomize.mdx +++ /dev/null @@ -1,21 +0,0 @@ -The `kustomize` option expects a boolean stating if DevSpace should deploy using `kustomize` (or alternatively: `kubectl apply -k`). - -:::warning -If you set `kustomize = true`, all of your `manifests` must be paths to Kustomizations. If you want to deploy some plain manifests and some Kustomizations, create multiple deployments for each of them. -::: - -#### Default Value for `kustomize` -```yaml -kustomize: false -``` - -#### Example: Kustomize -```yaml {4} -deployments: -- name: backend - kubectl: - kustomize: true - manifests: - - kustomization1/ - - glob/path/to/more/kustomizations/ -``` diff --git a/docs/versioned_docs/version-5.18/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-5.18/fragments/kubectl-options-applyArgs.mdx deleted file mode 100644 index b1ba2ed738..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kubectl-options-applyArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `applyArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl apply`. - -:::info Apply for Kustomize Deployments -Even if you set `kustomize: true`, DevSpace only renders the manifest templates using kustomize but the actual deployment will be executed using `kubectl apply`. -::: - -#### Default Value for `applyArgs` -```yaml -applyArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - applyArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl apply --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.18/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-5.18/fragments/kubectl-options-cmdPath.mdx deleted file mode 100644 index 337bdb4e2a..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kubectl-options-cmdPath.mdx +++ /dev/null @@ -1,20 +0,0 @@ -The `cmdPath` option expects an array of strings stating additional flags and flag values that should be used when calling `kubectl apply`. - -:::warning -Setting `cmdPath` makes it much harder to share your `devspace.yaml` with other team mates. It is recommended to add `kubectl` to your `$PATH` environment variable instead. -::: - -#### Example: Setting Path To Kubectl Binary -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - cmdPath: /path/to/kubectl -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -/path/to/kubectl apply -f backend/ -``` diff --git a/docs/versioned_docs/version-5.18/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-5.18/fragments/kubectl-options-deleteArgs.mdx deleted file mode 100644 index 70a473533c..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kubectl-options-deleteArgs.mdx +++ /dev/null @@ -1,29 +0,0 @@ -The `deleteArgs` option expects an array of strings stating additional arguments (and flags) that should be used when calling `kubectl delete`. - -:::info Purging Deployments -For plain manifests or Kustomizations, DevSpace uses `kubectl delete` to remote deployments when you run the command `devspace purge`. -::: - -#### Default Value for `deleteArgs` -```yaml -deleteArgs: [] -``` - -#### Example: Custom Kubectl Args & Flags -```yaml -deployments: -- name: backend - kubectl: - manifests: - - backend/ - deleteArgs: - - "--timeout" - - "10s" - - "--grace-period" - - "30" -``` -**Explanation:** -Deploying the above example would roughly be equivalent to this command: -```bash -kubectl delete --timeout=10s --grace-period=30 -f backend/ -``` diff --git a/docs/versioned_docs/version-5.18/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-5.18/fragments/kubectl-replaceImageTags.mdx deleted file mode 100644 index aae897a71a..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/kubectl-replaceImageTags.mdx +++ /dev/null @@ -1,22 +0,0 @@ -The `replaceImageTags` option expects a boolean stating if DevSpace should replace/update all image tags before deploying the project. - -By default, DevSpace searches all your manifests for images that are defined in the `images` section of the `devspace.yaml`. If DevSpace finds an image, it replaces or appends the image tag with the tag it created during the image building process. Image tag replacement makes sure that your application will always be started with the most up-to-date image that DevSpace has built for you. - -:::info In-Memory Tag Replacement -Tag replacement takes place **in-memory** and is **not** writing anything to the filesystem, i.e. it will **never** change any of your configuration files. -::: - -#### Default Value for `replaceImageTags` -```yaml -replaceImageTags: true -``` - -#### Example: Disable Tag Replacement -```yaml {4} -deployments: -- name: backend - kubectl: - replaceImageTags: false - manifests: - - backend/ -``` diff --git a/docs/versioned_docs/version-5.18/fragments/note-create-space.mdx b/docs/versioned_docs/version-5.18/fragments/note-create-space.mdx deleted file mode 100644 index d0e360b7bd..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/note-create-space.mdx +++ /dev/null @@ -1,6 +0,0 @@ -:::note Kube-Context -DevSpace automatically sets up a kube-context for this Space, so you can also access your namespace using `kubectl`, `helm` or any other Kubernetes tool. Try it: -```bash -kubectl get pods -``` -::: diff --git a/docs/versioned_docs/version-5.18/fragments/note-general-purpose-command.mdx b/docs/versioned_docs/version-5.18/fragments/note-general-purpose-command.mdx deleted file mode 100644 index 6ef545d400..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/note-general-purpose-command.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note -This command is a general purpose command which also works for any pod/container in Kubernetes even if you are not within a DevSpace project. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/profiles-apply-multiple.mdx b/docs/versioned_docs/version-5.18/fragments/profiles-apply-multiple.mdx deleted file mode 100644 index a0b6b3dace..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/profiles-apply-multiple.mdx +++ /dev/null @@ -1,11 +0,0 @@ -:::tip Apply Multiple Profiles with Flags - -It is possible to apply multiple profiles in a single command with the `--profile` flag. This flag can take one or multiple profiles that will be applied in the order that they are specified. - -Example: -``` -# Apply profile1, profile2 and profile3 in this order -devspace print --profile profile1 --profile profile2 --profile profile3 -``` - -::: \ No newline at end of file diff --git a/docs/versioned_docs/version-5.18/fragments/selector-label-selector.mdx b/docs/versioned_docs/version-5.18/fragments/selector-label-selector.mdx deleted file mode 100644 index fad0db8fad..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/selector-label-selector.mdx +++ /dev/null @@ -1 +0,0 @@ -The `labelSelector` option expects a key-value map of strings with Kubernetes labels. This can be used to select the correct target pod with labels instead of the image name like `imageSelector` or `imageName`. If the pod you want to select has multiple containers, make sure to use `containerName` as well. \ No newline at end of file diff --git a/docs/versioned_docs/version-5.18/fragments/start-app.mdx b/docs/versioned_docs/version-5.18/fragments/start-app.mdx deleted file mode 100644 index 8799c2f6c1..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/start-app.mdx +++ /dev/null @@ -1,83 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - - -```bash -npm start -# or: npm run dev -# or: yarn start -``` - - - - -```bash -python main.py -``` - - - - -```bash -bundle exec rails server -p 3000 -b 0.0.0.0 -``` - - - - -```bash -go run main.go -``` - - - - -```bash -./build.sh run -``` - - - - -```bash -# Your application may already be running -# Try to open the browser on localhost to access it - -# You can also run other commands now: -php ... -composer ... -ps aux -``` - - - - -```bash -dotnet run -``` - - - - -```bash -# Whatever command is needed to start your application -``` - - - diff --git a/docs/versioned_docs/version-5.18/fragments/tip-print-config.mdx b/docs/versioned_docs/version-5.18/fragments/tip-print-config.mdx deleted file mode 100644 index 0be65df779..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/tip-print-config.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The following command is useful to verify that the profile modifies the config as intended: -```bash -devspace print -p profile-1 -p profile-2 -``` -The above command would print the config after applying all profile `patches` and `replace` statements from `profile-1` first and then `profile-2`. diff --git a/docs/versioned_docs/version-5.18/fragments/tip-use-namespace.mdx b/docs/versioned_docs/version-5.18/fragments/tip-use-namespace.mdx deleted file mode 100644 index 91299c6d90..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/tip-use-namespace.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::tip Kube-Context Namespace -Running the command above will change the default namespace of your kube-context, i.e. instead of using the `default` namespace, `kubectl` and other tools will now use a different namespace when working with this kube-context. That also means, you will not always need to use the `--namespace / -n` flag. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/vars-force-string.mdx b/docs/versioned_docs/version-5.18/fragments/vars-force-string.mdx deleted file mode 100644 index 524029a624..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/vars-force-string.mdx +++ /dev/null @@ -1,3 +0,0 @@ -:::note Variable Type -By default, the type (string, int, bool) of variable will be determined by the type of its `default` value (if defined) or automatically detected if no default value is defined. To explicitly use the value of a variable as a string, use `$!{VAR_NAME}` instead of `${VAR_NAME}`. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/vars-name.mdx b/docs/versioned_docs/version-5.18/fragments/vars-name.mdx deleted file mode 100644 index 49014a7d7e..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/vars-name.mdx +++ /dev/null @@ -1,5 +0,0 @@ -The `name` option expects a string stating the name of the config variable that will be used to reference it within the remainder of the configuration. - -:::info Must be unique -The `name` of a config variable must be unique and is mandatory when defining a config variable. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/warning-build-tool-priority.mdx b/docs/versioned_docs/version-5.18/fragments/warning-build-tool-priority.mdx deleted file mode 100644 index f709c200df..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/warning-build-tool-priority.mdx +++ /dev/null @@ -1,7 +0,0 @@ -:::warning Build Tool Priority -If you specify multiple build tools, DevSpace will try to use them in the following order: -1. `disabled` -2. `custom` -3. `docker` (uses kaniko as fallback if Docker host not reachable) -4. `kaniko` -::: diff --git a/docs/versioned_docs/version-5.18/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-5.18/fragments/warning-multiple-dev.mdx deleted file mode 100644 index 652cdbedd9..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/warning-multiple-dev.mdx +++ /dev/null @@ -1,8 +0,0 @@ -:::warning -It is highly discouraged to run `devspace dev` multiple times in parallel because multiple instances of port forwarding and file synchronization will disturb each other. Instead: - -- Run `devspace enter` to open additional terminal sessions without port forwarding and file sync -- Run `devspace logs` to start log streaming without port forwarding and file sync -- Run `devspace sync` to sync files on-demand without starting port forwarding etc. -- Run `devspace ui` to open the localhost development UI in the browser -::: diff --git a/docs/versioned_docs/version-5.18/fragments/workflow-build-images.mdx b/docs/versioned_docs/version-5.18/fragments/workflow-build-images.mdx deleted file mode 100644 index fc3261d5d8..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/workflow-build-images.mdx +++ /dev/null @@ -1 +0,0 @@ -DevSpace triggers the image building process for the images specified in the `images` section of the `devspace.yaml`. diff --git a/docs/versioned_docs/version-5.18/fragments/workflow-deploy-dependencies.mdx b/docs/versioned_docs/version-5.18/fragments/workflow-deploy-dependencies.mdx deleted file mode 100644 index dc4766551b..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/workflow-deploy-dependencies.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace loads the `dependencies` section from the `devspace.yaml` and creates a dependency tree. The current project will represent the root of this tree. Based on this dependency tree, DevSpace will start from the leaves and run these steps for each dependency: -- Build images of the dependency as configured in the `images` section of the dependency's `devspace.yaml` (unless `skipBuild: true`) -- Deploy the dependency as configured in the `deployments` section of the dependency's `devspace.yaml` - -:::note What are Dendencies? -Dependencies allow you to deploy microservices, that the project you are currently deploying relies on. Dependencies can be located in a subpath of your project or they can be automatically loaded from a different git repository. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/workflow-deploy-project.mdx b/docs/versioned_docs/version-5.18/fragments/workflow-deploy-project.mdx deleted file mode 100644 index cc11700257..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/workflow-deploy-project.mdx +++ /dev/null @@ -1,7 +0,0 @@ -DevSpace iterates over every item in the `deployments` array defined in the `devspace.yaml` and deploys each of the deployments using the respective deployment tool: -- `kubectl` deployments will be deployed with `kubectl` (optionally using `kustomize` if `kustomize: true`) -- `helm` deployments will be deployed with the `helm` client that comes in-built with DevSpace - -:::info kubectl Required -Deployments with `kubectl` require `kubectl` to be installed. -::: diff --git a/docs/versioned_docs/version-5.18/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-5.18/fragments/workflow-open-links.mdx deleted file mode 100644 index cb54a95ec2..0000000000 --- a/docs/versioned_docs/version-5.18/fragments/workflow-open-links.mdx +++ /dev/null @@ -1,4 +0,0 @@ - -1. DevSpace starts to periodically send `HTTP GET` requests to the URLs provideded via `dev.open[*].url`. -2. As soon as the first HTTP response has a status code which is neither 502 (Bad Gateway) nor 503 (Service Unavailable), DevSpace assumes that the application is now started, stops sending any further requests and opens the provided URL in the browser. -3. If the URL is still returning status code 502 or 503 after 4min, DevSpace will stop trying to open it. To not disturb the log streaming or the interactive terminal session, DevSpace will not show an error when hitting the 4min timeout. diff --git a/docs/versioned_docs/version-5.18/getting-started/cleanup.mdx b/docs/versioned_docs/version-5.18/getting-started/cleanup.mdx deleted file mode 100644 index 8b7f52208e..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/cleanup.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Cleanup -sidebar_label: 5. Cleanup ---- - -To tell DevSpace to remove the deployments from your cluster again, run: -```bash -devspace purge -``` diff --git a/docs/versioned_docs/version-5.18/getting-started/deployment.mdx b/docs/versioned_docs/version-5.18/getting-started/deployment.mdx deleted file mode 100644 index 4995196d3c..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/deployment.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Deployment with DevSpace -sidebar_label: 4. Deployment ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; - - -Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. - -
- -
DevSpace CLI - Deployment
-
- - -## Kube-Context & Namespace -For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. - - - - -## Deploy Project -Run the local deployment pipeline using this command: -```bash -devspace deploy -p production -``` - -
- Deployment Workflow -
DevSpace CLI - Deployment Workflow
-
- -Running `devspace deploy -p production` will do the following: - -1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) -2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) -3. **Push** the resulting Docker images to the specified registries -4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) -5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) - -:::note Image Building Only -If you only want to build, tag and push all images but not deploy anything, run: -```bash -devspace build -``` -::: - - -
- -## Understand Profiles -As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. - -Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). - -By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: -```yaml -profiles: -- name: production - patches: - - op: remove - path: images.app.build.disabled -``` - -You can print the config after a profile has been applied to see what the profile actually changes: -```bash -devspace print -p production -``` - -The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: -```bash -devspace dev -p start-debugger -``` diff --git a/docs/versioned_docs/version-5.18/getting-started/development.mdx b/docs/versioned_docs/version-5.18/getting-started/development.mdx deleted file mode 100644 index a44cbdc581..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/development.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Development with DevSpace -sidebar_label: 3. Development ---- - -import KubeContextFragment from '../fragments/kube-context.mdx'; -import StartAppFragment from '../fragments/start-app.mdx'; -import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; - -DevSpace allows you to develop applications directly inside a Kubernetes cluster. - -The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. - -
- -
DevSpace - Development Mode
-
- - -## Kube-Context & Namespace -To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. - - - - -## Start Development Mode -Run the following command to start the development mode: -```bash -devspace dev -``` - - -Running `devspace dev` will do the following: - -1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) -2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) -3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) -4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) -5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container - -Once the terminal session starts, run the command to start your application: - - - - - -
- -## Workflows - -### 1. File Sync -While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. - -**Try it and just edit a file!** - - -### 2. DevSpace UI -When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` - -By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) - -You can also start the UI without running `devspace dev` using this command: -```bash -devspace ui -``` - -[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) - -
- -
DevSpace - Development UI
-
- -:::info Runs on Localhost -The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. -::: - - -## Notes - - diff --git a/docs/versioned_docs/version-5.18/getting-started/initialize-project.mdx b/docs/versioned_docs/version-5.18/getting-started/initialize-project.mdx deleted file mode 100644 index 8d1cedbb1b..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/initialize-project.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Initialize a Project -sidebar_label: 2. Initialize Project ---- - -import ChooseProjectFragment from '../fragments/choose-project.mdx'; - -## Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - - -
- -## Initialize Your Project -Run this command in your project directory to create a `devspace.yaml` config file for your project: -```bash -devspace init -``` - -```bash - - ____ ____ - | _ \ _____ __/ ___| _ __ __ _ ___ ___ - | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \ - | |_| | __/\ V / ___) | |_) | (_| | (_| __/ - |____/ \___| \_/ |____/| .__/ \__,_|\___\___| - |_| - - -? How do you want to deploy this project? [Use arrows to move, type to filter] -> helm: Use Component Helm Chart [QUICK START] (https://devspace.sh/component-chart/docs) - helm: Use my own Helm chart (e.g. local via ./chart/ or any remote chart) - kubectl: Use existing Kubernetes manifests (e.g. ./kube/deployment.yaml) - kustomize: Use an existing Kustomization (e.g. ./kube/kustomization/) -``` - -DevSpace will ask you a couple of questions about this project and then generate a `devspace.yaml` for you to start with. If you are using the quickstart projects, choose `Component Helm Chart` for the first question. - -After running `devspace init`, you will see a `devspace.yaml` file in your project which should look like this: -```yaml -version: v1beta10 - -# `images` specifies all images that may need to be built for this project -images: - app: # This image is called `app` and this name `app` is referenced multiple times in the config below - image: registry.tld/username/image - dockerfile: ./Dockerfile - build: - disabled: true - -# `deployments` tells DevSpace how to deploy this project -deployments: -- name: quickstart-kubectl - # This deployment uses `kubectl` but you can also define `helm` deployments - kubectl: - manifests: - - kube/deployment.yaml -# OR: -- name: quickstart-helm # Name of this deployment - helm: # Deploy using Helm - componentChart: true # Use the Component Helm Chart - values: # Override Values for chart (can also be set using valuesFiles option) - containers: # Defines an array of containers that run in the same pods started by this component - - image: image(app):tag(app) # Image of this container - service: # Expose this component with a Kubernetes service - ports: # Array of container ports to expose through the service - - port: 3000 # Exposes container port 3000 on service port 3000 - -# Settings for development mode (will be explained later) -dev: ... - -# Settings for development mode (will be explained later) -profiles: ... -``` diff --git a/docs/versioned_docs/version-5.18/getting-started/installation.mdx b/docs/versioned_docs/version-5.18/getting-started/installation.mdx deleted file mode 100644 index 6a04d2ece3..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/installation.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Install DevSpace -sidebar_label: 1. Download CLI ---- - -import InstallFragment from '../fragments/install-cli.mdx'; - - diff --git a/docs/versioned_docs/version-5.18/getting-started/next-steps.mdx b/docs/versioned_docs/version-5.18/getting-started/next-steps.mdx deleted file mode 100644 index b47c788da0..0000000000 --- a/docs/versioned_docs/version-5.18/getting-started/next-steps.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Next Steps -sidebar_label: 6. Next Steps ---- - -## Loft Plugin For Teams -If you plan to use DevSpace with your team, make sure to check out [www.loft.sh](https://loft.sh) and the Loft plugin for DevSpace, which you can install using this command: -```bash -devspace add plugin https://github.com/loft-sh/loft-devspace-plugin -``` - -Loft allows you to efficiently share Kubernetes clusters with a large number of engineers rather than letting everyone set up their own cluster and having to struggle to manage and administrate it on their own. - -Installing the Loft plugin will add commands like these to DevSpace: -```bash -devspace login # to login to Loft via DevSpace -devspace create space my-namespace # for creating namespace on-demand via Loft -devspace create vcluster my-vcluster # for creating virtual Kubernetes clusters via Loft -``` - -## Guides -- [Onboarding Guide](../guides/basics.mdx) to share with the rest of your team -- [Network & Domains Guide](../guides/networking-domains.mdx) -- [CI/CD Integration Guide](../guides/ci-cd-integration.mdx) - -## Best Practices -- [Image Building](../guides/image-building.mdx) -- [Dev vs Staging vs Production](../guides/dev-staging-production.mdx) -- [Remote Debugging](../guides/remote-debugging.mdx) diff --git a/docs/versioned_docs/version-5.18/guides/basics.mdx b/docs/versioned_docs/version-5.18/guides/basics.mdx deleted file mode 100644 index 49055f2690..0000000000 --- a/docs/versioned_docs/version-5.18/guides/basics.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Onboarding Guide -sidebar_label: Onboarding ---- - -## View Help & Flags -To see help information and a list of all flags for any command, simply use the `-h` flag: -```bash -devspace -h # Shows all major commands and flags -devspace dev -h # Shows sub-commands and specific flags for this command -``` - -
- ---- - - -## Project-Specific Commands - -:::note devspace.yaml required -The project-specific commands require that your project is already [initialized](../getting-started/initialize-project.mdx), i.e. there is a `devspace.yaml` config file. -::: - - -### Start Development -This command deploys the project and then starts the development mode: -```bash -devspace dev -``` - - -### Deploy Project -This command deploys the project to Kubernetes: -```bash -devspace deploy # -p / --profile production => see: devspace list profiles -``` - -Run this command to just build, tag and push all images to a registry without deploying the project: -```bash -devspace build -``` - - -### Port Forwarding -To get a list of all ports that are being forwarded as defined in `devspace.yaml`, run: -```bash -devspace list ports -``` - - -### Commands -This command lists all available command: -```bash -devspace list commands -``` - -Use this command to run one of the custom commands: -```bash -devspace run command [command-name] -- --some-flag --another-flag=value -``` - - -### Profiles -This command lists all available profiles: -```bash -devspace list profiles -``` - -Use this command to switch to a different profile: -```bash -devspace use profile [optional:profile-name] -``` - -Use the `-p` flag to just run a single command with a different profile without switching it permanently: -```bash -devspace deploy -p [profile-name] -``` - -Use this command to print the config after a profile has been applied: -```bash -devspace print -p [profile-name] -``` - - -### Variables -This command lists all variables as well as their values: -```bash -devspace list vars -``` - -To change the value of a variable, run: -```bash -devspace set var VAR_NAME=value # VAR_NAME_2=value2 VAR_NAME_3=value3 -``` - -Use this command to reset all variables, i.e. delete variable values from the variable cache: -```bash -devspace reset vars -``` - -Use this command to print the config after all variables have been replaced: -```bash -devspace print -``` - - -### Dependencies -Use this command to update git-based dependencies: -```bash -devspace update dependencies -``` -This command performs a `git fetch && git pull` for all git-based dependencies. - -Use this command to clear the dependencies cache: -```bash -devspace reset dependencies -``` - - -### Open Project -This command opens the current project in the browser: -```bash -devspace open -``` - -:::note Must be deployed -This command requires that the project has already been deployed. -::: - -
- ---- - -## General Purpose Commands - -### Open UI -This command opens the localhost development UI: -```bash -devspace ui -``` -:::note Development Mode -The localhost development UI starts automatically in the background when running: `devspace dev` -::: - - -### Stream Logs -This command streams logs of a container: -```bash -devspace logs -``` - - -### Terminal & Commands -This command opens an interactive terminal session for a container: -```bash -devspace enter -``` - -To run just a single command inside a container, use: -```bash -devspace enter -- my-command --my-flag=my-value ... -``` - - -### File Sync -This command starts an on-demand file synchronization between localhost and a container: -```bash -devspace sync -``` - -:::note Development Mode -If file sync is configured in your project, it automatically starts when running: `devspace dev` -::: - - - -
- ---- - - -## Clusters & Namespaces -This command sets a different namespace as default namespace for the current kube-context/cluster: -```bash -devspace use namespace [optional:namespace] -``` - -:::info Not for Spaces -The command `devspace use namespace` does **not** work for Loft spaces. Use `devspace use space` instead. -::: - -This command creates a new space using Loft: -```bash -devspace create space [space-name] -``` - -This command switches to a different spaces: -```bash -devspace use space [optional:space-name] -``` - -This command switches to a different kube-context/cluster: -```bash -devspace use context [optional:context-name] -``` - - - -
- -## Advanced - -### Clean up Images -When using Docker for image building, disk space on your local computer can get sparse after a lot of Docker builds. DevSpace provides a convenient command to clean up all images that were built with your local Docker daemon using DevSpace. This command does not remove any pushed images remotely and just clears local images and space. - -In order to clean up all created images locally, simply run the following command in your project folder: -```bash -devspace cleanup images -``` - -### Clean up Docker -In addition, it also makes sense to prune your Docker environment to free additional space with the following command: - -```bash -docker system prune -``` - -This command will remove: -- all stopped containers -- all networks not used by at least one container -- all dangling images -- all build cache - -These commands should free up a lot of space for new image builds to come. diff --git a/docs/versioned_docs/version-5.18/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-5.18/guides/ci-cd-integration.mdx deleted file mode 100644 index 099c3b5799..0000000000 --- a/docs/versioned_docs/version-5.18/guides/ci-cd-integration.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: CI/CD Integration -sidebar_label: CI/CD Integration ---- - -DevSpace is designed to work in non-interactive environments the same way it does in interactive environments. To use DevSpace inside a CI/CD pipeline, simply install it as part of your pipeline or start the pipeline with a VM or container image that already contains DevSpace and run any of the DevSpace commands. - -## Docker Image -DevSpace provides an official Docker image that [can be found on Docker Hub](https://hub.docker.com/r/devspacesh/devspace). The Dockerfile for this image is [available on GitHub](https://github.com/loft-sh/devspace/blob/master/Dockerfile). - -Use this image as shown here: -```bash -docker run devspacesh/devspace devspace [command] [args] -``` - -#### Example: Get Version -```bash -docker run devspacesh/devspace devspace --version -``` - -#### Example: Deployment -```bash -docker run -v ${PWD}:/project -w /project devspacesh/devspace devspace deploy -``` -1. Mounts current working directory into `/project` within the container -2. Sets `/project` as working dir -3. Runs `devspace deploy` inside working dir - -#### Example: Start Interactive Terminal Session -```bash -docker run -it -v ${PWD}:/project -w /project devspacesh/devspace -``` - -
- - -## Deployment Tips - -### Avoid Pickers -If you want to run commands such as `devspace enter`, make sure you specify a label selector using `-l`, a container using `-c` etc. to make sure DevSpace can find the right pod/container without having to ask you to select one (which would lead to your pipeline getting stuck). - -### `--wait` Flag -DevSpace is configured to deploy and terminate when you run `devspace deploy`. In CI/CD pipelines, it is common to wait until the deployment is actually up and running before continuing the pipeline. You can achieve this by using `--wait`: -```bash -devspace deploy --wait --timeout=120 -``` -The above command will wait until the desired number of pods is created for all ReplicaSets and until none of the pods are failing anymore. If this is not achieved within the number of seconds specified in `--timeout`, DevSpace will exit with a fatal error. - -### Define Profiles -It is often useful to [define profiles in `devspace.yaml`](../configuration/profiles/basics.mdx) for staging, review or production deployments using CI/CD. You can deploy a project using such a profile using the `-p / --profile` flag: -```bash -devspace deploy -p production -``` - -### Separate Build & Deploy -DevSpace allows you to split up the build and deployment process into two separate commands: -```bash -devspace build # Build, tag and push images -devspace deploy --skip-build # Deploy project without rebuilding images -``` - -### Run Tests -To run unit or integration tests in your CI/CD pipeline, you have multiple options: -- [Split up build and deployment command](#separate-build--deploy) and run tests before after or in between the commands -- [Define hooks](../configuration/hooks/basics.mdx) that execute commands before/after certain image builds or deployments - -
diff --git a/docs/versioned_docs/version-5.18/guides/community-projects.mdx b/docs/versioned_docs/version-5.18/guides/community-projects.mdx deleted file mode 100644 index 3f1d93fc49..0000000000 --- a/docs/versioned_docs/version-5.18/guides/community-projects.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Community Projects -sidebar_label: Community Projects ---- - -:::note Submit Your Project -To submit a project: - -1. Make sure the project has a `LICENSE` file containing an **MIT** or **Apache 2.0** license. -2. Make sure to add a `README.md` file to your project describing what the project does and how to use it. -3. Click on the "**Edit this page**" button or follow **[this link](https://github.com/loft-sh/devspace/edit/master/docs/pages/guides/community-projects.mdx)**. -4. Add your project to the list **in alphabetical order**. -5. **Submit a pull request** containing your changes. - -❤️ Thank you! -::: - -The following projects are contributed and maintained by community members. - -|Project|Description|Maintainer| -|-|-|-| -|[nginx-auth-jwt](https://github.com/FactFiber/devspace-nginx-auth-jwt)|Auth requests through NGINX with JWT tokens|[shaunc](https://github.com/shaunc)| -|[nginx-s3](https://github.com/FactFiber/devspace-nginx-s3)|Serves static files from private S3 bucket using NGINX|[shaunc](https://github.com/shaunc)| -|[trilium](https://github.com/Addono/trilium-devspace)|Host a [trilium](https://github.com/zadam/trilium) server|[Addono](https://github.com/Addono)| diff --git a/docs/versioned_docs/version-5.18/guides/dev-staging-production.mdx b/docs/versioned_docs/version-5.18/guides/dev-staging-production.mdx deleted file mode 100644 index 3eaeaac13f..0000000000 --- a/docs/versioned_docs/version-5.18/guides/dev-staging-production.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Dev vs Staging vs Production -sidebar_label: Dev vs Staging vs Prod ---- - -To configure the differences between development, staging and production environments, there are several techniques which may be used separately or combined in certain use cases: -- For image building: - 1. Using [different Dockerfiles](../configuration/images/dockerfile-context.mdx) for each environment - 2. Using the same Dockerfile and: - - [overriding the `ENTRYPOINT` or the `CMD` of the Dockerfile](../configuration/images/entrypoint-cmd.mdx) for each environment - - using multi-stage builds and [setting the `target`](../configuration/images/docker.mdx#target) during the build process - - using [different `buildArgs`](../configuration/images/docker.mdx#buildargs) for different environments -- For deployments: - 1. Using a different `cmd` and/or `args` for your containers depending on the environment - 2. Using a different `image` name or `image` tag for your containers depending on the environment - 3. Setting different `env` variables for your containers depending on the environment - -No matter which options are working for your use case, the following DevSpace features will allow you to set up the desired differences: -- [Config Profiles & Patches](../configuration/profiles/basics.mdx) -- [Config Variables](../configuration/variables/basics.mdx) -- [Hooks](../configuration/hooks/basics.mdx) diff --git a/docs/versioned_docs/version-5.18/guides/file-synchronization.mdx b/docs/versioned_docs/version-5.18/guides/file-synchronization.mdx deleted file mode 100644 index 959848e35f..0000000000 --- a/docs/versioned_docs/version-5.18/guides/file-synchronization.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: File Synchronization -sidebar_label: File Synchronization ---- - -There are two types of file synchronzation processes: -- on-demand file sync using `devspace sync` and -- file synchronization during development mode using `devspace dev`. - - -## Start On-Demand File Sync -To establish an on-demand file synchronization between your local computer and the containers running inside Kubernetes, use the following command: -```bash -devspace sync # common flags: --local-path=./ --container-path=/app --no-watch --config=./devspace.yaml -``` -[Learn more about the `devspace sync` command.](https://devspace.cloud/blog/2019/10/18/release-devspace-v4.1.0-kubectl-cp-file-synchronization) - - -## Configure File Sync -If you want to start file synchronization every time you run `devspace dev`, you can configure it within `devspace.yaml`. - -[Learn more about configuring file synchronization using `devspace.yaml`.](../configuration/development/file-synchronization.mdx) - -
- - -## Troubleshooting - -### Check `sync.log` -DevSpace logs all sync activity in `.devspace/logs/sync.log`. Check this file to get more detailed error information. - -### Verbose Sync -DevSpace provides the flag `--verbose-sync` to print additional information while running `devspace dev`: -```bash -devspace dev --verbose-sync -``` - -For an even cleaner output (sync-only logs, without container logs), deploy your application using `devspace dev` once, then abort the dev mode and start a standalone sync process using the `--verbose` flag: -```bash -devspace sync --config=devspace.yaml --verbose -``` - -### Ignore `.git/` -The sync can fail when files are constantly being changed while they are being synchronized. DevSpace will retry failing sync attempts but for folder such as `.git/` which contain continuously changing information and files which may be locked by the IDE, we recommmend to [ignore them via the `excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) in `devspace.yaml`. - -### File Permissions -Without file write permission, the sync will not be able to work. If you start your containers (in production) using a different user than `root` and this user does not have sufficient permissions to read and write certain files, you can: -- exclude these files using the [`excludePaths` option](../configuration/development/file-synchronization.mdx#excludepaths) -- exclude these files using the [`uploadExcludePaths` option](../configuration/development/file-synchronization.mdx#uploadexcludepaths) -- run the containers using a different user during development\* - -\* You can achieve this by: -- Adding a `USER` statement in your Dockerfile: This is especially recommended when you are using multi-stage builds because you can add the `USER` statement for your development/build stage and add another `USER` statement to your production stage. Then, control the build target using the [`options.target` option](../configuration/images/docker.mdx#target) for Docker and kaniko builds and define a profile for removing the build stage for production deployments. -- Setting `runAsUser` and `runAsGroup` to `0` within the `securityContext` of your Kubernetes pods. diff --git a/docs/versioned_docs/version-5.18/guides/image-building.mdx b/docs/versioned_docs/version-5.18/guides/image-building.mdx deleted file mode 100644 index 5ebad20b8f..0000000000 --- a/docs/versioned_docs/version-5.18/guides/image-building.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Image Building -sidebar_label: Image Building ---- - -Take a look at the following best practices to speed up image building and to set up DevSpace for an ideal workflow. - -## Optimize Dockerfiles -You can drastically speed up image building by optimizing your Dockerfiles with the following tips: -- Use a small base image (e.g. alpine version) -- Use layer caching for dependencies: Add dependency file, install dependencies, then add the rest of your source code as shown in the example snippet below - -```Dockerfile -FROM 8.16.1-alpine - -# Set working dir -WORKDIR /app - -# Copy dependency file to WORKDIR -ADD package.json - -# Install dependencies -RUN npm install - -# Copy remaining source code from local WORKDIR to image WORKDIR -COPY . . -``` - -## `.dockerignore` For Better Caching -DevSpace respects the `.dockerignore` file when defined on the root level of your context directory. This file follows a similar syntax as the `.gitignore` file but instead of excluding files from git, the `.dockerignore` file defines files and folders which should not be included in the context for building an image. - -:::info Skip Image Building -Adding paths to the `.dockerignore` file makes sure that DevSpace is not forced to rebuild images when files belonging to these paths change. -::: - -It can often be useful to: -- Add `devspace.yaml` to `.dockerignore` to prevent config changes from triggering image rebuilding (`devspace init` does this by default) -- Add temporary files (e.g. `.DS_Store`) to `.dockerignore` (DevSpace ALWAYS ignores `.devspace/` temp folder even if not specified in `.dockerignore`) -- Add dependency folders to `.dockerignore`, here are a few examples of dependency folders for different languages: - -### Recommended Paths for `.dockerignore` -| Language / Dependency Tool | `.dockerignore` statements | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| All Languages | `devspace.yaml` | -| PHP / composer | `composer.phar`
`vendor/` | -| Node.js / npm | `node_modules/`
`npm-debug.log*`
`report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json`
`pids`
`*.pid*`
`*.seed*`
`*.pid.lock*` | -| Python / pip | `__pycache__/`
`wheels/`
`pip-log.txt`
`pip-wheel-metadata/` | - - -## Different Images for Development vs. Staging vs. Production -Generally, there are several options to achieve this: -- using multiple Dockerfiles (e.g. `Dockerfile`, `Dockerfile_production`) -- using one Dockerfile in combination with `BUILD_ARGS` and `ENTRYPOINT` overrides for each environment -- using one Dockerfile in combination with multi-stage builds with targets for each environment - -All options have their benefits and caveats. Which one is the best for your project depends on your use case and your priorities. diff --git a/docs/versioned_docs/version-5.18/guides/localhost-ui.mdx b/docs/versioned_docs/version-5.18/guides/localhost-ui.mdx deleted file mode 100644 index 28178c8e78..0000000000 --- a/docs/versioned_docs/version-5.18/guides/localhost-ui.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: DevSpace Localhost UI -sidebar_label: DevSpace UI ---- - -DevSpace provides a powerful client-only UI for Kubernetes development. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Overview
-
- -## Open The UI -Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: -```bash -######################################################### -[info] DevSpace UI available at: http://localhost:8090 -######################################################### -``` -By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. - -To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. - -Additionally, you can also start the UI using the following command: -```bash -devspace ui -``` - -:::info Use without Config -The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. -::: - -:::note -If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. -::: - -## Logs -The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. - -### Inspecting Pods & Containers -The logs view allows you to: -- switch the kube-context and namespace -- list all containers (grouped by pods) in a namespace -- observe the status of all containers and detect issues -- view the YAML definition of each pod -- [stream the logs of a container](#stream-logs) -- [start interactive terminal sessions for a container](#start-terminals) - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Inspecting Pods & Containers
-
- - -### Stream Logs -To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Streaming Container Logs
-
- -If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. - -**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. - -**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. - -:::info Last 100 Lines -The log stream prints the last 100 log lines and then starts streaming the logs in real-time. -::: - -:::note Streaming in the background -Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. -::: - - -### Start Terminals -To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Starting Interactive Terminals
-
- -The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. - -**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. - -**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. - - -### Open / 1-Click Port-Forwarding -If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. - -:::info Service Required -This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). -::: - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
-
- - -## Stack -If you open the stack view, DevSpace will show: -- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) -- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config -- the [config variables](../configuration/variables/basics.mdx) available for this project - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Stack: Config, Profile, Variables
-
- - -## Commands -DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. - -The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. - -
- DevSpace Localhost UI -
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
-
- -Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: -```bash -devspace run my-command -``` diff --git a/docs/versioned_docs/version-5.18/guides/networking-domains.mdx b/docs/versioned_docs/version-5.18/guides/networking-domains.mdx deleted file mode 100644 index c2388aa259..0000000000 --- a/docs/versioned_docs/version-5.18/guides/networking-domains.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Services, Ingresses & Domains -sidebar_label: Networking & Domains ---- - -import FragmentInfoComponentChart from '../fragments/info-component-chart.mdx'; - -The easiest way to connect a domain to your deployment is to run the following command within your project directory: -```bash -devspace open -``` -Choose **via domain** to connect a domain or choose **via localhost** to use port-forwarding. - -
- -## Component Chart -If you are looking for the documentation of the component chart values that let you configure the ingress and service for a component in `devspace.yaml`, please look into the **[Component Chart Documentation](https://devspace.sh/component-chart/docs/introduction)**. - - - -
- -## Troubleshooting -Here are some steps to debug issues with your application when your domain is not able to reach your application. - -### Listen On All Interfaces -Make sure your application is running on `0.0.0.0` and not on `localhost`. If you see a log message in your container logs such as `Listening on localhost:PORT` or `Listening on 127.0.0.1:PORT`, you need to change the configuration of your application, so that it starts listening on `0.0.0.0` instead of `localhost`/`127.0.0.1`. - -:::info Only Localhost Works -This is often the problem when you are able to use `devspace open` with `via localhost` but not with the `via domain` option. -::: - -### Check For Failing Containers -Make sure none of your containers is constantly restarting (`Restarts` > 0) or unable to starting (`Status` != Running): -```bash -kubectl get po -``` - -### Check Services and Endpoints -Make sure you have at least one service for your main application configured: -```bash -kubectl get svc -``` - -And make sure all your services have at least one endpoint: -```bash -kubectl get ep -``` diff --git a/docs/versioned_docs/version-5.18/guides/plugins.mdx b/docs/versioned_docs/version-5.18/guides/plugins.mdx deleted file mode 100644 index 39e98177a6..0000000000 --- a/docs/versioned_docs/version-5.18/guides/plugins.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: DevSpace Plugins -sidebar_label: Plugins ---- - -The functionality of DevSpace can be extended and changed via plugins. Plugins are managed through DevSpace and are contained in a single binary or shell script. Plugins are able to extend DevSpace in the following ways: -- Add new commands to DevSpace (e.g. `devspace login` or `devspace list users`) -- Add new [predefined variables](../configuration/variables/basics.mdx) -- Execute hooks at specific events (like a command execution) - -## Installing a plugin - -Plugins can be installed from an URL, Git Repository or local file. To install a plugin run: -``` -# Add a plugin from a git repository -devspace add plugin https://github.com/my-organization/my-repo - -# Add a plugin from an URL -devspace add plugin https://myorg.com/path/to/plugin.yaml - -# Add a plugin from a local path -devspace add plugin ./plugin.yaml -``` - -After installing a plugin you can check all your existing plugins via: -``` -devspace list plugins -``` - -## Updating a plugin - -To update a DevSpace plugin run the following command: - -``` -# Enter the name and not the path -devspace update plugin PLUGIN_NAME - -# This only works for GIT plugins -devspace update plugin PLUGIN_NAME --version GIT_TAG -``` - -## Removing a plugin - -To remove a plugin via the DevSpace command line: -``` -# Enter the name and not the path -devspace remove plugin PLUGIN_NAME -``` - -If the plugin cannot be removed because a certain hook fails (or any other reason), you can also delete the plugin manually. DevSpace saves all plugin data in `$HOME/.devspace/plugins`. You will have to check each folders `plugin.yaml` to see which plugin is stored in the folder. To remove a plugin, simply delete the complete plugin folder. - -## Developing a custom DevSpace plugin - -Creating an own DevSpace plugin is quite easy. You only need a `plugin.yaml` that specifies where DevSpace can find the plugin binary and how DevSpace should execute it. You can also take a look at the [devspace-plugin-example](https://github.com/loft-sh/devspace-plugin-loft) project for a complete example. -For each installed plugin, DevSpace will create a folder in `$HOME/.devspace/plugins` with a `plugin.yaml` and a downloaded or copied `binary` that will be executed. - -### plugin.yaml - -The `plugin.yaml` specifies how the plugin is installed and integrates into DevSpace and consists of the following parts. - -#### `name` - -Name of the plugin as shown in devspace list plugins and used for devspace update plugin and devspace remove plugin. (e.g. `my-devspace-plugin`) - -#### `version` - -The semantic current version of the plugin (e.g. `0.0.1`) - -#### `binaries` - -This section states where DevSpace can retrieve the plugin binary for the current operating system and architecture. If devspace cannot find a binary for the current [runtime.GOOS](https://golang.org/pkg/runtime/#pkg-constants) and [runtime.GOARCH](https://golang.org/pkg/runtime/#pkg-constants) it will not install the plugin. -The `binaries` section expects an array with objects that can have the following properties: -* `os` is the runtime.GOOS name of the operating system (e.g. darwin, windows, linux etc.) -* `arch` is the runtime.GOARCH name of the system (e.g. amd64, 386 etc.) -* `path` is the URL to the binary to download or the local path to the binary to copy - -#### `commands` - -This section specifies which commands should be added to DevSpace. It expects an array with objects that can have the following properties: -* `name` of the command that should be added to devspace (e.g. `login` will add `devspace login`) -* `baseArgs` these args are prepended to the plugin binary, so when a user will call 'devspace login other --flag 123', devspace will call the plugin binary with 'plugin-binary baseArgs... other --flag 123' -* `usage` the usage of the command to print in `devspace --help` -* `description` the description of the command to print in `devspace --help` -* `subCommand` (Optional) the subcommand to append the command to (e.g. `add` will add the command to `devspace add`) - -DevSpace will forward all passed arguments and flags to the plugin command. - -#### `vars` - -This section specifies which [predefined variables](../configuration/variables/basics.mdx) are added to DevSpace. These variable values will be retrieved from the plugin binary instead of asking the user. It expects an array with objects that can have the following properties: -* `name` of the predefined variable to add (e.g. `EXAMPLE_VARIABLE` which can then be used in a `devspace.yaml` as `${EXAMPLE_VARIABLE}`) -* `baseArgs` these args are appended to the plugin binary (e.g. `["print", "var", "test"]` will cause devspace to call the plugin binary with: `plugin-binary print var test`) - -DevSpace expects the plugin binary to either fail (exit code unequal zero) or print the variable value to the stdout stream. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables: -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the value of `--namespace` if set (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the value of `--kube-context` if set (e.g. `my-kube-context`) - -#### `hooks` - -This section specifies certain plugin commands that should be executed at certain DevSpace events. It expects an array with objects that can have the following properties: -* `event` name of the event when to execute the command. The following events exist: - * `after:installPlugin` executed after the plugin was installed - * `before:updatePlugin` executed before the plugin will be updated - * `after:updatePlugin` executed after the plugin was updated - * `before:removePlugin` executed before the plugin will be removed - * `before:build`, `before:build:*`, `after:build`, `after:build:*`, `error:build:*` executed when DevSpace will build an image. The environment variables `DEVSPACE_PLUGIN_IMAGE_CONFIG_NAME`, `DEVSPACE_PLUGIN_IMAGE_NAME`, `DEVSPACE_PLUGIN_IMAGE_TAGS` and `DEVSPACE_PLUGIN_IMAGE_CONFIG` will be available in the hook - * `before:deploy`, `after:deploy`, `before:deploy:*`, `after:deploy:*`, `error:deploy:*`, `skip:deploy:*`, `before:render`, `after:render`, `before:render:*`, `after:render:*`, `error:render:*`, `before:purge`, `after:purge`, `before:purge:*`, `after:purge:*`, `error:purge:*` executed when DevSpace will deploy a defined deployment. The environment variables `DEVSPACE_PLUGIN_DEPLOY_CONFIG` will be available in the hook - * `before:resolveDependency:*`, `after:resolveDependency:*`, `error:resolveDependency:*`, `before:buildDependency:*`, `after:buildDependency:*`, `error:buildDependency:*`, `before:deployDependency:*`, `after:deployDependency:*`, `error:deployDependency:*`, `before:renderDependency:*`, `after:renderDependency:*`, `error:renderDependency:*`, `before:purgeDependency:*`, `after:purgeDependency:*`, `error:purgeDependency:*` executed before, after or onError during dependency handling. The environment variables `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG`, `DEVSPACE_PLUGIN_DEPENDENCY_CONFIG_PATH`and `DEVSPACE_PLUGIN_DEPENDENCY_NAME` will be available in the hook - * `before:configLoad`, `after:configLoad`, `error:configLoad` executed when DevSpace tries to load a `devspace.yaml`. The environment variables `DEVSPACE_PLUGIN_LOAD_PATH`, `DEVSPACE_PLUGIN_LOADED_RAW`, `DEVSPACE_PLUGIN_LOADED_VARS` and `DEVSPACE_PLUGIN_LOADED_CONFIG` (only in `config.afterLoad`) will be available in the hook - * `start:sync:*`, `stop:sync:*`, `error:sync:*`, `restart:sync:*` executed when DevSpace will start syncing a new sync config, closing a running one or restarting/stopping because of an error. The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `before:initialSync:*`, `after:initialSync:*`, `error:initialSync:*` executed right before DevSpace will do an initial sync and afterwards (if successful). The environment variables `DEVSPACE_PLUGIN_SYNC_CONFIG` will be available in the hook - * `start:portForwarding:*`, `restart:portForwarding:*`, `error:portForwarding:*`, `stop:portForwarding:*` executed when DevSpace will start, restart, stop port forwarding. The environment variables `DEVSPACE_PLUGIN_PORT_FORWARDING_CONFIG` will be available in the hook - * `start:reversePortForwarding:*`, `restart:reversePortForwarding:*`, `error:reversePortForwarding:*`, `stop:reversePortForwarding:*` executed when DevSpace will start, restart, stop reverse port forwarding. The environment variables `DEVSPACE_PLUGIN_REVERSE_PORT_FORWARDING_CONFIG` will be available in the hook - * `before:createPullSecrets`, `after:createPullSecrets`, `error:createPullSecrets`: executed while DevSpace creates `pullSecrets` - * `devCommand:before:sync`, `devCommand:after:sync`, `devCommand:before:portForwarding`, `devCommand:after:portForwarding`, `devCommand:before:replacePods`, `devCommand:after:replacePods`, `devCommand:before:runPipeline`, `devCommand:after:runPipeline`, `devCommand:before:deployDependencies`, `devCommand:after:deployDependencies`, `devCommand:before:build`, `devCommand:after:build`, `devCommand:before:deploy`, `devCommand:after:deploy`, `devCommand:before:openTerminal`, `devCommand:before:streamLogs`, `devCommand:before:execute`, `devCommand:after:execute`, `devCommand:interrupt`, `devCommand:error` executed at different checkpoints when `devspace dev` is executed - * `deployCommand:before:execute`, `deployCommand:after:execute`, `deployCommand:error`, `deployCommand:interrupt` executed at different checkpoints when `devspace deploy` is executed - * `purgeCommand:before:execute`, `purgeCommand:after:execute`, `purgeCommand:error`, `purgeCommand:interrupt` executed at different checkpoints when `devspace purge` is executed - * `buildCommand:before:execute`, `buildCommand:after:execute`, `buildCommand:error`, `buildCommand:interrupt` executed at different checkpoints when `devspace build` is executed - * `command:before:execute`, `command:after:execute`, `command:error` executed at the beginning, ending or if an error occurs during any DevSpace command execution - * `analyze`, `attach`, `build`, `deploy`, `dev`, `enter`, `init`, `logs`, `open`, `print`, `purge`, `render`, `restart`, `run`, `sync`, `ui`, `upgrade` are executed after the corresponding devspace command has loaded the config and created a kubernetes client (if there is a config to load or a kubernetes client to create) -* `baseArgs` these args are appended to the plugin binary (e.g. `["run", "my", "command"]` will cause devspace to call the plugin binary with: `plugin-binary run my command`) -* `background` if true will execute the hook in the background and continue DevSpace command execution - -If a non-background hook fails (exit code unequals zero) DevSpace will stop command execution and the complete DevSpace command fails. Furthermore when executing the plugin-binary, DevSpace will set the following environment variables (if they apply for the event): -- `DEVSPACE_PLUGIN_EXECUTION_ID` a unique identifier that stays the complete duration of a command but will change each time DevSpace is re-executed -- `DEVSPACE_PLUGIN_EVENT` the event that has triggered the hook -- `DEVSPACE_PLUGIN_OS_ARGS` all arguments that were used to call the current command encoded as JSON (e.g. `["devspace", "dev", "--wait", "--force-build"]`) -- `DEVSPACE_PLUGIN_CONFIG` the config that was loaded for the command as yaml encoded (all profiles and variables are resolved at this point) -- `DEVSPACE_PLUGIN_COMMAND` the name of the DevSpace command that was executed (e.g. `dev`) -- `DEVSPACE_PLUGIN_COMMAND_LINE` the complete name of the DevSpace command that was executed (e.g. `devspace dev [FLAGS]`) -- `DEVSPACE_PLUGIN_COMMAND_FLAGS` the flags that were passed to the DevSpace command encoded as JSON (e.g. `["--namespace", "test", "--skip-build", "true"]`) -- `DEVSPACE_PLUGIN_COMMAND_ARGS` the arguments that were passed to the DevSpace command encoded as JSON (without any flags) (e.g. `["arg1"]`) -- `DEVSPACE_PLUGIN_KUBE_NAMESPACE_FLAG` the kubernetes namespace where DevSpace will operate in (e.g. `namespace`) -- `DEVSPACE_PLUGIN_KUBE_CONTEXT_FLAG` the kubernetes context where DevSpace will operate in (e.g. `my-kube-context`) -- `DEVSPACE_PLUGIN_ERROR` the error that occurred at a certain event (usually only supplied in the `error` or `restart` events) - -### Example - -An example `plugin.yaml` could look like this: -```yaml -name: devspace-plugin-example -version: 0.0.1 -commands: - # This will add the command devspace login - - name: "login" - # these args are prepended to the plugin binary, so when a user will call 'devspace login test test2 --flag 123' - # devspace will call the plugin binary with 'plugin-binary other command test test2 --flag 123' - baseArgs: ["other", "command"] - usage: "short description of command" - description: "long description of command" - # You can also add commands under already existing devspace subcommands - # This will add the devspace command: devspace list env - - name: "env" - baseArgs: ["list", "env"] - subCommand: "list" -# Hooks are called before certain already existing commands are executed -# in devspace, for example devspace dev -hooks: - # will be executed when devspace print is run by the user - - event: print - # this will call the plugin binary before devspace print is called with: 'plugin-binary list env' - baseArgs: ["list", "env"] - # root is executed before any other event and command execution except for other plugin commands - - event: root - baseArgs: ["login"] -# You can also add predefined variables for the config via plugins -vars: - # the name of the predefined variable - # that can be used within any devspace.yaml - - name: EXAMPLE_USER - # this will call the plugin binary when resolving this variable and expects the variable - # output on stdout. - baseArgs: ["print", "env", "USER"] - - name: EXAMPLE_HOME - baseArgs: [ "print", "env", "HOME" ] -# In this section the plugin binaries (or scripts) and their locations are defined -# if devspace cannot find a binary for the current runtime.GOOS and runtime.GOARCH -# it will not install the plugin -binaries: - - os: darwin - arch: amd64 - # can be either an URL or local path - path: ./main - - os: linux - arch: amd64 - path: main - - os: linux - arch: "386" - path: main - - os: windows - arch: amd64 - path: path/to/main.exe - - os: windows - arch: "386" - path: https://my-domain.url/path/to/windows.exe -``` diff --git a/docs/versioned_docs/version-5.18/guides/remote-debugging.mdx b/docs/versioned_docs/version-5.18/guides/remote-debugging.mdx deleted file mode 100644 index d2be954168..0000000000 --- a/docs/versioned_docs/version-5.18/guides/remote-debugging.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Remote Debugging -sidebar_label: Remote Debugging ---- - -DevSpace lets you easily [start applications in development mode](../getting-started/development.mdx) and connect remote debuggers for your application using the following steps: - -1. Configure DevSpace to use a development Dockerfile that: - - ships with the appropriate tools for debugging your application - - starts your application together with the debugger, e.g. setting the `ENTRYPOINT` of your Dockerfile to `node --inspect=0.0.0.0:9229 index.js` would start the Node.js remote debugger on port `9229` -2. Define port-forwarding for the port of your remote debugger (e.g. `9229`) within the `dev.ports` section of your `devspace.yaml` -3. Connect your IDE to the remote debugger (see the docs of your IDE for help) -4. Set breakpoints and debug your application directly inside Kubernetes diff --git a/docs/versioned_docs/version-5.18/introduction.mdx b/docs/versioned_docs/version-5.18/introduction.mdx deleted file mode 100644 index b474f724bd..0000000000 --- a/docs/versioned_docs/version-5.18/introduction.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: What is DevSpace? -sidebar_label: Introduction ---- - -DevSpace is a client-only, open-source developer tool for Kubernetes: -- **Build, test and debug applications directly inside Kubernetes** -- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers -- **Unify deployment workflows** within your team and across dev, staging and production -- **Automate repetitive tasks** for image building and deployment - -## How does it work? -DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. - - - - -## Why DevSpace? -Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. - - -### Declarative Workflows -DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` -- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. -- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) -- **Share your workflows** with your team mates - - -### Made For Teams -DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. -- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git -- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project -- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) - - -### Hot Reloading -Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: -- Simply edit your files with your IDE and see how your application reloads within the running container. -- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes -- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. - - -### Automation -Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: -- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command -- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. - - -### Compatibility -DevSpace is battle tested with many Kubernetes distributions including: -- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind -- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) -- **Self-managed Kubernetes clusters** (e.g. created with Rancher) - -
- diff --git a/docs/versioned_docs/version-5.18/quickstart.mdx b/docs/versioned_docs/version-5.18/quickstart.mdx deleted file mode 100644 index e1508c12a3..0000000000 --- a/docs/versioned_docs/version-5.18/quickstart.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Quickstart -sidebar_label: Quickstart ---- - -import InstallFragment from './fragments/install-cli.mdx'; -import ChooseProjectFragment from './fragments/choose-project.mdx'; -import StartAppFragment from './fragments/start-app.mdx'; - -This is a 2-minute quickstart guide. For additional details and explanations, see the [Getting Started Guide](./getting-started/installation.mdx). - -## 1. Download CLI - - -## 2. Choose a Project -You can either deploy one of your own projects or alternatively, checkout one of our demo applications using git: - - - -## 3. Initialize Project -```bash -devspace init -``` -Choose `Component Chart` and `Based on this existing Dockerfile` for quickstart projects. - - -## 4. Start Development -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace dev -``` - -As soon as the terminal opens up, you can start your application: - - - -**Hot Reloading**: Now, change a file on your local computer and re-run the application inside the container terminal. - -**Port Forwarding**: You can access your application via `localhost:PORT` if your port is specified in `dev.ports` within `devspace.yaml`. - -When you're done testing development, type `exit` or hit `Ctrl-d` to exit the container terminal. - -## 5. Deploy Project -To build your container image and deploy a clean version of this project, run: -```bash -devspace use namespace my-namespace # will be created by DevSpace if it does not exist -devspace deploy -p production -``` - -## 6. Cleanup -To purge your deployment from the cluster, run: -```bash -devspace purge -``` diff --git a/docs/pages/commands/devspace.md b/docs/versioned_docs/version-5.x/commands/devspace.md similarity index 100% rename from docs/pages/commands/devspace.md rename to docs/versioned_docs/version-5.x/commands/devspace.md diff --git a/docs/pages/commands/devspace_add.md b/docs/versioned_docs/version-5.x/commands/devspace_add.md similarity index 100% rename from docs/pages/commands/devspace_add.md rename to docs/versioned_docs/version-5.x/commands/devspace_add.md diff --git a/docs/pages/commands/devspace_add_plugin.md b/docs/versioned_docs/version-5.x/commands/devspace_add_plugin.md similarity index 100% rename from docs/pages/commands/devspace_add_plugin.md rename to docs/versioned_docs/version-5.x/commands/devspace_add_plugin.md diff --git a/docs/pages/commands/devspace_analyze.md b/docs/versioned_docs/version-5.x/commands/devspace_analyze.md similarity index 100% rename from docs/pages/commands/devspace_analyze.md rename to docs/versioned_docs/version-5.x/commands/devspace_analyze.md diff --git a/docs/pages/commands/devspace_attach.md b/docs/versioned_docs/version-5.x/commands/devspace_attach.md similarity index 100% rename from docs/pages/commands/devspace_attach.md rename to docs/versioned_docs/version-5.x/commands/devspace_attach.md diff --git a/docs/pages/commands/devspace_build.md b/docs/versioned_docs/version-5.x/commands/devspace_build.md similarity index 100% rename from docs/pages/commands/devspace_build.md rename to docs/versioned_docs/version-5.x/commands/devspace_build.md diff --git a/docs/pages/commands/devspace_cleanup.md b/docs/versioned_docs/version-5.x/commands/devspace_cleanup.md similarity index 100% rename from docs/pages/commands/devspace_cleanup.md rename to docs/versioned_docs/version-5.x/commands/devspace_cleanup.md diff --git a/docs/pages/commands/devspace_cleanup_images.md b/docs/versioned_docs/version-5.x/commands/devspace_cleanup_images.md similarity index 100% rename from docs/pages/commands/devspace_cleanup_images.md rename to docs/versioned_docs/version-5.x/commands/devspace_cleanup_images.md diff --git a/docs/pages/commands/devspace_completion.md b/docs/versioned_docs/version-5.x/commands/devspace_completion.md similarity index 100% rename from docs/pages/commands/devspace_completion.md rename to docs/versioned_docs/version-5.x/commands/devspace_completion.md diff --git a/docs/pages/commands/devspace_deploy.md b/docs/versioned_docs/version-5.x/commands/devspace_deploy.md similarity index 100% rename from docs/pages/commands/devspace_deploy.md rename to docs/versioned_docs/version-5.x/commands/devspace_deploy.md diff --git a/docs/pages/commands/devspace_dev.md b/docs/versioned_docs/version-5.x/commands/devspace_dev.md similarity index 100% rename from docs/pages/commands/devspace_dev.md rename to docs/versioned_docs/version-5.x/commands/devspace_dev.md diff --git a/docs/pages/commands/devspace_enter.md b/docs/versioned_docs/version-5.x/commands/devspace_enter.md similarity index 100% rename from docs/pages/commands/devspace_enter.md rename to docs/versioned_docs/version-5.x/commands/devspace_enter.md diff --git a/docs/pages/commands/devspace_init.md b/docs/versioned_docs/version-5.x/commands/devspace_init.md similarity index 100% rename from docs/pages/commands/devspace_init.md rename to docs/versioned_docs/version-5.x/commands/devspace_init.md diff --git a/docs/pages/commands/devspace_list.md b/docs/versioned_docs/version-5.x/commands/devspace_list.md similarity index 100% rename from docs/pages/commands/devspace_list.md rename to docs/versioned_docs/version-5.x/commands/devspace_list.md diff --git a/docs/pages/commands/devspace_list_commands.md b/docs/versioned_docs/version-5.x/commands/devspace_list_commands.md similarity index 100% rename from docs/pages/commands/devspace_list_commands.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_commands.md diff --git a/docs/pages/commands/devspace_list_contexts.md b/docs/versioned_docs/version-5.x/commands/devspace_list_contexts.md similarity index 100% rename from docs/pages/commands/devspace_list_contexts.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_contexts.md diff --git a/docs/pages/commands/devspace_list_deployments.md b/docs/versioned_docs/version-5.x/commands/devspace_list_deployments.md similarity index 100% rename from docs/pages/commands/devspace_list_deployments.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_deployments.md diff --git a/docs/pages/commands/devspace_list_namespaces.md b/docs/versioned_docs/version-5.x/commands/devspace_list_namespaces.md similarity index 100% rename from docs/pages/commands/devspace_list_namespaces.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_namespaces.md diff --git a/docs/pages/commands/devspace_list_plugins.md b/docs/versioned_docs/version-5.x/commands/devspace_list_plugins.md similarity index 100% rename from docs/pages/commands/devspace_list_plugins.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_plugins.md diff --git a/docs/pages/commands/devspace_list_ports.md b/docs/versioned_docs/version-5.x/commands/devspace_list_ports.md similarity index 100% rename from docs/pages/commands/devspace_list_ports.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_ports.md diff --git a/docs/pages/commands/devspace_list_profiles.md b/docs/versioned_docs/version-5.x/commands/devspace_list_profiles.md similarity index 100% rename from docs/pages/commands/devspace_list_profiles.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_profiles.md diff --git a/docs/pages/commands/devspace_list_sync.md b/docs/versioned_docs/version-5.x/commands/devspace_list_sync.md similarity index 100% rename from docs/pages/commands/devspace_list_sync.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_sync.md diff --git a/docs/pages/commands/devspace_list_vars.md b/docs/versioned_docs/version-5.x/commands/devspace_list_vars.md similarity index 100% rename from docs/pages/commands/devspace_list_vars.md rename to docs/versioned_docs/version-5.x/commands/devspace_list_vars.md diff --git a/docs/pages/commands/devspace_logs.md b/docs/versioned_docs/version-5.x/commands/devspace_logs.md similarity index 100% rename from docs/pages/commands/devspace_logs.md rename to docs/versioned_docs/version-5.x/commands/devspace_logs.md diff --git a/docs/pages/commands/devspace_open.md b/docs/versioned_docs/version-5.x/commands/devspace_open.md similarity index 100% rename from docs/pages/commands/devspace_open.md rename to docs/versioned_docs/version-5.x/commands/devspace_open.md diff --git a/docs/pages/commands/devspace_print.md b/docs/versioned_docs/version-5.x/commands/devspace_print.md similarity index 100% rename from docs/pages/commands/devspace_print.md rename to docs/versioned_docs/version-5.x/commands/devspace_print.md diff --git a/docs/pages/commands/devspace_purge.md b/docs/versioned_docs/version-5.x/commands/devspace_purge.md similarity index 100% rename from docs/pages/commands/devspace_purge.md rename to docs/versioned_docs/version-5.x/commands/devspace_purge.md diff --git a/docs/pages/commands/devspace_remove.md b/docs/versioned_docs/version-5.x/commands/devspace_remove.md similarity index 100% rename from docs/pages/commands/devspace_remove.md rename to docs/versioned_docs/version-5.x/commands/devspace_remove.md diff --git a/docs/pages/commands/devspace_remove_context.md b/docs/versioned_docs/version-5.x/commands/devspace_remove_context.md similarity index 100% rename from docs/pages/commands/devspace_remove_context.md rename to docs/versioned_docs/version-5.x/commands/devspace_remove_context.md diff --git a/docs/pages/commands/devspace_remove_plugin.md b/docs/versioned_docs/version-5.x/commands/devspace_remove_plugin.md similarity index 100% rename from docs/pages/commands/devspace_remove_plugin.md rename to docs/versioned_docs/version-5.x/commands/devspace_remove_plugin.md diff --git a/docs/pages/commands/devspace_render.md b/docs/versioned_docs/version-5.x/commands/devspace_render.md similarity index 100% rename from docs/pages/commands/devspace_render.md rename to docs/versioned_docs/version-5.x/commands/devspace_render.md diff --git a/docs/pages/commands/devspace_reset.md b/docs/versioned_docs/version-5.x/commands/devspace_reset.md similarity index 100% rename from docs/pages/commands/devspace_reset.md rename to docs/versioned_docs/version-5.x/commands/devspace_reset.md diff --git a/docs/pages/commands/devspace_reset_dependencies.md b/docs/versioned_docs/version-5.x/commands/devspace_reset_dependencies.md similarity index 100% rename from docs/pages/commands/devspace_reset_dependencies.md rename to docs/versioned_docs/version-5.x/commands/devspace_reset_dependencies.md diff --git a/docs/pages/commands/devspace_reset_pods.md b/docs/versioned_docs/version-5.x/commands/devspace_reset_pods.md similarity index 100% rename from docs/pages/commands/devspace_reset_pods.md rename to docs/versioned_docs/version-5.x/commands/devspace_reset_pods.md diff --git a/docs/pages/commands/devspace_reset_vars.md b/docs/versioned_docs/version-5.x/commands/devspace_reset_vars.md similarity index 100% rename from docs/pages/commands/devspace_reset_vars.md rename to docs/versioned_docs/version-5.x/commands/devspace_reset_vars.md diff --git a/docs/pages/commands/devspace_restart.md b/docs/versioned_docs/version-5.x/commands/devspace_restart.md similarity index 100% rename from docs/pages/commands/devspace_restart.md rename to docs/versioned_docs/version-5.x/commands/devspace_restart.md diff --git a/docs/pages/commands/devspace_restore.md b/docs/versioned_docs/version-5.x/commands/devspace_restore.md similarity index 100% rename from docs/pages/commands/devspace_restore.md rename to docs/versioned_docs/version-5.x/commands/devspace_restore.md diff --git a/docs/pages/commands/devspace_restore_vars.md b/docs/versioned_docs/version-5.x/commands/devspace_restore_vars.md similarity index 100% rename from docs/pages/commands/devspace_restore_vars.md rename to docs/versioned_docs/version-5.x/commands/devspace_restore_vars.md diff --git a/docs/pages/commands/devspace_run.md b/docs/versioned_docs/version-5.x/commands/devspace_run.md similarity index 100% rename from docs/pages/commands/devspace_run.md rename to docs/versioned_docs/version-5.x/commands/devspace_run.md diff --git a/docs/pages/commands/devspace_save.md b/docs/versioned_docs/version-5.x/commands/devspace_save.md similarity index 100% rename from docs/pages/commands/devspace_save.md rename to docs/versioned_docs/version-5.x/commands/devspace_save.md diff --git a/docs/pages/commands/devspace_save_vars.md b/docs/versioned_docs/version-5.x/commands/devspace_save_vars.md similarity index 100% rename from docs/pages/commands/devspace_save_vars.md rename to docs/versioned_docs/version-5.x/commands/devspace_save_vars.md diff --git a/docs/pages/commands/devspace_set.md b/docs/versioned_docs/version-5.x/commands/devspace_set.md similarity index 100% rename from docs/pages/commands/devspace_set.md rename to docs/versioned_docs/version-5.x/commands/devspace_set.md diff --git a/docs/pages/commands/devspace_set_var.md b/docs/versioned_docs/version-5.x/commands/devspace_set_var.md similarity index 100% rename from docs/pages/commands/devspace_set_var.md rename to docs/versioned_docs/version-5.x/commands/devspace_set_var.md diff --git a/docs/pages/commands/devspace_sync.md b/docs/versioned_docs/version-5.x/commands/devspace_sync.md similarity index 100% rename from docs/pages/commands/devspace_sync.md rename to docs/versioned_docs/version-5.x/commands/devspace_sync.md diff --git a/docs/pages/commands/devspace_ui.md b/docs/versioned_docs/version-5.x/commands/devspace_ui.md similarity index 100% rename from docs/pages/commands/devspace_ui.md rename to docs/versioned_docs/version-5.x/commands/devspace_ui.md diff --git a/docs/pages/commands/devspace_update.md b/docs/versioned_docs/version-5.x/commands/devspace_update.md similarity index 100% rename from docs/pages/commands/devspace_update.md rename to docs/versioned_docs/version-5.x/commands/devspace_update.md diff --git a/docs/pages/commands/devspace_update_dependencies.md b/docs/versioned_docs/version-5.x/commands/devspace_update_dependencies.md similarity index 100% rename from docs/pages/commands/devspace_update_dependencies.md rename to docs/versioned_docs/version-5.x/commands/devspace_update_dependencies.md diff --git a/docs/pages/commands/devspace_update_plugin.md b/docs/versioned_docs/version-5.x/commands/devspace_update_plugin.md similarity index 100% rename from docs/pages/commands/devspace_update_plugin.md rename to docs/versioned_docs/version-5.x/commands/devspace_update_plugin.md diff --git a/docs/pages/commands/devspace_upgrade.md b/docs/versioned_docs/version-5.x/commands/devspace_upgrade.md similarity index 100% rename from docs/pages/commands/devspace_upgrade.md rename to docs/versioned_docs/version-5.x/commands/devspace_upgrade.md diff --git a/docs/pages/commands/devspace_use.md b/docs/versioned_docs/version-5.x/commands/devspace_use.md similarity index 100% rename from docs/pages/commands/devspace_use.md rename to docs/versioned_docs/version-5.x/commands/devspace_use.md diff --git a/docs/pages/commands/devspace_use_context.md b/docs/versioned_docs/version-5.x/commands/devspace_use_context.md similarity index 100% rename from docs/pages/commands/devspace_use_context.md rename to docs/versioned_docs/version-5.x/commands/devspace_use_context.md diff --git a/docs/pages/commands/devspace_use_namespace.md b/docs/versioned_docs/version-5.x/commands/devspace_use_namespace.md similarity index 100% rename from docs/pages/commands/devspace_use_namespace.md rename to docs/versioned_docs/version-5.x/commands/devspace_use_namespace.md diff --git a/docs/pages/commands/devspace_use_profile.md b/docs/versioned_docs/version-5.x/commands/devspace_use_profile.md similarity index 100% rename from docs/pages/commands/devspace_use_profile.md rename to docs/versioned_docs/version-5.x/commands/devspace_use_profile.md diff --git a/docs/pages/configuration/commands/basics.mdx b/docs/versioned_docs/version-5.x/configuration/commands/basics.mdx similarity index 100% rename from docs/pages/configuration/commands/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/commands/basics.mdx diff --git a/docs/versioned_docs/version-5.x/configuration/dependencies/basics.mdx b/docs/versioned_docs/version-5.x/configuration/dependencies/basics.mdx new file mode 100644 index 0000000000..aa4b6fb45e --- /dev/null +++ b/docs/versioned_docs/version-5.x/configuration/dependencies/basics.mdx @@ -0,0 +1,183 @@ +--- +title: Dependencies +sidebar_label: "Basics" +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +DevSpace allows you to define dependencies between several software projects that have a `devspace.yaml`, e.g. across different git repositories or local folders. This makes DevSpace a great tool for building and deploying software that consists of several microservices. Primary use cases of dependencies are: + +- You want to reuse an already existing `devspace.yaml` of another project +- You want to define a more complex pipeline with multiple build, hook and deploy steps +- You want to define a common build / deploy step for other projects + +Dependencies for DevSpace projects are defined within the `dependencies` section of `devspace.yaml`. + + + + +```yaml +dependencies: +- name: api-server + source: + git: https://github.com/my-api-server + branch: stable + dev: + ports: true +- name: auth-server + source: + git: https://github.com/my-auth-server + revision: c967392 + profile: production +- name: database-server + source: + git: https://github.com/my-database-server + tag: v3.0.1 + subPath: /configuration + vars: + - name: ROOT_PASSWORD + value: ${ROOT_PASSWORD} +``` + + + + +```yaml +dependencies: +- name: component-1 + source: + path: ./component-1 +- name: component-2 + source: + path: ./component-2 +``` + + + + +## Dependency Source +DevSpace is able to work with dependencies from the following sources: +- [`git` repository](../../configuration/dependencies/git-repository.mdx) as dependency that has a devspace configuration +- [`path` to a local folder](../../configuration/dependencies/local-folder.mdx) that contains a dependency (path is relative to the current project's root directory) + + +## Execution Order + +Dependencies will be executed in the order that they are specified under `dependencies` and always before image building and deployments defined in the top-level `devspace.yaml`. `dev` configuration that should be reused from a dependency will be executed alongside regular `dev` configuration specified in the top-level `devspace.yaml` after the DevSpace deployment pipeline ran through. Example: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 + dev: + sync: true +- name: dep2 + source: + path: dep2 + dev: + ports: true +images: + image1: + image: myimage/image +deployments: +- name: deployment1 + helm: + ... +dev: + ports: ... + sync: ... +``` + +### Explanation +In the above `devspace.yaml`, execution order would be as followed: +* Execute dependency dep1's pull secrets, image building & deployments (if dep1 has other dependencies as well, execute those first) +* Execute dependency dep2's pull secrets, image building & deployments +* Build image `image1` +* Deploy deployment `deployment1` +* Start merged portforwarding from `dep2` and `dev.ports` +* Start sync from `dep1` and `dev.sync` + +## Referencing Dependencies + +### Reference Image Names +You can reference dependencies images via `my-dependency.image` in the `./devspace.yaml`: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 +dev: + # Will open a terminal to the pod with the + # image from dep1 + terminal: + imageSelector: ${runtime.dependencies.dep1.images.image1} +``` + +With `dep1/devspace.yaml`: +```yaml +images: + image1: + image: myusername/devspace +deployments: + - name: quickstart + helm: + componentChart: true + values: + containers: + - image: myusername/devspace +``` + +### Referencing Dependencies in Deployment Values / Manifests + +It is also possible to reference a dependency's image with runtime variables in a deployment: +```yaml +dependencies: +- name: dep1 + source: + path: dep1 +deployments: + - name: quickstart + helm: + componentChart: true + values: + containers: + - image: ${runtime.dependencies.dep1.image1.image}:${runtime.dependencies.dep1.image1.tag} # -> replaced with 'myusername/devspace:xxxx' +``` + +With a dependency `dep1/devspace.yaml` that looks like: +```yaml +images: + image1: + image: myusername/devspace +``` + +## Dependency Resolution +When a DevSpace project has dependencies, DevSpace will: + +1. Resolve all dependencies in a recursive manner and give the dependency an ID based on its path or git repository +2. Build a non-cyclic dependency tree where each dependency only occurs once (but could have multiple edges) +3. Choose a leave node from the dependency tree, build its images (unless skip is defined) and deploy its deployments as well as execute defined hooks or pull secrets +4. Remove the leave node from the tree and repeat step 3 until everything has been deployed + +The algorithm used by DevSpace for building and deploying dependencies ensures that all dependencies have been deployed in the correct order before the project you are calling DevSpace from will be built and deployed. + +### Redundant Dependencies +If DevSpace detects that two projects within the dependency tree define the same child-dependency (i.e. a redundant dependency), DevSpace will try to resolve this by removing the dependency that is "higher" (i.e. found first when resolving dependencies) within the tree. + +### Circular Dependencies +If DevSpace detects two projects which define each other as dependencies (either directly or via child-dependencies), DevSpace will print a warning showing the problematic dependency path within the dependency tree. + +## Useful Commands + +### `devspace update dependencies` +If you want to force DevSpace to update the dependencies (e.g. git fetch & pull), you can run the following command: +```bash +devspace update dependencies +``` diff --git a/docs/versioned_docs/version-5.18/configuration/dependencies/git-repository.mdx b/docs/versioned_docs/version-5.x/configuration/dependencies/git-repository.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/configuration/dependencies/git-repository.mdx rename to docs/versioned_docs/version-5.x/configuration/dependencies/git-repository.mdx diff --git a/docs/versioned_docs/version-5.18/configuration/dependencies/local-folder.mdx b/docs/versioned_docs/version-5.x/configuration/dependencies/local-folder.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/configuration/dependencies/local-folder.mdx rename to docs/versioned_docs/version-5.x/configuration/dependencies/local-folder.mdx diff --git a/docs/versioned_docs/version-5.15/configuration/deployments/basics.mdx b/docs/versioned_docs/version-5.x/configuration/deployments/basics.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/configuration/deployments/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/deployments/basics.mdx diff --git a/docs/pages/configuration/deployments/helm-charts.mdx b/docs/versioned_docs/version-5.x/configuration/deployments/helm-charts.mdx similarity index 100% rename from docs/pages/configuration/deployments/helm-charts.mdx rename to docs/versioned_docs/version-5.x/configuration/deployments/helm-charts.mdx diff --git a/docs/pages/configuration/deployments/kubernetes-manifests.mdx b/docs/versioned_docs/version-5.x/configuration/deployments/kubernetes-manifests.mdx similarity index 100% rename from docs/pages/configuration/deployments/kubernetes-manifests.mdx rename to docs/versioned_docs/version-5.x/configuration/deployments/kubernetes-manifests.mdx diff --git a/docs/pages/configuration/deployments/kustomizations.mdx b/docs/versioned_docs/version-5.x/configuration/deployments/kustomizations.mdx similarity index 100% rename from docs/pages/configuration/deployments/kustomizations.mdx rename to docs/versioned_docs/version-5.x/configuration/deployments/kustomizations.mdx diff --git a/docs/versioned_docs/version-5.18/configuration/development/auto-reloading.mdx b/docs/versioned_docs/version-5.x/configuration/development/auto-reloading.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/configuration/development/auto-reloading.mdx rename to docs/versioned_docs/version-5.x/configuration/development/auto-reloading.mdx diff --git a/docs/pages/configuration/development/basics.mdx b/docs/versioned_docs/version-5.x/configuration/development/basics.mdx similarity index 100% rename from docs/pages/configuration/development/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/development/basics.mdx diff --git a/docs/pages/configuration/development/file-synchronization.mdx b/docs/versioned_docs/version-5.x/configuration/development/file-synchronization.mdx similarity index 100% rename from docs/pages/configuration/development/file-synchronization.mdx rename to docs/versioned_docs/version-5.x/configuration/development/file-synchronization.mdx diff --git a/docs/pages/configuration/development/log-streaming.mdx b/docs/versioned_docs/version-5.x/configuration/development/log-streaming.mdx similarity index 100% rename from docs/pages/configuration/development/log-streaming.mdx rename to docs/versioned_docs/version-5.x/configuration/development/log-streaming.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/development/open-links.mdx b/docs/versioned_docs/version-5.x/configuration/development/open-links.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/development/open-links.mdx rename to docs/versioned_docs/version-5.x/configuration/development/open-links.mdx diff --git a/docs/pages/configuration/development/port-forwarding.mdx b/docs/versioned_docs/version-5.x/configuration/development/port-forwarding.mdx similarity index 100% rename from docs/pages/configuration/development/port-forwarding.mdx rename to docs/versioned_docs/version-5.x/configuration/development/port-forwarding.mdx diff --git a/docs/pages/configuration/development/replace-pods.mdx b/docs/versioned_docs/version-5.x/configuration/development/replace-pods.mdx similarity index 100% rename from docs/pages/configuration/development/replace-pods.mdx rename to docs/versioned_docs/version-5.x/configuration/development/replace-pods.mdx diff --git a/docs/pages/configuration/development/reverse-port-forwarding.mdx b/docs/versioned_docs/version-5.x/configuration/development/reverse-port-forwarding.mdx similarity index 100% rename from docs/pages/configuration/development/reverse-port-forwarding.mdx rename to docs/versioned_docs/version-5.x/configuration/development/reverse-port-forwarding.mdx diff --git a/docs/versioned_docs/version-5.16/configuration/development/terminal.mdx b/docs/versioned_docs/version-5.x/configuration/development/terminal.mdx similarity index 100% rename from docs/versioned_docs/version-5.16/configuration/development/terminal.mdx rename to docs/versioned_docs/version-5.x/configuration/development/terminal.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/env-file.mdx b/docs/versioned_docs/version-5.x/configuration/env-file.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/env-file.mdx rename to docs/versioned_docs/version-5.x/configuration/env-file.mdx diff --git a/docs/versioned_docs/version-5.18/configuration/expressions.mdx b/docs/versioned_docs/version-5.x/configuration/expressions.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/configuration/expressions.mdx rename to docs/versioned_docs/version-5.x/configuration/expressions.mdx diff --git a/docs/pages/configuration/hooks/basics.mdx b/docs/versioned_docs/version-5.x/configuration/hooks/basics.mdx similarity index 100% rename from docs/pages/configuration/hooks/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/hooks/basics.mdx diff --git a/docs/versioned_docs/version-4.13/configuration/images/append-dockerfile-instructions.mdx b/docs/versioned_docs/version-5.x/configuration/images/append-dockerfile-instructions.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/configuration/images/append-dockerfile-instructions.mdx rename to docs/versioned_docs/version-5.x/configuration/images/append-dockerfile-instructions.mdx diff --git a/docs/pages/configuration/images/basics.mdx b/docs/versioned_docs/version-5.x/configuration/images/basics.mdx similarity index 100% rename from docs/pages/configuration/images/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/images/basics.mdx diff --git a/docs/versioned_docs/version-5.15/configuration/images/buildkit.mdx b/docs/versioned_docs/version-5.x/configuration/images/buildkit.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/configuration/images/buildkit.mdx rename to docs/versioned_docs/version-5.x/configuration/images/buildkit.mdx diff --git a/docs/pages/configuration/images/custom.mdx b/docs/versioned_docs/version-5.x/configuration/images/custom.mdx similarity index 100% rename from docs/pages/configuration/images/custom.mdx rename to docs/versioned_docs/version-5.x/configuration/images/custom.mdx diff --git a/docs/pages/configuration/images/disabled.mdx b/docs/versioned_docs/version-5.x/configuration/images/disabled.mdx similarity index 100% rename from docs/pages/configuration/images/disabled.mdx rename to docs/versioned_docs/version-5.x/configuration/images/disabled.mdx diff --git a/docs/versioned_docs/version-5.15/configuration/images/docker.mdx b/docs/versioned_docs/version-5.x/configuration/images/docker.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/configuration/images/docker.mdx rename to docs/versioned_docs/version-5.x/configuration/images/docker.mdx diff --git a/docs/pages/configuration/images/dockerfile-context.mdx b/docs/versioned_docs/version-5.x/configuration/images/dockerfile-context.mdx similarity index 100% rename from docs/pages/configuration/images/dockerfile-context.mdx rename to docs/versioned_docs/version-5.x/configuration/images/dockerfile-context.mdx diff --git a/docs/pages/configuration/images/entrypoint-cmd.mdx b/docs/versioned_docs/version-5.x/configuration/images/entrypoint-cmd.mdx similarity index 100% rename from docs/pages/configuration/images/entrypoint-cmd.mdx rename to docs/versioned_docs/version-5.x/configuration/images/entrypoint-cmd.mdx diff --git a/docs/pages/configuration/images/image-tagging.mdx b/docs/versioned_docs/version-5.x/configuration/images/image-tagging.mdx similarity index 100% rename from docs/pages/configuration/images/image-tagging.mdx rename to docs/versioned_docs/version-5.x/configuration/images/image-tagging.mdx diff --git a/docs/pages/configuration/images/inject-restart-helper.mdx b/docs/versioned_docs/version-5.x/configuration/images/inject-restart-helper.mdx similarity index 100% rename from docs/pages/configuration/images/inject-restart-helper.mdx rename to docs/versioned_docs/version-5.x/configuration/images/inject-restart-helper.mdx diff --git a/docs/versioned_docs/version-5.17/configuration/images/kaniko.mdx b/docs/versioned_docs/version-5.x/configuration/images/kaniko.mdx similarity index 100% rename from docs/versioned_docs/version-5.17/configuration/images/kaniko.mdx rename to docs/versioned_docs/version-5.x/configuration/images/kaniko.mdx diff --git a/docs/pages/configuration/images/pull-secrets.mdx b/docs/versioned_docs/version-5.x/configuration/images/pull-secrets.mdx similarity index 100% rename from docs/pages/configuration/images/pull-secrets.mdx rename to docs/versioned_docs/version-5.x/configuration/images/pull-secrets.mdx diff --git a/docs/pages/configuration/images/rebuild-strategy.mdx b/docs/versioned_docs/version-5.x/configuration/images/rebuild-strategy.mdx similarity index 100% rename from docs/pages/configuration/images/rebuild-strategy.mdx rename to docs/versioned_docs/version-5.x/configuration/images/rebuild-strategy.mdx diff --git a/docs/pages/configuration/profiles/activation.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/activation.mdx similarity index 100% rename from docs/pages/configuration/profiles/activation.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/activation.mdx diff --git a/docs/pages/configuration/profiles/basics.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/basics.mdx similarity index 100% rename from docs/pages/configuration/profiles/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/basics.mdx diff --git a/docs/pages/configuration/profiles/merge.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/merge.mdx similarity index 100% rename from docs/pages/configuration/profiles/merge.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/merge.mdx diff --git a/docs/pages/configuration/profiles/parents.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/parents.mdx similarity index 100% rename from docs/pages/configuration/profiles/parents.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/parents.mdx diff --git a/docs/pages/configuration/profiles/patches.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/patches.mdx similarity index 100% rename from docs/pages/configuration/profiles/patches.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/patches.mdx diff --git a/docs/pages/configuration/profiles/replace.mdx b/docs/versioned_docs/version-5.x/configuration/profiles/replace.mdx similarity index 100% rename from docs/pages/configuration/profiles/replace.mdx rename to docs/versioned_docs/version-5.x/configuration/profiles/replace.mdx diff --git a/docs/pages/configuration/pullSecrets/basics.mdx b/docs/versioned_docs/version-5.x/configuration/pullSecrets/basics.mdx similarity index 100% rename from docs/pages/configuration/pullSecrets/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/pullSecrets/basics.mdx diff --git a/docs/versioned_docs/version-5.18/configuration/reference.mdx b/docs/versioned_docs/version-5.x/configuration/reference.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/configuration/reference.mdx rename to docs/versioned_docs/version-5.x/configuration/reference.mdx diff --git a/docs/pages/configuration/require/basics.mdx b/docs/versioned_docs/version-5.x/configuration/require/basics.mdx similarity index 100% rename from docs/pages/configuration/require/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/require/basics.mdx diff --git a/docs/pages/configuration/variables/basics.mdx b/docs/versioned_docs/version-5.x/configuration/variables/basics.mdx similarity index 100% rename from docs/pages/configuration/variables/basics.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/basics.mdx diff --git a/docs/pages/configuration/variables/predefined-variables.mdx b/docs/versioned_docs/version-5.x/configuration/variables/predefined-variables.mdx similarity index 100% rename from docs/pages/configuration/variables/predefined-variables.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/predefined-variables.mdx diff --git a/docs/pages/configuration/variables/runtime-variables.mdx b/docs/versioned_docs/version-5.x/configuration/variables/runtime-variables.mdx similarity index 100% rename from docs/pages/configuration/variables/runtime-variables.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/runtime-variables.mdx diff --git a/docs/pages/configuration/variables/source-command.mdx b/docs/versioned_docs/version-5.x/configuration/variables/source-command.mdx similarity index 100% rename from docs/pages/configuration/variables/source-command.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/source-command.mdx diff --git a/docs/pages/configuration/variables/source-env.mdx b/docs/versioned_docs/version-5.x/configuration/variables/source-env.mdx similarity index 100% rename from docs/pages/configuration/variables/source-env.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/source-env.mdx diff --git a/docs/pages/configuration/variables/source-input.mdx b/docs/versioned_docs/version-5.x/configuration/variables/source-input.mdx similarity index 100% rename from docs/pages/configuration/variables/source-input.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/source-input.mdx diff --git a/docs/pages/configuration/variables/source-none.mdx b/docs/versioned_docs/version-5.x/configuration/variables/source-none.mdx similarity index 100% rename from docs/pages/configuration/variables/source-none.mdx rename to docs/versioned_docs/version-5.x/configuration/variables/source-none.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/build-option-buildArgs.mdx b/docs/versioned_docs/version-5.x/fragments/build-option-buildArgs.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/build-option-buildArgs.mdx rename to docs/versioned_docs/version-5.x/fragments/build-option-buildArgs.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/build-option-network.mdx b/docs/versioned_docs/version-5.x/fragments/build-option-network.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/build-option-network.mdx rename to docs/versioned_docs/version-5.x/fragments/build-option-network.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/build-option-target.mdx b/docs/versioned_docs/version-5.x/fragments/build-option-target.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/build-option-target.mdx rename to docs/versioned_docs/version-5.x/fragments/build-option-target.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/choose-project.mdx b/docs/versioned_docs/version-5.x/fragments/choose-project.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/choose-project.mdx rename to docs/versioned_docs/version-5.x/fragments/choose-project.mdx diff --git a/docs/versioned_docs/version-5.16/fragments/config-commands.mdx b/docs/versioned_docs/version-5.x/fragments/config-commands.mdx similarity index 100% rename from docs/versioned_docs/version-5.16/fragments/config-commands.mdx rename to docs/versioned_docs/version-5.x/fragments/config-commands.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/config-dependencies.mdx b/docs/versioned_docs/version-5.x/fragments/config-dependencies.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/config-dependencies.mdx rename to docs/versioned_docs/version-5.x/fragments/config-dependencies.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/config-deployments.mdx b/docs/versioned_docs/version-5.x/fragments/config-deployments.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/config-deployments.mdx rename to docs/versioned_docs/version-5.x/fragments/config-deployments.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/config-dev.mdx b/docs/versioned_docs/version-5.x/fragments/config-dev.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/config-dev.mdx rename to docs/versioned_docs/version-5.x/fragments/config-dev.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/config-hooks.mdx b/docs/versioned_docs/version-5.x/fragments/config-hooks.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/config-hooks.mdx rename to docs/versioned_docs/version-5.x/fragments/config-hooks.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/config-images.mdx b/docs/versioned_docs/version-5.x/fragments/config-images.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/config-images.mdx rename to docs/versioned_docs/version-5.x/fragments/config-images.mdx diff --git a/docs/versioned_docs/version-5.16/fragments/config-profiles.mdx b/docs/versioned_docs/version-5.x/fragments/config-profiles.mdx similarity index 100% rename from docs/versioned_docs/version-5.16/fragments/config-profiles.mdx rename to docs/versioned_docs/version-5.x/fragments/config-profiles.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/config-vars.mdx b/docs/versioned_docs/version-5.x/fragments/config-vars.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/config-vars.mdx rename to docs/versioned_docs/version-5.x/fragments/config-vars.mdx diff --git a/docs/versioned_docs/version-5.17/fragments/dependency-dev.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-dev.mdx similarity index 100% rename from docs/versioned_docs/version-5.17/fragments/dependency-dev.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-dev.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-ignoreDependencies.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-ignoreDependencies.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-ignoreDependencies.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-ignoreDependencies.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-name.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-name.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-name.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-name.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-namespace.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-namespace.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-namespace.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-namespace.mdx diff --git a/docs/versioned_docs/version-5.16/fragments/dependency-overwrite-vars.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-overwrite-vars.mdx similarity index 100% rename from docs/versioned_docs/version-5.16/fragments/dependency-overwrite-vars.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-overwrite-vars.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-profile.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-profile.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-profile.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-profile.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-skipBuild.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-skipBuild.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-skipBuild.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-skipBuild.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/dependency-vars.mdx b/docs/versioned_docs/version-5.x/fragments/dependency-vars.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/dependency-vars.mdx rename to docs/versioned_docs/version-5.x/fragments/dependency-vars.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/faq-image-context.mdx b/docs/versioned_docs/version-5.x/fragments/faq-image-context.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/faq-image-context.mdx rename to docs/versioned_docs/version-5.x/fragments/faq-image-context.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/info-component-chart.mdx b/docs/versioned_docs/version-5.x/fragments/info-component-chart.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/info-component-chart.mdx rename to docs/versioned_docs/version-5.x/fragments/info-component-chart.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/install-cli.mdx b/docs/versioned_docs/version-5.x/fragments/install-cli.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/install-cli.mdx rename to docs/versioned_docs/version-5.x/fragments/install-cli.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/kube-context.mdx b/docs/versioned_docs/version-5.x/fragments/kube-context.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/kube-context.mdx rename to docs/versioned_docs/version-5.x/fragments/kube-context.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/kubectl-kustomize.mdx b/docs/versioned_docs/version-5.x/fragments/kubectl-kustomize.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/kubectl-kustomize.mdx rename to docs/versioned_docs/version-5.x/fragments/kubectl-kustomize.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/kubectl-options-applyArgs.mdx b/docs/versioned_docs/version-5.x/fragments/kubectl-options-applyArgs.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/kubectl-options-applyArgs.mdx rename to docs/versioned_docs/version-5.x/fragments/kubectl-options-applyArgs.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/kubectl-options-cmdPath.mdx b/docs/versioned_docs/version-5.x/fragments/kubectl-options-cmdPath.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/kubectl-options-cmdPath.mdx rename to docs/versioned_docs/version-5.x/fragments/kubectl-options-cmdPath.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/kubectl-options-deleteArgs.mdx b/docs/versioned_docs/version-5.x/fragments/kubectl-options-deleteArgs.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/kubectl-options-deleteArgs.mdx rename to docs/versioned_docs/version-5.x/fragments/kubectl-options-deleteArgs.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/kubectl-replaceImageTags.mdx b/docs/versioned_docs/version-5.x/fragments/kubectl-replaceImageTags.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/kubectl-replaceImageTags.mdx rename to docs/versioned_docs/version-5.x/fragments/kubectl-replaceImageTags.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/note-create-space.mdx b/docs/versioned_docs/version-5.x/fragments/note-create-space.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/note-create-space.mdx rename to docs/versioned_docs/version-5.x/fragments/note-create-space.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/note-general-purpose-command.mdx b/docs/versioned_docs/version-5.x/fragments/note-general-purpose-command.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/note-general-purpose-command.mdx rename to docs/versioned_docs/version-5.x/fragments/note-general-purpose-command.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/profiles-apply-multiple.mdx b/docs/versioned_docs/version-5.x/fragments/profiles-apply-multiple.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/profiles-apply-multiple.mdx rename to docs/versioned_docs/version-5.x/fragments/profiles-apply-multiple.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/selector-image-selector.mdx b/docs/versioned_docs/version-5.x/fragments/selector-image-selector.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/selector-image-selector.mdx rename to docs/versioned_docs/version-5.x/fragments/selector-image-selector.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/selector-label-selector.mdx b/docs/versioned_docs/version-5.x/fragments/selector-label-selector.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/selector-label-selector.mdx rename to docs/versioned_docs/version-5.x/fragments/selector-label-selector.mdx diff --git a/docs/versioned_docs/version-5.16/fragments/start-app.mdx b/docs/versioned_docs/version-5.x/fragments/start-app.mdx similarity index 100% rename from docs/versioned_docs/version-5.16/fragments/start-app.mdx rename to docs/versioned_docs/version-5.x/fragments/start-app.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/tip-print-config.mdx b/docs/versioned_docs/version-5.x/fragments/tip-print-config.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/tip-print-config.mdx rename to docs/versioned_docs/version-5.x/fragments/tip-print-config.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/tip-use-namespace.mdx b/docs/versioned_docs/version-5.x/fragments/tip-use-namespace.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/tip-use-namespace.mdx rename to docs/versioned_docs/version-5.x/fragments/tip-use-namespace.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/vars-default.mdx b/docs/versioned_docs/version-5.x/fragments/vars-default.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/vars-default.mdx rename to docs/versioned_docs/version-5.x/fragments/vars-default.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/vars-force-string.mdx b/docs/versioned_docs/version-5.x/fragments/vars-force-string.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/vars-force-string.mdx rename to docs/versioned_docs/version-5.x/fragments/vars-force-string.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/vars-name.mdx b/docs/versioned_docs/version-5.x/fragments/vars-name.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/vars-name.mdx rename to docs/versioned_docs/version-5.x/fragments/vars-name.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/warning-build-tool-priority.mdx b/docs/versioned_docs/version-5.x/fragments/warning-build-tool-priority.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/warning-build-tool-priority.mdx rename to docs/versioned_docs/version-5.x/fragments/warning-build-tool-priority.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/warning-multiple-dev.mdx b/docs/versioned_docs/version-5.x/fragments/warning-multiple-dev.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/warning-multiple-dev.mdx rename to docs/versioned_docs/version-5.x/fragments/warning-multiple-dev.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/workflow-build-images.mdx b/docs/versioned_docs/version-5.x/fragments/workflow-build-images.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/workflow-build-images.mdx rename to docs/versioned_docs/version-5.x/fragments/workflow-build-images.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/workflow-deploy-dependencies.mdx b/docs/versioned_docs/version-5.x/fragments/workflow-deploy-dependencies.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/workflow-deploy-dependencies.mdx rename to docs/versioned_docs/version-5.x/fragments/workflow-deploy-dependencies.mdx diff --git a/docs/versioned_docs/version-5.15/fragments/workflow-deploy-project.mdx b/docs/versioned_docs/version-5.x/fragments/workflow-deploy-project.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/fragments/workflow-deploy-project.mdx rename to docs/versioned_docs/version-5.x/fragments/workflow-deploy-project.mdx diff --git a/docs/versioned_docs/version-4.13/fragments/workflow-open-links.mdx b/docs/versioned_docs/version-5.x/fragments/workflow-open-links.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/fragments/workflow-open-links.mdx rename to docs/versioned_docs/version-5.x/fragments/workflow-open-links.mdx diff --git a/docs/versioned_docs/version-5.18/fragments/workflow-replace-tags.mdx b/docs/versioned_docs/version-5.x/fragments/workflow-replace-tags.mdx similarity index 100% rename from docs/versioned_docs/version-5.18/fragments/workflow-replace-tags.mdx rename to docs/versioned_docs/version-5.x/fragments/workflow-replace-tags.mdx diff --git a/docs/versioned_docs/version-5.15/getting-started/cleanup.mdx b/docs/versioned_docs/version-5.x/getting-started/cleanup.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/getting-started/cleanup.mdx rename to docs/versioned_docs/version-5.x/getting-started/cleanup.mdx diff --git a/docs/versioned_docs/version-5.x/getting-started/deployment.mdx b/docs/versioned_docs/version-5.x/getting-started/deployment.mdx new file mode 100644 index 0000000000..252a740fee --- /dev/null +++ b/docs/versioned_docs/version-5.x/getting-started/deployment.mdx @@ -0,0 +1,76 @@ +--- +title: Deployment with DevSpace +sidebar_label: 4. Deployment +--- + +import KubeContextFragment from '../fragments/kube-context.mdx'; + + +Once you are done with developing your application or you just want to test if it works even outside of development mode with your actual container image, you can start a clean deployment. + +
+ +
DevSpace CLI - Deployment
+
+ + +## Kube-Context & Namespace +For this clean deployment, you may want to switch to a different namespace or even to a different cluster to test your application in a cloud-powered cluster, for example. + + + + +## Deploy Project +Run the local deployment pipeline using this command: +```bash +devspace deploy -p production +``` + +
+ Deployment Workflow +
DevSpace CLI - Deployment Workflow
+
+ +Running `devspace deploy -p production` will do the following: + +1. **Build the Dockerfile(s)** specified in the [`images` section of the `devspace.yaml`](../configuration/images/basics.mdx) +2. **Tag** the resulting image(s) with an auto-generated tag according to a [customizable tag schema](../configuration/images/basics.mdx) +3. **Push** the resulting Docker images to the specified registries +4. **Create image pull secrets** in your Kubernetes namespace (optional, enabled by default) +5. **Deploy** everything that is defined within the [`deployments` section in the `devspace.yaml`](../configuration/deployments/basics.mdx) + +:::note Image Building Only +If you only want to build, tag and push all images but not deploy anything, run: +```bash +devspace build +``` +::: + + +
+ +## Understand Profiles +As shown earlier, DevSpace is by default configured to skip image building, for example. However, to fully test your containerized application you may want to create a fresh image and push this image to a registry. + +Profiles allow you to apply modifications to your `devspace.yaml` configuration for certain use cases or for different deployment targets (e.g. dev vs testing vs production). + +By default, `devspace init` adds a small example profile called `production` which only removes the `disabled: true` statement from our `images` section which in turn enables image building: +```yaml +profiles: +- name: production + patches: + - op: remove + path: images.app.build.disabled +``` + +You can print the config after a profile has been applied to see what the profile actually changes: +```bash +devspace print -p production +``` + +The flag `-p / --profile` is global, so we can also use them for other commands and define profiles that apply to different workflows for commands such as `devspace dev`: +```bash +devspace dev -p start-debugger +``` diff --git a/docs/versioned_docs/version-5.x/getting-started/development.mdx b/docs/versioned_docs/version-5.x/getting-started/development.mdx new file mode 100644 index 0000000000..b9e7eb4990 --- /dev/null +++ b/docs/versioned_docs/version-5.x/getting-started/development.mdx @@ -0,0 +1,90 @@ +--- +title: Development with DevSpace +sidebar_label: 3. Development +--- + +import KubeContextFragment from '../fragments/kube-context.mdx'; +import StartAppFragment from '../fragments/start-app.mdx'; +import FragmentWarningMultipleDev from '../fragments/warning-multiple-dev.mdx'; + +DevSpace allows you to develop applications directly inside a Kubernetes cluster. + +The biggest advantages of developing directly inside Kubernetes is that your dev environment will be very similar to your production environment and you can have much greater confidence that everything will work in production when shipping new features. + +
+ +
DevSpace - Development Mode
+
+ + +## Kube-Context & Namespace +To develop and deploy your project with DevSpace, you need a valid kube-context because DevSpace uses the kube-config file just like kubectl or helm. + + + + +## Start Development Mode +Run the following command to start the development mode: +```bash +devspace dev +``` + + +Running `devspace dev` will do the following: + +1. **Deploy** your application according to your [`deployments` section](../configuration/deployments/basics.mdx) +2. **Replace pods** according to your [`dev.replacePods` section](../configuration/development/replace-pods.mdx) +3. **Forward ports** specified in the [`dev.ports` section](../configuration/development/port-forwarding.mdx) +4. **Sync file changes** between your local project directory and the k8s pods according to the [`dev.sync` section](../configuration/development/file-synchronization.mdx) +5. **Open a terminal** according to the [`dev.terminal` section](../configuration/development/terminal.mdx), so you start your application and work inside your container + +Once the terminal session starts, run the command to start your application: + + + + + +
+ +## Workflows + +### 1. File Sync +While `devspace dev` is running, your source code files will be synchronized between your local project folder and your containers running inside Kubernetes. This allows you to code with your favorite IDE or text editor without having to rebuild your images or redeploy your containers. + +**Try it and just edit a file!** + + +### 2. DevSpace UI +When running `devspace dev`, DevSpace starts a client-only UI for Kubernetes. You can see that in the output of `devspace dev` which should contain a log line similar to this one: +```bash +######################################################### +[info] DevSpace UI available at: http://localhost:8090 +######################################################### +``` + +By default, DevSpace starts the development UI on port `8090` but if the port is already in use, it will use a different port. If `devspace dev` is running, you can open the link shown in the `devspace dev` logs, e.g. [http://localhost:8090](http://localhost:8090) + +You can also start the UI without running `devspace dev` using this command: +```bash +devspace ui +``` + +[Follow this guide to learn more about the functionalities of the DevSpace UI for Kubernetes development.](../guides/localhost-ui.mdx) + +
+ +
DevSpace - Development UI
+
+ +:::info Runs on Localhost +The UI of DevSpace is open-source just like the rest of the CLI and it runs entirely on localhost. +::: + + +## Notes + + diff --git a/docs/versioned_docs/version-5.15/getting-started/initialize-project.mdx b/docs/versioned_docs/version-5.x/getting-started/initialize-project.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/getting-started/initialize-project.mdx rename to docs/versioned_docs/version-5.x/getting-started/initialize-project.mdx diff --git a/docs/versioned_docs/version-5.15/getting-started/installation.mdx b/docs/versioned_docs/version-5.x/getting-started/installation.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/getting-started/installation.mdx rename to docs/versioned_docs/version-5.x/getting-started/installation.mdx diff --git a/docs/versioned_docs/version-5.15/getting-started/next-steps.mdx b/docs/versioned_docs/version-5.x/getting-started/next-steps.mdx similarity index 100% rename from docs/versioned_docs/version-5.15/getting-started/next-steps.mdx rename to docs/versioned_docs/version-5.x/getting-started/next-steps.mdx diff --git a/docs/pages/guides/basics.mdx b/docs/versioned_docs/version-5.x/guides/basics.mdx similarity index 100% rename from docs/pages/guides/basics.mdx rename to docs/versioned_docs/version-5.x/guides/basics.mdx diff --git a/docs/pages/guides/ci-cd-integration.mdx b/docs/versioned_docs/version-5.x/guides/ci-cd-integration.mdx similarity index 100% rename from docs/pages/guides/ci-cd-integration.mdx rename to docs/versioned_docs/version-5.x/guides/ci-cd-integration.mdx diff --git a/docs/versioned_docs/version-4.13/guides/community-projects.mdx b/docs/versioned_docs/version-5.x/guides/community-projects.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/community-projects.mdx rename to docs/versioned_docs/version-5.x/guides/community-projects.mdx diff --git a/docs/versioned_docs/version-4.13/guides/dev-staging-production.mdx b/docs/versioned_docs/version-5.x/guides/dev-staging-production.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/dev-staging-production.mdx rename to docs/versioned_docs/version-5.x/guides/dev-staging-production.mdx diff --git a/docs/pages/guides/file-synchronization.mdx b/docs/versioned_docs/version-5.x/guides/file-synchronization.mdx similarity index 100% rename from docs/pages/guides/file-synchronization.mdx rename to docs/versioned_docs/version-5.x/guides/file-synchronization.mdx diff --git a/docs/versioned_docs/version-4.13/guides/image-building.mdx b/docs/versioned_docs/version-5.x/guides/image-building.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/image-building.mdx rename to docs/versioned_docs/version-5.x/guides/image-building.mdx diff --git a/docs/versioned_docs/version-5.x/guides/localhost-ui.mdx b/docs/versioned_docs/version-5.x/guides/localhost-ui.mdx new file mode 100644 index 0000000000..98ac39ebae --- /dev/null +++ b/docs/versioned_docs/version-5.x/guides/localhost-ui.mdx @@ -0,0 +1,131 @@ +--- +title: DevSpace Localhost UI +sidebar_label: DevSpace UI +--- + +DevSpace provides a powerful client-only UI for Kubernetes development. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Overview
+
+ +## Open The UI +Running `devspace dev` will automatically start the UI in the background and then show a log output similar to this one: +```bash +######################################################### +[info] DevSpace UI available at: http://localhost:8090 +######################################################### +``` +By default, DevSpace starts the UI on port `8090` but it chooses a different port if the default port is already in use by another process. + +To access the UI started by `devspace dev`, just copy and paste the URL shown in the output of the command (see example above) into the address bar of your browser. + +Additionally, you can also start the UI using the following command: +```bash +devspace ui +``` + +:::info Use without Config +The advantage of `devspace ui` is that it does not require a `devspace.yaml` and can be run from anywhere no matter what your current working directory is. +::: + +:::note +If you run `devspace ui` while `devspace dev` is already running, the command will not start a second command and will rather open the existing UI started by the `devspace dev` command. +::: + +## Logs +The logs view is the central point for development. Here, you can find your pods and containers, stream logs, start interactive terminal sessions and more. + +### Inspecting Pods & Containers +The logs view allows you to: +- switch the kube-context and namespace +- list all containers (grouped by pods) in a namespace +- observe the status of all containers and detect issues +- view the YAML definition of each pod +- [stream the logs of a container](#stream-logs) +- [start interactive terminal sessions for a container](#start-terminals) + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Inspecting Pods & Containers
+
+ + +### Stream Logs +To stream the logs of a container, just click on the name of the container on the right-hand side of the logs view. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Streaming Container Logs
+
+ +If you want to stream the logs of all containers that `devspace dev` has deployed using an image that is specified in the `devspace.yaml` of your current project, click on "All deployed containers (merged logs)". This feature is only available when you start the UI via `devspace dev` or by running `devspace ui` within a project that contains a `devspace.yaml`. + +**To close the log stream**, click on the trash icon on the right upper corner of the log stream window. + +**To maximize the log stream**, click on the maximize icon on the right upper corner of the log stream window. + +:::info Last 100 Lines +The log stream prints the last 100 log lines and then starts streaming the logs in real-time. +::: + +:::note Streaming in the background +Once you start the log stream for a container, DevSpace will keep the streaming connection open even if you switch to the logs of another container. This will allow you to quickly switch between log streams without having to wait until the connection has to be re-established. +::: + + +### Start Terminals +To start an interactive terminal session for running commands inside a container, just click on the `>_` icon next to the container's name. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Starting Interactive Terminals
+
+ +The terminal session will stay open even if you click on a container name to stream the logs of this container. The `>_` icon will be highlighted using a blue color to indicate that the terminal session is still running. Click on the icon to resume the terminal session. + +**To close a terminal** using the kill command, click on the trash icon on the right upper corner of the terminal window. + +**To maximize a terminal**, click on the maximize icon on the right upper corner of the terminal window. + + +### Open / 1-Click Port-Forwarding +If you want to access an application running inside a container, you can click on the "Open" icon next to the container's name. After clicking on this icon, DevSpace will start a port-forwarding process between a randomly chosen local port and the application's port inside the container. After the port-forwarding connection is established, DevSpace will open the application on `localhost` using the randomly selected local port. + +:::info Service Required +This feature is only available for containers inside pods that are selected by the `labelSelector` of at least one service (i.e. the pod must be an endpoint of the service). +::: + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Open Applications in Containers (via 1-Click Port-Forwarding)
+
+ + +## Stack +If you open the stack view, DevSpace will show: +- the config that is currently loaded (in-memory, after applying [config patches defined in profiles](../configuration/profiles/basics.mdx) and after filling [config variables](../configuration/variables/basics.mdx)) +- the [config profile](../configuration/profiles/basics.mdx) that was used to load the config +- the [config variables](../configuration/variables/basics.mdx) available for this project + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Stack: Config, Profile, Variables
+
+ + +## Commands +DevSpace allows you to [define custom commands](../configuration/commands/basics.mdx) in your project's `devspace.yaml` which allows you to store and execute commonly used commands and share them with other developers. + +The localhost UI of DevSpace provides a view that shows all available commands defined in your project's `devspace.yaml`. You can view the commands definition and execute the command by clicking on the "Play" button. + +
+ DevSpace Localhost UI +
DevSpace Localhost UI - Open Containers (via 1-Click Port-Forwarding)
+
+ +Clicking the "Play" button for a command with name `my-command` is equivalent to running the following command in your terminal: +```bash +devspace run my-command +``` diff --git a/docs/versioned_docs/version-4.13/guides/networking-domains.mdx b/docs/versioned_docs/version-5.x/guides/networking-domains.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/networking-domains.mdx rename to docs/versioned_docs/version-5.x/guides/networking-domains.mdx diff --git a/docs/pages/guides/plugins.mdx b/docs/versioned_docs/version-5.x/guides/plugins.mdx similarity index 100% rename from docs/pages/guides/plugins.mdx rename to docs/versioned_docs/version-5.x/guides/plugins.mdx diff --git a/docs/versioned_docs/version-4.13/guides/remote-debugging.mdx b/docs/versioned_docs/version-5.x/guides/remote-debugging.mdx similarity index 100% rename from docs/versioned_docs/version-4.13/guides/remote-debugging.mdx rename to docs/versioned_docs/version-5.x/guides/remote-debugging.mdx diff --git a/docs/versioned_docs/version-5.x/introduction.mdx b/docs/versioned_docs/version-5.x/introduction.mdx new file mode 100644 index 0000000000..238dd4cdd0 --- /dev/null +++ b/docs/versioned_docs/version-5.x/introduction.mdx @@ -0,0 +1,56 @@ +--- +title: What is DevSpace? +sidebar_label: Introduction +--- + +DevSpace is a client-only, open-source developer tool for Kubernetes: +- **Build, test and debug applications directly inside Kubernetes** +- **Develop with hot reloading**: updates your running containers without rebuilding images or restarting containers +- **Unify deployment workflows** within your team and across dev, staging and production +- **Automate repetitive tasks** for image building and deployment + +## How does it work? +DevSpace runs as a single binary CLI tool directly on your computer and ideally, you use it straight from the terminal within your IDE. DevSpace does not require a server-side component as it communicates directly to your Kubernetes cluster using your kube-context, just like kubectl. + + + + +## Why DevSpace? +Building modern, distributed and highly scalable microservices with Kubernetes is hard - and it is even harder for large teams of developers. DevSpace is the next-generation tool for fast cloud-native software development. + + +### Declarative Workflows +DevSpace allows you to store all your workflows in one declarative config file: `devspace.yaml` +- **Codify workflow knowledge** about building images, deploying your project and its dependencies etc. +- **Version your workflows together with your code** (i.e. you can get any old version up and running with just a single command) +- **Share your workflows** with your team mates + + +### Made For Teams +DevSpace helps your team to standardize deployment and development workflows without requiring everyone on your team to become a Kubernetes expert. +- The DevOps and Kubernetes expert on your team can configure DevSpace using `devspace.yaml` and simply commits it via git +- If other developers on your team check out the project, they only need to run `devspace deploy` to deploy the project (including image building and deployment of other related project etc.) and they have a running instance of the project +- The configuration of DevSpace is highly dynamic, so you can configure everything using [config variables](configuration/variables/basics.mdx) that make it much easier to have one base configuration but still allow differences among developers (e.g. different sub-domains for testing) + + +### Hot Reloading +Instead of rebuilding images and redeploying containers, DevSpace allows you to **hot reload running containers while you are coding**: +- Simply edit your files with your IDE and see how your application reloads within the running container. +- The **high performance, bi-directional file synchronization** detects code changes immediately and synchronizes files immediately between your local dev environment and the containers running in Kubernetes +- Stream logs, connect debuggers or open a container terminal directly from your IDE with just a single command. + + +### Automation +Deploying and debugging services with Kubernetes requires a lot of knowledge and forces you to repeatedly run commands like `kubectl get pod` and copy pod ids back and forth. Stop wasting time and let DevSpace automate the tedious parts of working with Kubernetes: +- DevSpace lets you build multiple images in parallel, tag them automatically and deploy your entire application (including its dependencies) with just a single command +- Let DevSpace automatically start port-fowarding and log streaming, so you don't have to constantly copy and paste pod ids or run 10 commands to get everything started. + + +### Compatibility +DevSpace is battle tested with many Kubernetes distributions including: +- **Local Kubernetes clusters** like minikube, k3s, MikroK8s, kind +- **Managed Kubernetes clusters** in GKE (Google), EKS (AWS), AKS (Azure), DOKS (Digital Ocean) +- **Self-managed Kubernetes clusters** (e.g. created with Rancher) + +
+ diff --git a/docs/pages/quickstart.mdx b/docs/versioned_docs/version-5.x/quickstart.mdx similarity index 100% rename from docs/pages/quickstart.mdx rename to docs/versioned_docs/version-5.x/quickstart.mdx diff --git a/docs/versioned_sidebars/version-4.13-sidebars.json b/docs/versioned_sidebars/version-4.13-sidebars.json deleted file mode 100644 index da4b0f6b6c..0000000000 --- a/docs/versioned_sidebars/version-4.13-sidebars.json +++ /dev/null @@ -1,617 +0,0 @@ -{ - "version-4.13/adminSidebar": [ - { - "type": "doc", - "id": "version-4.13/introduction" - }, - { - "type": "category", - "label": "Getting Started", - "items": [ - { - "type": "doc", - "id": "version-4.13/getting-started/installation" - }, - { - "type": "doc", - "id": "version-4.13/getting-started/initialize-project" - }, - { - "type": "doc", - "id": "version-4.13/getting-started/development" - }, - { - "type": "doc", - "id": "version-4.13/getting-started/deployment" - }, - { - "type": "doc", - "id": "version-4.13/getting-started/next-steps" - } - ] - }, - { - "type": "category", - "label": "Configuration", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/reference" - }, - { - "type": "category", - "label": "images", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/images/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/image-tagging" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/dockerfile-context" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/entrypoint-cmd" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/append-dockerfile-instructions" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/inject-restart-helper" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/prefer-sync-over-rebuild" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/pull-secrets" - }, - { - "type": "category", - "label": "build", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/images/docker" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/kaniko" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/custom" - }, - { - "type": "doc", - "id": "version-4.13/configuration/images/disabled" - } - ] - } - ] - }, - { - "type": "category", - "label": "deployments", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/deployments/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/deployments/helm-charts" - }, - { - "type": "doc", - "id": "version-4.13/configuration/deployments/kubernetes-manifests" - }, - { - "type": "doc", - "id": "version-4.13/configuration/deployments/kustomizations" - } - ] - }, - { - "type": "category", - "label": "dev", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/development/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/open-links" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/port-forwarding" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/reverse-port-forwarding" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/file-synchronization" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/auto-reloading" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/log-streaming" - }, - { - "type": "doc", - "id": "version-4.13/configuration/development/interactive-mode" - } - ] - }, - { - "type": "category", - "label": "dependencies", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/dependencies/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/dependencies/git-repository" - }, - { - "type": "doc", - "id": "version-4.13/configuration/dependencies/local-folder" - } - ] - }, - { - "type": "category", - "label": "vars", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/variables/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/variables/source-env" - }, - { - "type": "doc", - "id": "version-4.13/configuration/variables/source-input" - }, - { - "type": "doc", - "id": "version-4.13/configuration/variables/source-none" - } - ] - }, - { - "type": "category", - "label": "profiles", - "items": [ - { - "type": "doc", - "id": "version-4.13/configuration/profiles/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/profiles/patches" - }, - { - "type": "doc", - "id": "version-4.13/configuration/profiles/replace" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/configuration/commands/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/hooks/basics" - }, - { - "type": "doc", - "id": "version-4.13/configuration/env-file" - } - ] - }, - { - "type": "category", - "label": "Guides & Best Practices", - "items": [ - { - "type": "doc", - "id": "version-4.13/guides/basics" - }, - { - "type": "doc", - "id": "version-4.13/guides/localhost-ui" - }, - { - "type": "doc", - "id": "version-4.13/guides/networking-domains" - }, - { - "type": "doc", - "id": "version-4.13/guides/file-synchronization" - }, - { - "type": "doc", - "id": "version-4.13/guides/interactive-mode" - }, - { - "type": "doc", - "id": "version-4.13/guides/ci-cd-integration" - }, - { - "type": "doc", - "id": "version-4.13/guides/dev-staging-production" - }, - { - "type": "doc", - "id": "version-4.13/guides/image-building" - }, - { - "type": "doc", - "id": "version-4.13/guides/remote-debugging" - }, - { - "type": "doc", - "id": "version-4.13/guides/community-projects" - } - ] - }, - { - "type": "category", - "label": "Tutorials", - "items": [ - { - "type": "link", - "label": "↗️ Ruby on Rails", - "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" - }, - { - "type": "link", - "label": "↗️ Python Django", - "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" - }, - { - "type": "link", - "label": "↗️ PHP Laravel", - "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" - }, - { - "type": "category", - "label": "↗️ Node / JavaScript", - "items": [ - { - "type": "link", - "label": "↗️ Express.js", - "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" - }, - { - "type": "link", - "label": "↗️ React.js", - "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" - }, - { - "type": "link", - "label": "↗️ Vue.js", - "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" - } - ] - } - ] - }, - { - "type": "category", - "label": "CLI Commands", - "items": [ - { - "type": "category", - "label": "devspace add", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_add_deployment" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_add_image" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_add_port" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_add_provider" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_add_sync" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_analyze" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_attach" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_build" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_cleanup_images" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_connect_cluster" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_create_space" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_deploy" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_dev" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_enter" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_init" - }, - { - "type": "category", - "label": "devspace list", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_clusters" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_commands" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_contexts" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_deployments" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_namespaces" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_ports" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_profiles" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_providers" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_spaces" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_sync" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_list_vars" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_login" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_logs" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_open" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_print" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_purge" - }, - { - "type": "category", - "label": "devspace remove", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_cluster" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_context" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_deployment" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_image" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_port" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_provider" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_space" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_remove_sync" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_render" - }, - { - "type": "category", - "label": "devspace reset", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_reset_dependencies" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_reset_key" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_reset_vars" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_run" - }, - { - "type": "category", - "label": "devspace set", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_set_analytics" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_set_encryptionkey" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_set_var" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_status_sync" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_sync" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_ui" - }, - { - "type": "category", - "label": "devspace update", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_update_config" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_update_dependencies" - } - ] - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_upgrade" - }, - { - "type": "category", - "label": "devspace use", - "items": [ - { - "type": "doc", - "id": "version-4.13/commands/devspace_use_context" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_use_namespace" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_use_profile" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_use_provider" - }, - { - "type": "doc", - "id": "version-4.13/commands/devspace_use_space" - } - ] - } - ] - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs/introduction" - }, - { - "type": "link", - "label": "↗️ loft", - "href": "https://loft.sh/docs/introduction" - }, - { - "type": "link", - "label": "↗️ DevSpace Cloud", - "href": "https://devspace.cloud/cloud/docs/introduction" - } - ] -} diff --git a/docs/versioned_sidebars/version-4.x-sidebars.json b/docs/versioned_sidebars/version-4.x-sidebars.json new file mode 100644 index 0000000000..9684bcd308 --- /dev/null +++ b/docs/versioned_sidebars/version-4.x-sidebars.json @@ -0,0 +1,617 @@ +{ + "version-4.x/adminSidebar": [ + { + "type": "doc", + "id": "version-4.x/introduction" + }, + { + "type": "category", + "label": "Getting Started", + "items": [ + { + "type": "doc", + "id": "version-4.x/getting-started/installation" + }, + { + "type": "doc", + "id": "version-4.x/getting-started/initialize-project" + }, + { + "type": "doc", + "id": "version-4.x/getting-started/development" + }, + { + "type": "doc", + "id": "version-4.x/getting-started/deployment" + }, + { + "type": "doc", + "id": "version-4.x/getting-started/next-steps" + } + ] + }, + { + "type": "category", + "label": "Configuration", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/reference" + }, + { + "type": "category", + "label": "images", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/images/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/image-tagging" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/dockerfile-context" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/entrypoint-cmd" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/append-dockerfile-instructions" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/inject-restart-helper" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/prefer-sync-over-rebuild" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/pull-secrets" + }, + { + "type": "category", + "label": "build", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/images/docker" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/kaniko" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/custom" + }, + { + "type": "doc", + "id": "version-4.x/configuration/images/disabled" + } + ] + } + ] + }, + { + "type": "category", + "label": "deployments", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/deployments/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/deployments/helm-charts" + }, + { + "type": "doc", + "id": "version-4.x/configuration/deployments/kubernetes-manifests" + }, + { + "type": "doc", + "id": "version-4.x/configuration/deployments/kustomizations" + } + ] + }, + { + "type": "category", + "label": "dev", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/development/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/open-links" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/port-forwarding" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/reverse-port-forwarding" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/file-synchronization" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/auto-reloading" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/log-streaming" + }, + { + "type": "doc", + "id": "version-4.x/configuration/development/interactive-mode" + } + ] + }, + { + "type": "category", + "label": "dependencies", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/dependencies/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/dependencies/git-repository" + }, + { + "type": "doc", + "id": "version-4.x/configuration/dependencies/local-folder" + } + ] + }, + { + "type": "category", + "label": "vars", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/variables/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/variables/source-env" + }, + { + "type": "doc", + "id": "version-4.x/configuration/variables/source-input" + }, + { + "type": "doc", + "id": "version-4.x/configuration/variables/source-none" + } + ] + }, + { + "type": "category", + "label": "profiles", + "items": [ + { + "type": "doc", + "id": "version-4.x/configuration/profiles/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/profiles/patches" + }, + { + "type": "doc", + "id": "version-4.x/configuration/profiles/replace" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/configuration/commands/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/hooks/basics" + }, + { + "type": "doc", + "id": "version-4.x/configuration/env-file" + } + ] + }, + { + "type": "category", + "label": "Guides & Best Practices", + "items": [ + { + "type": "doc", + "id": "version-4.x/guides/basics" + }, + { + "type": "doc", + "id": "version-4.x/guides/localhost-ui" + }, + { + "type": "doc", + "id": "version-4.x/guides/networking-domains" + }, + { + "type": "doc", + "id": "version-4.x/guides/file-synchronization" + }, + { + "type": "doc", + "id": "version-4.x/guides/interactive-mode" + }, + { + "type": "doc", + "id": "version-4.x/guides/ci-cd-integration" + }, + { + "type": "doc", + "id": "version-4.x/guides/dev-staging-production" + }, + { + "type": "doc", + "id": "version-4.x/guides/image-building" + }, + { + "type": "doc", + "id": "version-4.x/guides/remote-debugging" + }, + { + "type": "doc", + "id": "version-4.x/guides/community-projects" + } + ] + }, + { + "type": "category", + "label": "Tutorials", + "items": [ + { + "type": "link", + "label": "↗️ Ruby on Rails", + "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" + }, + { + "type": "link", + "label": "↗️ Python Django", + "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" + }, + { + "type": "link", + "label": "↗️ PHP Laravel", + "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" + }, + { + "type": "category", + "label": "↗️ Node / JavaScript", + "items": [ + { + "type": "link", + "label": "↗️ Express.js", + "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" + }, + { + "type": "link", + "label": "↗️ React.js", + "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" + }, + { + "type": "link", + "label": "↗️ Vue.js", + "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" + } + ] + } + ] + }, + { + "type": "category", + "label": "CLI Commands", + "items": [ + { + "type": "category", + "label": "devspace add", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_add_deployment" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_add_image" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_add_port" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_add_provider" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_add_sync" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_analyze" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_attach" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_build" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_cleanup_images" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_connect_cluster" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_create_space" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_deploy" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_dev" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_enter" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_init" + }, + { + "type": "category", + "label": "devspace list", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_clusters" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_commands" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_contexts" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_deployments" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_namespaces" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_ports" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_profiles" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_providers" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_spaces" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_sync" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_list_vars" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_login" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_logs" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_open" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_print" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_purge" + }, + { + "type": "category", + "label": "devspace remove", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_cluster" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_context" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_deployment" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_image" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_port" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_provider" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_space" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_remove_sync" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_render" + }, + { + "type": "category", + "label": "devspace reset", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_reset_dependencies" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_reset_key" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_reset_vars" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_run" + }, + { + "type": "category", + "label": "devspace set", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_set_analytics" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_set_encryptionkey" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_set_var" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_status_sync" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_sync" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_ui" + }, + { + "type": "category", + "label": "devspace update", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_update_config" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_update_dependencies" + } + ] + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_upgrade" + }, + { + "type": "category", + "label": "devspace use", + "items": [ + { + "type": "doc", + "id": "version-4.x/commands/devspace_use_context" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_use_namespace" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_use_profile" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_use_provider" + }, + { + "type": "doc", + "id": "version-4.x/commands/devspace_use_space" + } + ] + } + ] + }, + { + "type": "link", + "label": "↗️ Component Chart", + "href": "https://devspace.sh/component-chart/docs/introduction" + }, + { + "type": "link", + "label": "↗️ loft", + "href": "https://loft.sh/docs/introduction" + }, + { + "type": "link", + "label": "↗️ DevSpace Cloud", + "href": "https://devspace.cloud/cloud/docs/introduction" + } + ] +} diff --git a/docs/versioned_sidebars/version-5.15-sidebars.json b/docs/versioned_sidebars/version-5.15-sidebars.json deleted file mode 100644 index f267067aa8..0000000000 --- a/docs/versioned_sidebars/version-5.15-sidebars.json +++ /dev/null @@ -1,604 +0,0 @@ -{ - "version-5.15/adminSidebar": [ - { - "type": "doc", - "id": "version-5.15/introduction" - }, - { - "collapsed": false, - "type": "category", - "label": "Getting Started", - "items": [ - { - "type": "doc", - "id": "version-5.15/quickstart" - }, - { - "collapsed": true, - "type": "category", - "label": "Full Guide", - "items": [ - { - "type": "doc", - "id": "version-5.15/getting-started/installation" - }, - { - "type": "doc", - "id": "version-5.15/getting-started/initialize-project" - }, - { - "type": "doc", - "id": "version-5.15/getting-started/development" - }, - { - "type": "doc", - "id": "version-5.15/getting-started/deployment" - }, - { - "type": "doc", - "id": "version-5.15/getting-started/cleanup" - }, - { - "type": "doc", - "id": "version-5.15/getting-started/next-steps" - } - ] - } - ] - }, - { - "collapsed": false, - "type": "category", - "label": "Configuration", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/reference" - }, - { - "collapsed": true, - "type": "category", - "label": "images", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/images/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/image-tagging" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/dockerfile-context" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/entrypoint-cmd" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/append-dockerfile-instructions" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/inject-restart-helper" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/rebuild-strategy" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/pull-secrets" - }, - { - "collapsed": true, - "type": "category", - "label": "build", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/images/docker" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/buildkit" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/kaniko" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/custom" - }, - { - "type": "doc", - "id": "version-5.15/configuration/images/disabled" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "deployments", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/deployments/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/deployments/helm-charts" - }, - { - "type": "doc", - "id": "version-5.15/configuration/deployments/kubernetes-manifests" - }, - { - "type": "doc", - "id": "version-5.15/configuration/deployments/kustomizations" - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dev", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/development/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/port-forwarding" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/reverse-port-forwarding" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/open-links" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/terminal" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/log-streaming" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/replace-pods" - }, - { - "type": "doc", - "id": "version-5.15/configuration/development/auto-reloading" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dependencies", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/dependencies/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/dependencies/git-repository" - }, - { - "type": "doc", - "id": "version-5.15/configuration/dependencies/local-folder" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "vars", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/variables/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/variables/source-env" - }, - { - "type": "doc", - "id": "version-5.15/configuration/variables/source-input" - }, - { - "type": "doc", - "id": "version-5.15/configuration/variables/source-command" - }, - { - "type": "doc", - "id": "version-5.15/configuration/variables/source-none" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "profiles", - "items": [ - { - "type": "doc", - "id": "version-5.15/configuration/profiles/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/replace" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/merge" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/strategic-merge" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/patches" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/parents" - }, - { - "type": "doc", - "id": "version-5.15/configuration/profiles/activation" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/configuration/pullSecrets/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/commands/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/hooks/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/require/basics" - }, - { - "type": "doc", - "id": "version-5.15/configuration/env-file" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides & Best Practices", - "items": [ - { - "type": "doc", - "id": "version-5.15/guides/basics" - }, - { - "type": "doc", - "id": "version-5.15/guides/localhost-ui" - }, - { - "type": "doc", - "id": "version-5.15/guides/networking-domains" - }, - { - "type": "doc", - "id": "version-5.15/guides/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.15/guides/ci-cd-integration" - }, - { - "type": "doc", - "id": "version-5.15/guides/dev-staging-production" - }, - { - "type": "doc", - "id": "version-5.15/guides/image-building" - }, - { - "type": "doc", - "id": "version-5.15/guides/plugins" - }, - { - "type": "doc", - "id": "version-5.15/guides/remote-debugging" - }, - { - "type": "doc", - "id": "version-5.15/guides/community-projects" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Tutorials", - "items": [ - { - "type": "link", - "label": "Ruby on Rails", - "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" - }, - { - "type": "link", - "label": "Python Django", - "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" - }, - { - "type": "link", - "label": "PHP Laravel", - "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" - }, - { - "collapsed": true, - "type": "category", - "label": "Node / JavaScript", - "items": [ - { - "type": "link", - "label": "Express.js", - "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" - }, - { - "type": "link", - "label": "React.js", - "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" - }, - { - "type": "link", - "label": "Vue.js", - "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "CLI Commands", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "devspace add", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_add_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_analyze" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_attach" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_build" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_cleanup_images" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_deploy" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_dev" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_enter" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_init" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace list", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_commands" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_contexts" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_deployments" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_namespaces" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_plugins" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_ports" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_profiles" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_sync" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_list_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_logs" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_open" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_print" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_purge" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace remove", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_remove_context" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_remove_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_render" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace reset", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_reset_dependencies" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_reset_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_run" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace set", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_set_var" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_sync" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_ui" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace update", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_update_plugin" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_update_dependencies" - } - ] - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_upgrade" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace use", - "items": [ - { - "type": "doc", - "id": "version-5.15/commands/devspace_use_context" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_use_namespace" - }, - { - "type": "doc", - "id": "version-5.15/commands/devspace_use_profile" - } - ] - } - ] - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - }, - { - "type": "link", - "label": "↗️ Open-Source by Loft Labs", - "href": "https://loft.sh/" - } - ] -} diff --git a/docs/versioned_sidebars/version-5.16-sidebars.json b/docs/versioned_sidebars/version-5.16-sidebars.json deleted file mode 100644 index c0935e90cd..0000000000 --- a/docs/versioned_sidebars/version-5.16-sidebars.json +++ /dev/null @@ -1,604 +0,0 @@ -{ - "version-5.16/adminSidebar": [ - { - "type": "doc", - "id": "version-5.16/introduction" - }, - { - "collapsed": false, - "type": "category", - "label": "Getting Started", - "items": [ - { - "type": "doc", - "id": "version-5.16/quickstart" - }, - { - "collapsed": true, - "type": "category", - "label": "Full Guide", - "items": [ - { - "type": "doc", - "id": "version-5.16/getting-started/installation" - }, - { - "type": "doc", - "id": "version-5.16/getting-started/initialize-project" - }, - { - "type": "doc", - "id": "version-5.16/getting-started/development" - }, - { - "type": "doc", - "id": "version-5.16/getting-started/deployment" - }, - { - "type": "doc", - "id": "version-5.16/getting-started/cleanup" - }, - { - "type": "doc", - "id": "version-5.16/getting-started/next-steps" - } - ] - } - ] - }, - { - "collapsed": false, - "type": "category", - "label": "Configuration", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/reference" - }, - { - "collapsed": true, - "type": "category", - "label": "images", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/images/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/image-tagging" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/dockerfile-context" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/entrypoint-cmd" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/append-dockerfile-instructions" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/inject-restart-helper" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/rebuild-strategy" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/pull-secrets" - }, - { - "collapsed": true, - "type": "category", - "label": "build", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/images/docker" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/buildkit" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/kaniko" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/custom" - }, - { - "type": "doc", - "id": "version-5.16/configuration/images/disabled" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "deployments", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/deployments/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/deployments/helm-charts" - }, - { - "type": "doc", - "id": "version-5.16/configuration/deployments/kubernetes-manifests" - }, - { - "type": "doc", - "id": "version-5.16/configuration/deployments/kustomizations" - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dev", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/development/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/port-forwarding" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/reverse-port-forwarding" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/open-links" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/terminal" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/log-streaming" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/replace-pods" - }, - { - "type": "doc", - "id": "version-5.16/configuration/development/auto-reloading" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dependencies", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/dependencies/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/dependencies/git-repository" - }, - { - "type": "doc", - "id": "version-5.16/configuration/dependencies/local-folder" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "vars", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/variables/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/variables/source-env" - }, - { - "type": "doc", - "id": "version-5.16/configuration/variables/source-input" - }, - { - "type": "doc", - "id": "version-5.16/configuration/variables/source-command" - }, - { - "type": "doc", - "id": "version-5.16/configuration/variables/source-none" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "profiles", - "items": [ - { - "type": "doc", - "id": "version-5.16/configuration/profiles/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/profiles/replace" - }, - { - "type": "doc", - "id": "version-5.16/configuration/profiles/merge" - }, - { - "type": "doc", - "id": "version-5.16/configuration/profiles/patches" - }, - { - "type": "doc", - "id": "version-5.16/configuration/profiles/parents" - }, - { - "type": "doc", - "id": "version-5.16/configuration/profiles/activation" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/configuration/pullSecrets/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/commands/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/hooks/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/require/basics" - }, - { - "type": "doc", - "id": "version-5.16/configuration/expressions" - }, - { - "type": "doc", - "id": "version-5.16/configuration/env-file" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides & Best Practices", - "items": [ - { - "type": "doc", - "id": "version-5.16/guides/basics" - }, - { - "type": "doc", - "id": "version-5.16/guides/localhost-ui" - }, - { - "type": "doc", - "id": "version-5.16/guides/networking-domains" - }, - { - "type": "doc", - "id": "version-5.16/guides/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.16/guides/ci-cd-integration" - }, - { - "type": "doc", - "id": "version-5.16/guides/dev-staging-production" - }, - { - "type": "doc", - "id": "version-5.16/guides/image-building" - }, - { - "type": "doc", - "id": "version-5.16/guides/plugins" - }, - { - "type": "doc", - "id": "version-5.16/guides/remote-debugging" - }, - { - "type": "doc", - "id": "version-5.16/guides/community-projects" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Tutorials", - "items": [ - { - "type": "link", - "label": "Ruby on Rails", - "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" - }, - { - "type": "link", - "label": "Python Django", - "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" - }, - { - "type": "link", - "label": "PHP Laravel", - "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" - }, - { - "collapsed": true, - "type": "category", - "label": "Node / JavaScript", - "items": [ - { - "type": "link", - "label": "Express.js", - "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" - }, - { - "type": "link", - "label": "React.js", - "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" - }, - { - "type": "link", - "label": "Vue.js", - "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "CLI Commands", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "devspace add", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_add_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_analyze" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_attach" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_build" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_cleanup_images" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_deploy" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_dev" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_enter" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_init" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace list", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_commands" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_contexts" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_deployments" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_namespaces" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_plugins" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_ports" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_profiles" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_sync" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_list_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_logs" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_open" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_print" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_purge" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace remove", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_remove_context" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_remove_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_render" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace reset", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_reset_dependencies" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_reset_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_run" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace set", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_set_var" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_sync" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_ui" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace update", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_update_plugin" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_update_dependencies" - } - ] - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_upgrade" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace use", - "items": [ - { - "type": "doc", - "id": "version-5.16/commands/devspace_use_context" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_use_namespace" - }, - { - "type": "doc", - "id": "version-5.16/commands/devspace_use_profile" - } - ] - } - ] - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - }, - { - "type": "link", - "label": "↗️ Open-Source by Loft Labs", - "href": "https://loft.sh/" - } - ] -} diff --git a/docs/versioned_sidebars/version-5.17-sidebars.json b/docs/versioned_sidebars/version-5.17-sidebars.json deleted file mode 100644 index 1614e3f4c0..0000000000 --- a/docs/versioned_sidebars/version-5.17-sidebars.json +++ /dev/null @@ -1,604 +0,0 @@ -{ - "version-5.17/adminSidebar": [ - { - "type": "doc", - "id": "version-5.17/introduction" - }, - { - "collapsed": false, - "type": "category", - "label": "Getting Started", - "items": [ - { - "type": "doc", - "id": "version-5.17/quickstart" - }, - { - "collapsed": true, - "type": "category", - "label": "Full Guide", - "items": [ - { - "type": "doc", - "id": "version-5.17/getting-started/installation" - }, - { - "type": "doc", - "id": "version-5.17/getting-started/initialize-project" - }, - { - "type": "doc", - "id": "version-5.17/getting-started/development" - }, - { - "type": "doc", - "id": "version-5.17/getting-started/deployment" - }, - { - "type": "doc", - "id": "version-5.17/getting-started/cleanup" - }, - { - "type": "doc", - "id": "version-5.17/getting-started/next-steps" - } - ] - } - ] - }, - { - "collapsed": false, - "type": "category", - "label": "Configuration", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/reference" - }, - { - "collapsed": true, - "type": "category", - "label": "images", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/images/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/image-tagging" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/dockerfile-context" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/entrypoint-cmd" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/append-dockerfile-instructions" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/inject-restart-helper" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/rebuild-strategy" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/pull-secrets" - }, - { - "collapsed": true, - "type": "category", - "label": "build", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/images/docker" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/buildkit" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/kaniko" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/custom" - }, - { - "type": "doc", - "id": "version-5.17/configuration/images/disabled" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "deployments", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/deployments/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/deployments/helm-charts" - }, - { - "type": "doc", - "id": "version-5.17/configuration/deployments/kubernetes-manifests" - }, - { - "type": "doc", - "id": "version-5.17/configuration/deployments/kustomizations" - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dev", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/development/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/port-forwarding" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/reverse-port-forwarding" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/open-links" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/terminal" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/log-streaming" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/replace-pods" - }, - { - "type": "doc", - "id": "version-5.17/configuration/development/auto-reloading" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dependencies", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/dependencies/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/dependencies/git-repository" - }, - { - "type": "doc", - "id": "version-5.17/configuration/dependencies/local-folder" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "vars", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/variables/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/variables/source-env" - }, - { - "type": "doc", - "id": "version-5.17/configuration/variables/source-input" - }, - { - "type": "doc", - "id": "version-5.17/configuration/variables/source-command" - }, - { - "type": "doc", - "id": "version-5.17/configuration/variables/source-none" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "profiles", - "items": [ - { - "type": "doc", - "id": "version-5.17/configuration/profiles/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/profiles/replace" - }, - { - "type": "doc", - "id": "version-5.17/configuration/profiles/merge" - }, - { - "type": "doc", - "id": "version-5.17/configuration/profiles/patches" - }, - { - "type": "doc", - "id": "version-5.17/configuration/profiles/parents" - }, - { - "type": "doc", - "id": "version-5.17/configuration/profiles/activation" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/configuration/pullSecrets/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/commands/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/hooks/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/require/basics" - }, - { - "type": "doc", - "id": "version-5.17/configuration/expressions" - }, - { - "type": "doc", - "id": "version-5.17/configuration/env-file" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides & Best Practices", - "items": [ - { - "type": "doc", - "id": "version-5.17/guides/basics" - }, - { - "type": "doc", - "id": "version-5.17/guides/localhost-ui" - }, - { - "type": "doc", - "id": "version-5.17/guides/networking-domains" - }, - { - "type": "doc", - "id": "version-5.17/guides/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.17/guides/ci-cd-integration" - }, - { - "type": "doc", - "id": "version-5.17/guides/dev-staging-production" - }, - { - "type": "doc", - "id": "version-5.17/guides/image-building" - }, - { - "type": "doc", - "id": "version-5.17/guides/plugins" - }, - { - "type": "doc", - "id": "version-5.17/guides/remote-debugging" - }, - { - "type": "doc", - "id": "version-5.17/guides/community-projects" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Tutorials", - "items": [ - { - "type": "link", - "label": "Ruby on Rails", - "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" - }, - { - "type": "link", - "label": "Python Django", - "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" - }, - { - "type": "link", - "label": "PHP Laravel", - "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" - }, - { - "collapsed": true, - "type": "category", - "label": "Node / JavaScript", - "items": [ - { - "type": "link", - "label": "Express.js", - "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" - }, - { - "type": "link", - "label": "React.js", - "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" - }, - { - "type": "link", - "label": "Vue.js", - "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "CLI Commands", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "devspace add", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_add_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_analyze" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_attach" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_build" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_cleanup_images" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_deploy" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_dev" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_enter" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_init" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace list", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_commands" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_contexts" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_deployments" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_namespaces" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_plugins" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_ports" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_profiles" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_sync" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_list_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_logs" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_open" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_print" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_purge" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace remove", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_remove_context" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_remove_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_render" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace reset", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_reset_dependencies" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_reset_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_run" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace set", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_set_var" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_sync" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_ui" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace update", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_update_plugin" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_update_dependencies" - } - ] - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_upgrade" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace use", - "items": [ - { - "type": "doc", - "id": "version-5.17/commands/devspace_use_context" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_use_namespace" - }, - { - "type": "doc", - "id": "version-5.17/commands/devspace_use_profile" - } - ] - } - ] - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - }, - { - "type": "link", - "label": "↗️ Open-Source by Loft Labs", - "href": "https://loft.sh/" - } - ] -} diff --git a/docs/versioned_sidebars/version-5.18-sidebars.json b/docs/versioned_sidebars/version-5.18-sidebars.json deleted file mode 100644 index 2c7954bb88..0000000000 --- a/docs/versioned_sidebars/version-5.18-sidebars.json +++ /dev/null @@ -1,612 +0,0 @@ -{ - "version-5.18/adminSidebar": [ - { - "type": "doc", - "id": "version-5.18/introduction" - }, - { - "collapsed": false, - "type": "category", - "label": "Getting Started", - "items": [ - { - "type": "doc", - "id": "version-5.18/quickstart" - }, - { - "collapsed": true, - "type": "category", - "label": "Full Guide", - "items": [ - { - "type": "doc", - "id": "version-5.18/getting-started/installation" - }, - { - "type": "doc", - "id": "version-5.18/getting-started/initialize-project" - }, - { - "type": "doc", - "id": "version-5.18/getting-started/development" - }, - { - "type": "doc", - "id": "version-5.18/getting-started/deployment" - }, - { - "type": "doc", - "id": "version-5.18/getting-started/cleanup" - }, - { - "type": "doc", - "id": "version-5.18/getting-started/next-steps" - } - ] - } - ] - }, - { - "collapsed": false, - "type": "category", - "label": "Configuration", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/reference" - }, - { - "collapsed": true, - "type": "category", - "label": "images", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/images/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/image-tagging" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/dockerfile-context" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/entrypoint-cmd" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/append-dockerfile-instructions" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/inject-restart-helper" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/rebuild-strategy" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/pull-secrets" - }, - { - "collapsed": true, - "type": "category", - "label": "build", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/images/docker" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/buildkit" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/kaniko" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/custom" - }, - { - "type": "doc", - "id": "version-5.18/configuration/images/disabled" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "deployments", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/deployments/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/deployments/helm-charts" - }, - { - "type": "doc", - "id": "version-5.18/configuration/deployments/kubernetes-manifests" - }, - { - "type": "doc", - "id": "version-5.18/configuration/deployments/kustomizations" - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dev", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/development/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/port-forwarding" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/reverse-port-forwarding" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/open-links" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/terminal" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/log-streaming" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/replace-pods" - }, - { - "type": "doc", - "id": "version-5.18/configuration/development/auto-reloading" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "dependencies", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/dependencies/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/dependencies/git-repository" - }, - { - "type": "doc", - "id": "version-5.18/configuration/dependencies/local-folder" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "vars", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/variables/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/source-env" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/source-input" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/source-command" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/source-none" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/predefined-variables" - }, - { - "type": "doc", - "id": "version-5.18/configuration/variables/runtime-variables" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "profiles", - "items": [ - { - "type": "doc", - "id": "version-5.18/configuration/profiles/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/profiles/replace" - }, - { - "type": "doc", - "id": "version-5.18/configuration/profiles/merge" - }, - { - "type": "doc", - "id": "version-5.18/configuration/profiles/patches" - }, - { - "type": "doc", - "id": "version-5.18/configuration/profiles/parents" - }, - { - "type": "doc", - "id": "version-5.18/configuration/profiles/activation" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/configuration/pullSecrets/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/commands/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/hooks/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/require/basics" - }, - { - "type": "doc", - "id": "version-5.18/configuration/expressions" - }, - { - "type": "doc", - "id": "version-5.18/configuration/env-file" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Guides & Best Practices", - "items": [ - { - "type": "doc", - "id": "version-5.18/guides/basics" - }, - { - "type": "doc", - "id": "version-5.18/guides/localhost-ui" - }, - { - "type": "doc", - "id": "version-5.18/guides/networking-domains" - }, - { - "type": "doc", - "id": "version-5.18/guides/file-synchronization" - }, - { - "type": "doc", - "id": "version-5.18/guides/ci-cd-integration" - }, - { - "type": "doc", - "id": "version-5.18/guides/dev-staging-production" - }, - { - "type": "doc", - "id": "version-5.18/guides/image-building" - }, - { - "type": "doc", - "id": "version-5.18/guides/plugins" - }, - { - "type": "doc", - "id": "version-5.18/guides/remote-debugging" - }, - { - "type": "doc", - "id": "version-5.18/guides/community-projects" - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "Tutorials", - "items": [ - { - "type": "link", - "label": "Ruby on Rails", - "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" - }, - { - "type": "link", - "label": "Python Django", - "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" - }, - { - "type": "link", - "label": "PHP Laravel", - "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" - }, - { - "collapsed": true, - "type": "category", - "label": "Node / JavaScript", - "items": [ - { - "type": "link", - "label": "Express.js", - "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" - }, - { - "type": "link", - "label": "React.js", - "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" - }, - { - "type": "link", - "label": "Vue.js", - "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" - } - ] - } - ] - }, - { - "collapsed": true, - "type": "category", - "label": "CLI Commands", - "items": [ - { - "collapsed": true, - "type": "category", - "label": "devspace add", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_add_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_analyze" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_attach" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_build" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_cleanup_images" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_deploy" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_dev" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_enter" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_init" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace list", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_commands" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_contexts" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_deployments" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_namespaces" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_plugins" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_ports" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_profiles" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_sync" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_list_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_logs" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_open" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_print" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_purge" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace remove", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_remove_context" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_remove_plugin" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_render" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace reset", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_reset_dependencies" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_reset_vars" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_run" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace set", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_set_var" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_sync" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_ui" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace update", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_update_plugin" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_update_dependencies" - } - ] - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_upgrade" - }, - { - "collapsed": true, - "type": "category", - "label": "devspace use", - "items": [ - { - "type": "doc", - "id": "version-5.18/commands/devspace_use_context" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_use_namespace" - }, - { - "type": "doc", - "id": "version-5.18/commands/devspace_use_profile" - } - ] - } - ] - }, - { - "type": "link", - "label": "↗️ Component Chart", - "href": "https://devspace.sh/component-chart/docs" - }, - { - "type": "link", - "label": "↗️ Open-Source by Loft Labs", - "href": "https://loft.sh/" - } - ] -} diff --git a/docs/versioned_sidebars/version-5.x-sidebars.json b/docs/versioned_sidebars/version-5.x-sidebars.json new file mode 100644 index 0000000000..615cd88d83 --- /dev/null +++ b/docs/versioned_sidebars/version-5.x-sidebars.json @@ -0,0 +1,612 @@ +{ + "version-5.x/adminSidebar": [ + { + "type": "doc", + "id": "version-5.x/introduction" + }, + { + "collapsed": false, + "type": "category", + "label": "Getting Started", + "items": [ + { + "type": "doc", + "id": "version-5.x/quickstart" + }, + { + "collapsed": true, + "type": "category", + "label": "Full Guide", + "items": [ + { + "type": "doc", + "id": "version-5.x/getting-started/installation" + }, + { + "type": "doc", + "id": "version-5.x/getting-started/initialize-project" + }, + { + "type": "doc", + "id": "version-5.x/getting-started/development" + }, + { + "type": "doc", + "id": "version-5.x/getting-started/deployment" + }, + { + "type": "doc", + "id": "version-5.x/getting-started/cleanup" + }, + { + "type": "doc", + "id": "version-5.x/getting-started/next-steps" + } + ] + } + ] + }, + { + "collapsed": false, + "type": "category", + "label": "Configuration", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/reference" + }, + { + "collapsed": true, + "type": "category", + "label": "images", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/images/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/image-tagging" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/dockerfile-context" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/entrypoint-cmd" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/append-dockerfile-instructions" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/inject-restart-helper" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/rebuild-strategy" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/pull-secrets" + }, + { + "collapsed": true, + "type": "category", + "label": "build", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/images/docker" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/buildkit" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/kaniko" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/custom" + }, + { + "type": "doc", + "id": "version-5.x/configuration/images/disabled" + } + ] + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "deployments", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/deployments/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/deployments/helm-charts" + }, + { + "type": "doc", + "id": "version-5.x/configuration/deployments/kubernetes-manifests" + }, + { + "type": "doc", + "id": "version-5.x/configuration/deployments/kustomizations" + }, + { + "type": "link", + "label": "↗️ Component Chart", + "href": "https://devspace.sh/component-chart/docs" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "dev", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/development/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/port-forwarding" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/reverse-port-forwarding" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/open-links" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/file-synchronization" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/terminal" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/log-streaming" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/replace-pods" + }, + { + "type": "doc", + "id": "version-5.x/configuration/development/auto-reloading" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "dependencies", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/dependencies/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/dependencies/git-repository" + }, + { + "type": "doc", + "id": "version-5.x/configuration/dependencies/local-folder" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "vars", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/variables/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/source-env" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/source-input" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/source-command" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/source-none" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/predefined-variables" + }, + { + "type": "doc", + "id": "version-5.x/configuration/variables/runtime-variables" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "profiles", + "items": [ + { + "type": "doc", + "id": "version-5.x/configuration/profiles/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/profiles/replace" + }, + { + "type": "doc", + "id": "version-5.x/configuration/profiles/merge" + }, + { + "type": "doc", + "id": "version-5.x/configuration/profiles/patches" + }, + { + "type": "doc", + "id": "version-5.x/configuration/profiles/parents" + }, + { + "type": "doc", + "id": "version-5.x/configuration/profiles/activation" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/configuration/pullSecrets/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/commands/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/hooks/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/require/basics" + }, + { + "type": "doc", + "id": "version-5.x/configuration/expressions" + }, + { + "type": "doc", + "id": "version-5.x/configuration/env-file" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "Guides & Best Practices", + "items": [ + { + "type": "doc", + "id": "version-5.x/guides/basics" + }, + { + "type": "doc", + "id": "version-5.x/guides/localhost-ui" + }, + { + "type": "doc", + "id": "version-5.x/guides/networking-domains" + }, + { + "type": "doc", + "id": "version-5.x/guides/file-synchronization" + }, + { + "type": "doc", + "id": "version-5.x/guides/ci-cd-integration" + }, + { + "type": "doc", + "id": "version-5.x/guides/dev-staging-production" + }, + { + "type": "doc", + "id": "version-5.x/guides/image-building" + }, + { + "type": "doc", + "id": "version-5.x/guides/plugins" + }, + { + "type": "doc", + "id": "version-5.x/guides/remote-debugging" + }, + { + "type": "doc", + "id": "version-5.x/guides/community-projects" + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "Tutorials", + "items": [ + { + "type": "link", + "label": "Ruby on Rails", + "href": "https://devspace.cloud/blog/2019/10/21/deploy-ruby-on-rails-to-kubernetes" + }, + { + "type": "link", + "label": "Python Django", + "href": "https://devspace.cloud/blog/2019/10/18/deploy-django-to-kubernetes" + }, + { + "type": "link", + "label": "PHP Laravel", + "href": "https://devspace.cloud/blog/2019/10/16/deploy-laravel-to-kubernetes" + }, + { + "collapsed": true, + "type": "category", + "label": "Node / JavaScript", + "items": [ + { + "type": "link", + "label": "Express.js", + "href": "https://devspace.cloud/blog/2019/10/15/deploy-express.js-server-to-kubernetes" + }, + { + "type": "link", + "label": "React.js", + "href": "https://devspace.cloud/blog/2019/03/07/deploy-react-js-to-kubernetes" + }, + { + "type": "link", + "label": "Vue.js", + "href": "https://devspace.cloud/blog/2019/09/30/deploy-vue-js-to-kubernetes" + } + ] + } + ] + }, + { + "collapsed": true, + "type": "category", + "label": "CLI Commands", + "items": [ + { + "collapsed": true, + "type": "category", + "label": "devspace add", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_add_plugin" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_analyze" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_attach" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_build" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_cleanup_images" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_deploy" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_dev" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_enter" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_init" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace list", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_commands" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_contexts" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_deployments" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_namespaces" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_plugins" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_ports" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_profiles" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_sync" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_list_vars" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_logs" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_open" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_print" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_purge" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace remove", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_remove_context" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_remove_plugin" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_render" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace reset", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_reset_dependencies" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_reset_vars" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_run" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace set", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_set_var" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_sync" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_ui" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace update", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_update_plugin" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_update_dependencies" + } + ] + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_upgrade" + }, + { + "collapsed": true, + "type": "category", + "label": "devspace use", + "items": [ + { + "type": "doc", + "id": "version-5.x/commands/devspace_use_context" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_use_namespace" + }, + { + "type": "doc", + "id": "version-5.x/commands/devspace_use_profile" + } + ] + } + ] + }, + { + "type": "link", + "label": "↗️ Component Chart", + "href": "https://devspace.sh/component-chart/docs" + }, + { + "type": "link", + "label": "↗️ Open-Source by Loft Labs", + "href": "https://loft.sh/" + } + ] +} diff --git a/docs/versions.json b/docs/versions.json index 713373e4ee..841d48c564 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,7 +1,4 @@ [ - "5.18", - "5.17", - "5.16", - "5.15", - "4.13" + "5.x", + "4.x" ] diff --git a/docs/yarn.lock b/docs/yarn.lock index 1ad7e6af30..ca046f85dc 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -2,154 +2,152 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.0.0-alpha.44": - version "1.0.0-alpha.44" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.0.0-alpha.44.tgz#e626dba45f5f3950d6beb0ab055395ef0f7e8bb2" - integrity sha512-2iMXthldMIDXtlbg9omRKLgg1bLo2ZzINAEqwhNjUeyj1ceEyL1ck6FY0VnJpf2LsjmNthHCz2BuFk+nYUeDNA== - dependencies: - "@algolia/autocomplete-shared" "1.0.0-alpha.44" +"@algolia/autocomplete-core@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37" + integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" -"@algolia/autocomplete-preset-algolia@1.0.0-alpha.44": - version "1.0.0-alpha.44" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.0.0-alpha.44.tgz#0ea0b255d0be10fbe262e281472dd6e4619b62ba" - integrity sha512-DCHwo5ovzg9k2ejUolGNTLFnIA7GpsrkbNJTy1sFbMnYfBmeK8egZPZnEl7lBTr27OaZu7IkWpTepLVSztZyng== - dependencies: - "@algolia/autocomplete-shared" "1.0.0-alpha.44" +"@algolia/autocomplete-preset-algolia@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca" + integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" -"@algolia/autocomplete-shared@1.0.0-alpha.44": - version "1.0.0-alpha.44" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.0.0-alpha.44.tgz#db13902ad1667e455711b77d08cae1a0feafaa48" - integrity sha512-2oQZPERYV+yNx/yoVWYjZZdOqsitJ5dfxXJjL18yczOXH6ujnsq+DTczSrX+RjzjQdVeJ1UAG053EJQF/FOiMg== +"@algolia/autocomplete-shared@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" + integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== + +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/cache-browser-local-storage@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.9.0.tgz#9adf95a143b71219b24fa2874de771b58109c9c2" - integrity sha512-H659baxPygLp1ed5Y+kko9nLhhTRtZ6v2k2cs2/WTErAd6XU+OrvTvsEedUprDYUve/t9NLg95Ka9TK8QEQk1w== - dependencies: - "@algolia/cache-common" "4.9.0" - -"@algolia/cache-common@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.9.0.tgz#ec63d71ec201d0d9eb9946bc58f10e430e982b7b" - integrity sha512-hBqkLEw1Y7oxEJEVmcdm/s/+KKlvCmSenlX5rrQts5qCNdhdS1QkCvHx8vgFF9J6uliP2TPs+umrrXc+aKsLPw== - -"@algolia/cache-in-memory@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.9.0.tgz#14287235b7eff46c0c3dae2f05e7816805948804" - integrity sha512-8q9z8tkIrgPenZl+aTc6MOQleLnanVy+Nsz7Uzga5r9Kb7xpqYKNI9rSJYyBzl7KRxock5v6AOUiFgi45eDnDg== - dependencies: - "@algolia/cache-common" "4.9.0" - -"@algolia/client-account@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.9.0.tgz#bf8c23d8c7ff9bfa08b480fa27f96cfb489f3263" - integrity sha512-u9cljyqUnlgHIKazeOA2R820pDZFReRVm3AObiGrxhdKVQ44ZOgAlN+NIqA+c19iFdpulzpkPKxU+Uavcky7JQ== - dependencies: - "@algolia/client-common" "4.9.0" - "@algolia/client-search" "4.9.0" - "@algolia/transporter" "4.9.0" - -"@algolia/client-analytics@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.9.0.tgz#4d559ffc9c644684fa152500178eafa1df21ba3d" - integrity sha512-5TafTR/uP9X4EpDOvBK1w4cgc3JpKeokPJqD37q46AH1IGI8UO5Gy1H5LxcGmPTIMdMnuSfiYgRJsyoEO1Co0A== - dependencies: - "@algolia/client-common" "4.9.0" - "@algolia/client-search" "4.9.0" - "@algolia/requester-common" "4.9.0" - "@algolia/transporter" "4.9.0" - -"@algolia/client-common@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.9.0.tgz#51f9cf66b99e4042647d344bb4dd1cd970de0f81" - integrity sha512-Rjk4XMXi6B63jdKQwnGbKwIubB5QIgok+k67QwrgadbqVphHueJ3af3D6i3sRcKBBTmdprFAXn0zX/zaxYBhAQ== - dependencies: - "@algolia/requester-common" "4.9.0" - "@algolia/transporter" "4.9.0" - -"@algolia/client-recommendation@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/client-recommendation/-/client-recommendation-4.9.0.tgz#24992ff450d82fa982f8a3c9af7b043532cfa64b" - integrity sha512-6y6uyQmmowuBqMkk4iLeBOkd1qtBpfGJ5/di0S041eHQlD0v9WxyhbZyOopn0XxopSLbQaO22u0rjEcla7KYlA== - dependencies: - "@algolia/client-common" "4.9.0" - "@algolia/requester-common" "4.9.0" - "@algolia/transporter" "4.9.0" - -"@algolia/client-search@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.9.0.tgz#806379940d08cb95f562d93e31c2f0478fc040a4" - integrity sha512-HFfeUJN6GPHsjfcchmksoqlBLF5gT+jRHmSait4fWtde85eGFyJVL7ubUZD9KjlEjzebmUPPIZ1ixcupaTUBnw== - dependencies: - "@algolia/client-common" "4.9.0" - "@algolia/requester-common" "4.9.0" - "@algolia/transporter" "4.9.0" - -"@algolia/logger-common@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.9.0.tgz#488f23c0758ab0cd79f0fcbbd3691fb216a0b0dc" - integrity sha512-OU8lzR1I8R0Qsgk+u4GOSFpEEKZkzPYZP1OXsw92gejW08k5N6kVLzfvVvgNA1KAeZPFXADdH26VBQ/2M9wF3g== - -"@algolia/logger-console@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.9.0.tgz#fe6bdd316f163908617874fae9f61e3249ae23a2" - integrity sha512-CrBU+E2iA4xXnb1rwX3G1ox9O+N+OjxnWccL75sWr1nQ/kh08TPpV7TYAvQEOFEDj8vV1kPeYEMENulbjmVZSA== - dependencies: - "@algolia/logger-common" "4.9.0" - -"@algolia/requester-browser-xhr@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.9.0.tgz#ae4f39171f74ea3532f66cd39be777eaafe8147d" - integrity sha512-KJESXTv4z+mDCn1C9b/azUqPTgIFVL/Y4+Eopz6YBg9Lj0C6KQrsW68w0uLJcGSw9o/qBoKcpUo4QNm4/CwrdQ== - dependencies: - "@algolia/requester-common" "4.9.0" +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== -"@algolia/requester-common@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.9.0.tgz#e65d6fb08d239d86a0076ad32638fe2d8abedaf6" - integrity sha512-8/ljy4/pnB8d4/yTaJQa2t3oKdbsVq9nDXkwhCACVum8tGYSSGpCtpBGln6M4g+QdfBSQxYILTB1wwHLFUstmg== +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== + dependencies: + "@algolia/logger-common" "4.13.0" -"@algolia/requester-node-http@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.9.0.tgz#4cb7cf5b1f4228a3128ccb2700b790a6f81ec7e6" - integrity sha512-JpkjPXDCgT+Z8G8d/6hxId7+560HeCHoiDcEFr9eWR/kClAOgVwgVH1I64pmH8ucsjL7kdWbkxez7zBzPiV+Tg== +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== dependencies: - "@algolia/requester-common" "4.9.0" + "@algolia/requester-common" "4.13.0" + +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== -"@algolia/transporter@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.9.0.tgz#8d4cadcee1b848e3b7c3efbfb76f46c3a374afbb" - integrity sha512-GySLvXwg0DQ2LM0/W+hr9y1Co3QY1iNnhWA82gFhBrz7RWGzw47qEsh//9u/wnjl6S1WOjH+eKm5PaQATG1BXg== +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== dependencies: - "@algolia/cache-common" "4.9.0" - "@algolia/logger-common" "4.9.0" - "@algolia/requester-common" "4.9.0" + "@algolia/requester-common" "4.13.0" -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== dependencies: - "@babel/highlight" "^7.10.4" + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== dependencies: - "@babel/highlight" "^7.12.13" + "@jridgewell/trace-mapping" "^0.3.0" -"@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" - integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== "@babel/core@7.12.9": version "7.12.9" @@ -173,131 +171,86 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.12.16", "@babel/core@^7.12.3": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a" - integrity sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.16" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.13.14" - "@babel/helpers" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.16" +"@babel/core@^7.15.5", "@babel/core@^7.17.5": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14" - integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg== - dependencies: - "@babel/types" "^7.13.16" - jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/generator@^7.8.4", "@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== +"@babel/generator@^7.12.5", "@babel/generator@^7.17.3", "@babel/generator@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" + integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== dependencies: - "@babel/types" "^7.9.0" + "@babel/types" "^7.17.0" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.13.0": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" - integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -308,300 +261,260 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== dependencies: - "@babel/types" "^7.12.13" + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.13.0": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" - integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.16" + "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" - integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.13.12" + "@babel/types" "^7.17.0" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" - integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@babel/types" "^7.13.12" + "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": - version "7.13.14" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" - integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-simple-access" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.13" - "@babel/types" "^7.13.14" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.16.7" "@babel/helper-plugin-utils@7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@7.8.3", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" - integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.12" - -"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" - integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.12.5", "@babel/helpers@^7.13.16": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.17.tgz#b497c7a00e9719d5b613b8982bda6ed3ee94caf6" - integrity sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.17" - "@babel/types" "^7.13.17" - -"@babel/helpers@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.13", "@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" - integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== +"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" + integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== -"@babel/parser@^7.8.4", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" - integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz#80e549df273a3b3050431b148c892491df1bcc5b" - integrity sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-dynamic-import@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" - integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" - integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" - integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@7.12.1": @@ -613,65 +526,59 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - -"@babel/plugin-proposal-object-rest-spread@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.12.16", "@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" - integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-unicode-property-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -687,6 +594,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -715,19 +629,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -771,362 +678,367 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== +"@babel/plugin-syntax-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoping@^7.12.13": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz#a9c0f10794855c63b1d629914c7dcfeddd185892" - integrity sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-computed-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" -"@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" - integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" + integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz#0208b1d942bf939cd4f7aa5b255d42602aa4a920" - integrity sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ== +"@babel/plugin-transform-react-constant-elements@^7.14.5": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" + integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-display-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== +"@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-jsx-development@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" - integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== dependencies: - "@babel/plugin-transform-react-jsx" "^7.12.17" + "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" - integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== +"@babel/plugin-transform-react-jsx@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.13.12" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" -"@babel/plugin-transform-react-pure-annotations@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" - integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" - integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.12.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz#2eddf585dd066b84102517e10a577f24f76a9cd7" - integrity sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA== +"@babel/plugin-transform-runtime@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.2.0" - babel-plugin-polyfill-corejs3 "^0.2.0" - babel-plugin-polyfill-regenerator "^0.2.0" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-typescript@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" - integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-typescript" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.16": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f" - integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA== - dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-compilation-targets" "^7.13.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-async-generator-functions" "^7.13.15" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-dynamic-import" "^7.13.8" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.13.8" - "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -1136,51 +1048,52 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.13.0" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.13.0" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.13.15" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.14" - babel-plugin-polyfill-corejs2 "^0.2.0" - babel-plugin-polyfill-corejs3 "^0.2.0" - babel-plugin-polyfill-regenerator "^0.2.0" - core-js-compat "^3.9.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1188,519 +1101,523 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.13", "@babel/preset-react@^7.12.5": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" - integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-transform-react-display-name" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.13.12" - "@babel/plugin-transform-react-jsx-development" "^7.12.17" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-typescript@^7.12.16": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" - integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-transform-typescript" "^7.13.0" - -"@babel/runtime-corejs3@^7.12.13": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.13.17.tgz#9baf45f03d4d013f021760b992d6349a9d27deaf" - integrity sha512-RGXINY1YvduBlGrP+vHjJqd/nK7JVpfM4rmZLGMx77WoL3sMrhheA0qxii9VNn1VHnxJLEyxmvCB+Wqc+x/FMw== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + +"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" + +"@babel/runtime-corejs3@^7.17.2": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" + integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== + dependencies: + core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.17.tgz#8966d1fc9593bf848602f0662d6b4d0069e3a7ec" - integrity sha512-NCdgJEelPTSh+FEFylhnP1ylq848l1z9t9N0j1Lfbcw0+KXGjsTvUmkxy+voLLXB5SOKMbLLx4jxYliGrYQseA== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.2", "@babel/runtime@^7.8.4": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" + integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.12.13", "@babel/template@^7.12.7": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3" - integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.16" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.16" - "@babel/types" "^7.13.17" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.8.4", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" +"@babel/template@^7.12.7", "@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" - integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - to-fast-properties "^2.0.0" -"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== +"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@choojs/findup@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" - integrity sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw== - dependencies: - commander "^2.15.1" +"@braintree/sanitize-url@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz#8ff71d51053cd5ee4981e5a501d80a536244f7fd" + integrity sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg== -"@docsearch/css@3.0.0-alpha.36": - version "3.0.0-alpha.36" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.36.tgz#0af69a86b845974d0f8cab62db0218f66b6ad2d6" - integrity sha512-zSN2SXuZPDqQaSFzYa1kOwToukqzhLHG7c66iO+/PlmWb6/RZ5cjTkG6VCJynlohRWea7AqZKWS/ptm8kM2Dmg== +"@docsearch/css@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" + integrity sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA== -"@docsearch/react@^3.0.0-alpha.33": - version "3.0.0-alpha.36" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.36.tgz#f2dbd53ba9c389bc19aea89a3ad21782fa6b4bb5" - integrity sha512-synYZDHalvMzesFiy7kK+uoz4oTdWSTbe2cU+iiUjwFMyQ+WWjWwGVnvcvk+cjj9pRCVaZo5y5WpqNXq1j8k9Q== +"@docsearch/react@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0.tgz#d02ebdc67573412185a6a4df13bc254c7c0da491" + integrity sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg== dependencies: - "@algolia/autocomplete-core" "1.0.0-alpha.44" - "@algolia/autocomplete-preset-algolia" "1.0.0-alpha.44" - "@docsearch/css" "3.0.0-alpha.36" + "@algolia/autocomplete-core" "1.5.2" + "@algolia/autocomplete-preset-algolia" "1.5.2" + "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-alpha.73", "@docusaurus/core@^2.0.0-alpha.72": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-alpha.73.tgz#b00a4b3bee82bbe42535f5035d1f5767c1647207" - integrity sha512-gUF5UOcy/5XmPWFOpLdiilI+7FEEYtvunB62xnvwEp/SNRvoL9PAs9dI2mFaDkme1RmUtPMXKzPZxwlntFnA9A== +"@docusaurus/core@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" + integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== dependencies: - "@babel/core" "^7.12.16" - "@babel/generator" "^7.12.15" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13" - "@babel/plugin-proposal-optional-chaining" "^7.12.16" + "@babel/core" "^7.17.5" + "@babel/generator" "^7.17.3" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.12.15" - "@babel/preset-env" "^7.12.16" - "@babel/preset-react" "^7.12.13" - "@babel/preset-typescript" "^7.12.16" - "@babel/runtime" "^7.12.5" - "@babel/runtime-corejs3" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@docusaurus/cssnano-preset" "2.0.0-alpha.73" - "@docusaurus/react-loadable" "5.5.0" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - "@endiliey/static-site-generator-webpack-plugin" "^4.0.0" - "@svgr/webpack" "^5.5.0" - autoprefixer "^10.2.5" - babel-loader "^8.2.2" + "@babel/plugin-transform-runtime" "^7.17.0" + "@babel/preset-env" "^7.16.11" + "@babel/preset-react" "^7.16.7" + "@babel/preset-typescript" "^7.16.7" + "@babel/runtime" "^7.17.2" + "@babel/runtime-corejs3" "^7.17.2" + "@babel/traverse" "^7.17.3" + "@docusaurus/cssnano-preset" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + "@slorber/static-site-generator-webpack-plugin" "^4.0.1" + "@svgr/webpack" "^6.2.1" + autoprefixer "^10.4.2" + babel-loader "^8.2.3" babel-plugin-dynamic-import-node "2.3.0" - boxen "^5.0.0" - cache-loader "^4.1.0" - chalk "^4.1.0" - chokidar "^3.5.1" - clean-css "^5.1.1" + boxen "^6.2.1" + chokidar "^3.5.3" + clean-css "^5.2.4" + cli-table3 "^0.6.1" + combine-promises "^1.1.0" commander "^5.1.0" - copy-webpack-plugin "^6.4.1" - core-js "^3.9.1" - css-loader "^5.1.1" + copy-webpack-plugin "^10.2.4" + core-js "^3.21.1" + css-loader "^6.6.0" + css-minimizer-webpack-plugin "^3.4.1" + cssnano "^5.0.17" del "^6.0.0" detect-port "^1.3.0" - eta "^1.12.1" - express "^4.17.1" + escape-html "^1.0.3" + eta "^1.12.3" file-loader "^6.2.0" - fs-extra "^9.1.0" - github-slugger "^1.3.0" - globby "^11.0.2" - html-minifier-terser "^5.1.1" + fs-extra "^10.0.1" + html-minifier-terser "^6.1.0" html-tags "^3.1.0" - html-webpack-plugin "^4.5.0" + html-webpack-plugin "^5.5.0" import-fresh "^3.3.0" is-root "^2.1.0" leven "^3.1.0" - lodash "^4.17.20" - mini-css-extract-plugin "^0.8.0" - module-alias "^2.2.2" + lodash "^4.17.21" + mini-css-extract-plugin "^2.5.3" nprogress "^0.2.0" - null-loader "^4.0.0" - optimize-css-assets-webpack-plugin "^5.0.4" - pnp-webpack-plugin "^1.6.4" - postcss "^8.2.7" - postcss-loader "^4.1.0" - prompts "^2.4.0" - react-dev-utils "^11.0.1" - react-helmet "^6.1.0" - react-loadable "^5.5.0" - react-loadable-ssr-addon "^0.3.0" + postcss "^8.4.7" + postcss-loader "^6.2.1" + prompts "^2.4.2" + react-dev-utils "^12.0.0" + react-helmet-async "^1.2.3" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.2.0" react-router-config "^5.1.1" react-router-dom "^5.2.0" - resolve-pathname "^3.0.0" - rtl-detect "^1.0.2" + remark-admonitions "^1.2.1" + rtl-detect "^1.0.4" semver "^7.3.4" serve-handler "^6.1.3" - shelljs "^0.8.4" - std-env "^2.2.1" - terser-webpack-plugin "^4.1.0" - tslib "^2.1.0" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.1" + tslib "^2.3.1" update-notifier "^5.1.0" url-loader "^4.1.1" - wait-on "^5.2.1" - webpack "^4.44.1" - webpack-bundle-analyzer "^4.4.0" - webpack-dev-server "^3.11.2" - webpack-merge "^4.2.2" - webpackbar "^5.0.0-3" - -"@docusaurus/cssnano-preset@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-alpha.73.tgz#af3275376836c6f128efeae8bf7c69c60620098a" - integrity sha512-8DregwCCcKl5h3WAwK/NuTQ8BpXiKUnF8owVE4XAS7OnHXSobKfxz0wpF2Jzi0G8TdVfnZzPrXelnWWDL1mc3g== - dependencies: - cssnano-preset-advanced "^4.0.7" - postcss "^7.0.2" - postcss-sort-media-queries "^1.7.26" - -"@docusaurus/mdx-loader@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.73.tgz#9bc19d2bab547ac37c2b488cc1fd909dcdc7c940" - integrity sha512-cteoaLe8rFLULAjRy8iOyKwo9LBupu6VPEvQbjhrM23EWap15LD5b66MmfRsCS8ubTdB1i5uYTVhwg1j41Fxjw== - dependencies: - "@babel/parser" "^7.12.16" - "@babel/traverse" "^7.12.13" - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@mdx-js/mdx" "^1.6.21" - "@mdx-js/react" "^1.6.21" + wait-on "^6.0.1" + webpack "^5.69.1" + webpack-bundle-analyzer "^4.5.0" + webpack-dev-server "^4.7.4" + webpack-merge "^5.8.0" + webpackbar "^5.0.2" + +"@docusaurus/cssnano-preset@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" + integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== + dependencies: + cssnano-preset-advanced "^5.1.12" + postcss "^8.4.7" + postcss-sort-media-queries "^4.2.1" + +"@docusaurus/logger@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" + integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== + dependencies: + chalk "^4.1.2" + tslib "^2.3.1" + +"@docusaurus/mdx-loader@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" + integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== + dependencies: + "@babel/parser" "^7.17.3" + "@babel/traverse" "^7.17.3" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" - fs-extra "^9.1.0" - github-slugger "^1.3.0" - loader-utils "^2.0.0" + fs-extra "^10.0.1" + image-size "^1.0.1" mdast-util-to-string "^2.0.0" remark-emoji "^2.1.0" stringify-object "^3.3.0" + tslib "^2.3.1" unist-util-visit "^2.0.2" url-loader "^4.1.1" - webpack "^4.44.1" - -"@docusaurus/plugin-content-blog@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.73.tgz#3e297aebd271866e05d9a9fe65021b8e28a4137f" - integrity sha512-1G5lV+hIhZJPS+Z1/QWEVBB26MtTpgA3V9nMXrivet88LBi97X/O4auat4gzCd1ZAAAIssBqvjJZux3iYYuTZg== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/mdx-loader" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - chalk "^4.1.0" + webpack "^5.69.1" + +"@docusaurus/module-type-aliases@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" + integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== + dependencies: + "@docusaurus/types" "2.0.0-beta.17" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + +"@docusaurus/plugin-content-blog@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" + integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + cheerio "^1.0.0-rc.10" feed "^4.2.2" - fs-extra "^9.1.0" - globby "^11.0.2" - loader-utils "^1.2.3" - lodash "^4.17.20" - reading-time "^1.3.0" + fs-extra "^10.0.1" + lodash "^4.17.21" + reading-time "^1.5.0" remark-admonitions "^1.2.1" - tslib "^2.1.0" - webpack "^4.44.1" - -"@docusaurus/plugin-content-docs@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.73.tgz#dd7811adb1095b97fa416629bf67e4cba58cfa17" - integrity sha512-exMBKvTgJ//AazsXNYx/rSlIOt/8nMebOYNd0YMOrY1HNH3SFiTMln2nf6DhZlqDnC+e3DHxBV1mJJnZCef8xQ== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/mdx-loader" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - chalk "^4.1.0" + tslib "^2.3.1" + utility-types "^3.10.0" + webpack "^5.69.1" + +"@docusaurus/plugin-content-docs@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" + integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" combine-promises "^1.1.0" - execa "^5.0.0" - fs-extra "^9.1.0" - globby "^11.0.2" - import-fresh "^3.2.2" - js-yaml "^4.0.0" - loader-utils "^1.2.3" - lodash "^4.17.20" + fs-extra "^10.0.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + lodash "^4.17.21" remark-admonitions "^1.2.1" - shelljs "^0.8.4" - tslib "^2.1.0" + tslib "^2.3.1" utility-types "^3.10.0" - webpack "^4.44.1" - -"@docusaurus/plugin-content-pages@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.73.tgz#03c5964b3de4a09ec81fd271f47c2b6181efad45" - integrity sha512-/q9B+N3ICWlnI5mm58lMXhzWit7IP3ntY1snfy8qD98wEfWKLZwefdxnB1HI+qJXBQq5uQTWIe9lULaN/gbDzw== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/mdx-loader" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - globby "^11.0.2" - loader-utils "^1.2.3" - lodash "^4.17.20" - minimatch "^3.0.4" + webpack "^5.69.1" + +"@docusaurus/plugin-content-pages@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" + integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + fs-extra "^10.0.1" remark-admonitions "^1.2.1" - slash "^3.0.0" - tslib "^2.1.0" - webpack "^4.44.1" + tslib "^2.3.1" + webpack "^5.69.1" + +"@docusaurus/plugin-debug@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" + integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + fs-extra "^10.0.1" + react-json-view "^1.21.3" + tslib "^2.3.1" + +"@docusaurus/plugin-google-analytics@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" + integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + tslib "^2.3.1" + +"@docusaurus/plugin-google-gtag@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" + integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + tslib "^2.3.1" + +"@docusaurus/plugin-sitemap@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" + integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + fs-extra "^10.0.1" + sitemap "^7.1.1" + tslib "^2.3.1" + +"@docusaurus/preset-classic@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" + integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/plugin-debug" "2.0.0-beta.17" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" + "@docusaurus/plugin-sitemap" "2.0.0-beta.17" + "@docusaurus/theme-classic" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-search-algolia" "2.0.0-beta.17" + +"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" + integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== + dependencies: + "@types/react" "*" + prop-types "^15.6.2" -"@docusaurus/plugin-debug@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.73.tgz#0328d7c3d033cbf508e331efe3d1c6d3c740f924" - integrity sha512-EdovLNi8oxLFZDi/7lfLwfmgbaWFR/wOZqOYuyrHJto/TlqCCIOziX4dHYqUPHItbnwV1PGGR49DUrqyNYuLBQ== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - react-json-view "^1.21.1" - tslib "^2.1.0" +"@docusaurus/theme-classic@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" + integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-translations" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + "@mdx-js/react" "^1.6.22" + clsx "^1.1.1" + copy-text-to-clipboard "^3.0.1" + infima "0.2.0-alpha.37" + lodash "^4.17.21" + postcss "^8.4.7" + prism-react-renderer "^1.2.1" + prismjs "^1.27.0" + react-router-dom "^5.2.0" + rtlcss "^3.3.0" -"@docusaurus/plugin-google-analytics@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.73.tgz#7f22bc06a9f5a672b95b64f6f562adb6e80a1cff" - integrity sha512-t3Noo80wT412IMI4vnapWVpfm5PBhYPQpXQxVIZap61K2CT1lAkelyi43vREWt80HwCjXh5HvoR2TxCdGwi6nA== +"@docusaurus/theme-common@2.0.0-beta.17", "@docusaurus/theme-common@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" + integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== dependencies: - "@docusaurus/core" "2.0.0-alpha.73" + "@docusaurus/module-type-aliases" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + clsx "^1.1.1" + parse-numeric-range "^1.3.0" + prism-react-renderer "^1.3.1" + tslib "^2.3.1" + utility-types "^3.10.0" -"@docusaurus/plugin-google-gtag@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.73.tgz#af210bd163ae74271ad14d73adfc9ff002892405" - integrity sha512-DqrmV4eW81DzlAJrqMiki+m4tTUlpPkUL7sNemVjzqVl4616tng7wa93FcNw3sZbVm1Kp69Hep3uN2OgRmEqRQ== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" +"@docusaurus/theme-search-algolia@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" + integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== + dependencies: + "@docsearch/react" "^3.0.0" + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-translations" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + algoliasearch "^4.12.1" + algoliasearch-helper "^3.7.0" + clsx "^1.1.1" + eta "^1.12.3" + fs-extra "^10.0.1" + lodash "^4.17.21" + tslib "^2.3.1" + utility-types "^3.10.0" -"@docusaurus/plugin-sitemap@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.73.tgz#8304d235034fddf30b568833fb0388c020b551b2" - integrity sha512-APBI/l8T5lsfEYvRZ0ipzZlUlKX/4x47w3WfIvlqS78vk7WHAXa0tEp3S8FK36TqeTjmdmCP0F4DJCY7UJZCSw== +"@docusaurus/theme-translations@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" + integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - fs-extra "^9.1.0" - sitemap "^6.3.6" - tslib "^2.1.0" + fs-extra "^10.0.1" + tslib "^2.3.1" -"@docusaurus/preset-classic@^2.0.0-alpha.72": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.73.tgz#f232fd603d35807cf8847bb9bab22cfa0cd6d239" - integrity sha512-eXgwPVMXA9K9FmGrXwOeec9Uqr0KXMdHvx3C5Ocm4E7b/mylMGwykOgR9iaSLYdVY12EKrO7T9Lm3Z37Gll7Zw== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/plugin-content-blog" "2.0.0-alpha.73" - "@docusaurus/plugin-content-docs" "2.0.0-alpha.73" - "@docusaurus/plugin-content-pages" "2.0.0-alpha.73" - "@docusaurus/plugin-debug" "2.0.0-alpha.73" - "@docusaurus/plugin-google-analytics" "2.0.0-alpha.73" - "@docusaurus/plugin-google-gtag" "2.0.0-alpha.73" - "@docusaurus/plugin-sitemap" "2.0.0-alpha.73" - "@docusaurus/theme-classic" "2.0.0-alpha.73" - "@docusaurus/theme-search-algolia" "2.0.0-alpha.73" - -"@docusaurus/react-loadable@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.0.tgz#6d6f0c8fd9a434b62a1ab1f8645ee7bde5a9ec21" - integrity sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg== +"@docusaurus/types@2.0.0-beta.17", "@docusaurus/types@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" + integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== dependencies: - prop-types "^15.6.2" - -"@docusaurus/theme-classic@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.73.tgz#6461ddc0db087692046c3012c655cc2a50b8e95d" - integrity sha512-SVjq3xPIFQ/Uzs6WJn+8Gm1b47jLV7YBbcUXpIGd3NBKj16yZml9t7YNpos6Vt7Y5mCVhIP4IqWYJshArw6Aog== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/plugin-content-blog" "2.0.0-alpha.73" - "@docusaurus/plugin-content-docs" "2.0.0-alpha.73" - "@docusaurus/plugin-content-pages" "2.0.0-alpha.73" - "@docusaurus/theme-common" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - "@mdx-js/mdx" "^1.6.21" - "@mdx-js/react" "^1.6.21" - chalk "^4.1.0" - clsx "^1.1.1" - copy-text-to-clipboard "^3.0.0" - fs-extra "^9.1.0" - globby "^11.0.2" - infima "0.2.0-alpha.22" - lodash "^4.17.20" - parse-numeric-range "^1.2.0" - postcss "^7.0.2" - prism-react-renderer "^1.1.1" - prismjs "^1.23.0" - prop-types "^15.7.2" - react-router-dom "^5.2.0" - rtlcss "^2.6.2" - -"@docusaurus/theme-common@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-alpha.73.tgz#3b545df6614db721e87d30a691a07cfde50ceae4" - integrity sha512-ePteJFQkQRkK+J1FKDhmczq+yiEmORTW9YJgYceQVq+9L6unr0XxeOBBNC27BxSabUI+A9YXjQbtdmOHFM8LKA== - dependencies: - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/plugin-content-blog" "2.0.0-alpha.73" - "@docusaurus/plugin-content-docs" "2.0.0-alpha.73" - "@docusaurus/plugin-content-pages" "2.0.0-alpha.73" - "@docusaurus/types" "2.0.0-alpha.73" - tslib "^2.1.0" - -"@docusaurus/theme-search-algolia@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.73.tgz#b32b59bb3313b8e39b0191622a2b5841f7717ffe" - integrity sha512-SMfeGYZb85GIcuUjefMN+RunLDK+x6ETnlGuY9LU2S6bvoaZ4YTcqBPOt0iyZ1LH+XZmFuz78lFDW1gklaNmfg== - dependencies: - "@docsearch/react" "^3.0.0-alpha.33" - "@docusaurus/core" "2.0.0-alpha.73" - "@docusaurus/theme-common" "2.0.0-alpha.73" - "@docusaurus/utils" "2.0.0-alpha.73" - "@docusaurus/utils-validation" "2.0.0-alpha.73" - algoliasearch "^4.8.4" - algoliasearch-helper "^3.3.4" - clsx "^1.1.1" - eta "^1.12.1" - lodash "^4.17.20" + commander "^5.1.0" + joi "^17.6.0" + querystring "0.2.1" + utility-types "^3.10.0" + webpack "^5.69.1" + webpack-merge "^5.8.0" -"@docusaurus/types@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-alpha.73.tgz#d19947ab0b86586191025069cefbe84cfd77cfbd" - integrity sha512-+q7q178LS2mMTGD/U5KgloLGKtG8yzpqj+NOp2QprjFVqTfkwTFcMhN33PTZTUcDunMDuUt+LOo9hi9Vz9+r5Q== +"@docusaurus/utils-common@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" + integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== dependencies: - "@types/webpack" "^4.41.0" - commander "^5.1.0" - joi "^17.4.0" - querystring "0.2.0" - webpack-merge "^4.2.2" + tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.73.tgz#d18708a681361ecd08f1628538358146a893c521" - integrity sha512-A36kKC+tCy/MGXdaK7emH2CHyHKru/+Td9zCm6fvNdNbu+dDNvEddTZ3ecjB0zNdDZM25Er4+KIo9GV3vnJ8Rg== +"@docusaurus/utils-validation@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" + integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== dependencies: - "@docusaurus/utils" "2.0.0-alpha.73" - chalk "^4.1.0" - joi "^17.4.0" - tslib "^2.1.0" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + joi "^17.6.0" + tslib "^2.3.1" -"@docusaurus/utils@2.0.0-alpha.73": - version "2.0.0-alpha.73" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-alpha.73.tgz#eeca700e888e41961c9d06febed2256064e859e4" - integrity sha512-kUHnE1b/3yNWNAn0V8owLgCrxqyxfolkCbkPFfnRT+4m+agyn3riEcr+ZVObs7K9nxCla8oklX5RKSJGzyqWww== +"@docusaurus/utils@2.0.0-beta.17", "@docusaurus/utils@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" + integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== dependencies: - "@docusaurus/types" "2.0.0-alpha.73" - "@types/github-slugger" "^1.3.0" - chalk "^4.1.0" - escape-string-regexp "^4.0.0" - fs-extra "^9.1.0" - gray-matter "^4.0.2" - lodash "^4.17.20" + "@docusaurus/logger" "2.0.0-beta.17" + "@svgr/webpack" "^6.0.0" + file-loader "^6.2.0" + fs-extra "^10.0.1" + github-slugger "^1.4.0" + globby "^11.0.4" + gray-matter "^4.0.3" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.4" resolve-pathname "^3.0.0" - tslib "^2.1.0" + shelljs "^0.8.5" + tslib "^2.3.1" + url-loader "^4.1.1" + webpack "^5.69.1" -"@endiliey/static-site-generator-webpack-plugin@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz#94bfe58fd83aeda355de797fcb5112adaca3a6b1" - integrity sha512-3MBqYCs30qk1OBRC697NqhGouYbs71D1B8hrk/AFJC6GwF2QaJOQZtA1JYAaGSe650sZ8r5ppRTtCRXepDWlng== +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== dependencies: - bluebird "^3.7.1" - cheerio "^0.22.0" - eval "^0.1.4" - url "^0.11.0" - webpack-sources "^1.4.3" + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz#7985f681564cff4ffaebb5896eb4be20af3aae7a" + integrity sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ== "@hapi/hoek@^9.0.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" - integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== + version "9.2.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== "@hapi/topo@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" - integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" -"@mdx-js/mdx@^1.5.5": - version "1.5.8" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.5.8.tgz#40740eaf0b0007b461cee8df13a7ae5a1af8064a" - integrity sha512-OzanPTN0p9GZOEVeEuEa8QsjxxGyfFOOnI/+V1oC1su9UIN4KUg1k4n/hWTZC+VZhdW1Lfj6+Ho8nIs6L+pbDA== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== dependencies: - "@babel/core" "7.8.4" - "@babel/plugin-syntax-jsx" "7.8.3" - "@babel/plugin-syntax-object-rest-spread" "7.8.3" - "@mdx-js/util" "^1.5.8" - babel-plugin-apply-mdx-type-prop "^1.5.8" - babel-plugin-extract-import-names "^1.5.8" - camelcase-css "2.0.1" - detab "2.0.3" - hast-util-raw "5.0.2" - lodash.uniq "4.5.0" - mdast-util-to-hast "7.0.0" - remark-mdx "^1.5.8" - remark-parse "7.0.2" - remark-squeeze-paragraphs "3.0.4" - style-to-object "0.3.0" - unified "8.4.2" - unist-builder "2.0.3" - unist-util-visit "2.0.2" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@mdx-js/mdx@^1.6.21": +"@mdx-js/mdx@^1.5.5", "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== @@ -1725,7 +1642,7 @@ unist-builder "2.0.3" unist-util-visit "2.0.3" -"@mdx-js/react@^1.6.21": +"@mdx-js/react@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== @@ -1735,49 +1652,72 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@mdx-js/util@^1.5.8": - version "1.5.8" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.5.8.tgz#cbadda0378af899c17ce1aa69c677015cab28448" - integrity sha512-a7Gjjw8bfBSertA/pTWBA/9WKEhgaSxvQE2NTSUzaknrzGFOhs4alZSHh3RHmSFdSWv5pUuzAgsWseMLhWEVkQ== - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + +"@redocly/ajv@^8.6.4": + version "8.6.4" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.6.4.tgz#94053e7a9d4146d1a4feacd3813892873f229a85" + integrity sha512-y9qNj0//tZtWB2jfXNK3BX18BSBp9zNR7KE7lMysVHwbZtY392OJCjm6Rb/h4UHH2r1AqjNEHFD6bRn+DqU9Mw== dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"@polka/url@^1.0.0-next.9": - version "1.0.0-next.12" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.12.tgz#431ec342a7195622f86688bbda82e3166ce8cb28" - integrity sha512-6RglhutqrGFMO1MNUXp95RBuYIuc8wTnMAV5MUhLmjTOy78ncwOw7RgeQ/HeymkKXRhZd0s2DNrM1rL7unk3MQ== +"@redocly/openapi-core@^1.0.0-beta.54", "@redocly/openapi-core@^1.0.0-beta.87": + version "1.0.0-beta.89" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.0.0-beta.89.tgz#3c78419bad0cd291edf285dd507abdfddf789f88" + integrity sha512-3+k9oIBhCcs7LJ50eCWB6FdwV4pDH06d613pwFo5F2TmDPviNVWothj3CO/BheDz24tc9K8xR5pQuECE65qr/w== + dependencies: + "@redocly/ajv" "^8.6.4" + "@types/node" "^14.11.8" + colorette "^1.2.0" + js-levenshtein "^1.1.6" + js-yaml "^4.1.0" + lodash.isequal "^4.5.0" + minimatch "^3.0.4" + node-fetch "^2.6.1" + pluralize "^8.0.0" + yaml-ast-parser "0.0.43" -"@sideway/address@^4.1.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" - integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== +"@redocly/react-dropdown-aria@^2.0.11": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.12.tgz#2e3af2b1b8e9123487109400d6117f0d4a8445a6" + integrity sha512-feQEZlyBvQsbT/fvpJ4jJ5OLGaUPpnskHYDsY8DGpPymN+HUeDQrqkBEbbKRwMKidFTI2cxk2kJNNTnvdS9jyw== + +"@saucelabs/theme-github-codeblock@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@saucelabs/theme-github-codeblock/-/theme-github-codeblock-0.1.1.tgz#d2caa3fbf56c38ae2fe974871f1188226bb57d92" + integrity sha512-iHzODYjcUAYI4eJzLrNCw/Iq9SWxCKB/cMgEKHjRmNMb2NKch1dsI2ZSCg8lNedIPmOaRfqHT29hLyMoc/5Wpg== + +"@sideway/address@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" + integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== dependencies: "@hapi/hoek" "^9.0.0" @@ -1796,108 +1736,120 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== +"@slorber/static-site-generator-webpack-plugin@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841" + integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== + dependencies: + bluebird "^3.7.1" + cheerio "^0.22.0" + eval "^0.1.4" + url "^0.11.0" + webpack-sources "^1.4.3" -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== +"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" + integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== +"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" + integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== +"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" + integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" + integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== +"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" + integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== +"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" + integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== +"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" + integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +"@svgr/babel-plugin-transform-svg-component@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" + integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== + +"@svgr/babel-preset@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" + integrity sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" + "@svgr/babel-plugin-transform-svg-component" "^6.2.0" + +"@svgr/core@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" + integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== dependencies: - "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-jsx" "^6.2.1" camelcase "^6.2.0" - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== +"@svgr/hast-util-to-babel-ast@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" + integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== dependencies: - "@babel/types" "^7.12.6" + "@babel/types" "^7.15.6" + entities "^3.0.1" -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +"@svgr/plugin-jsx@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" + integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.2.1" svg-parser "^2.0.2" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +"@svgr/plugin-svgo@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" + integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== dependencies: - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" deepmerge "^4.2.2" - svgo "^1.2.2" + svgo "^2.5.0" -"@svgr/webpack@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" +"@svgr/webpack@^6.0.0", "@svgr/webpack@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" + integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== + dependencies: + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@svgr/core" "^6.2.1" + "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-svgo" "^6.2.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -1906,73 +1858,131 @@ dependencies: defer-to-connect "^1.0.1" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" -"@types/github-slugger@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524" - integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: - "@types/events" "*" - "@types/minimatch" "*" "@types/node" "*" +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/hast@^2.0.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" - integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== dependencies: "@types/unist" "*" -"@types/html-minifier-terser@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz#7532440c138605ced1b555935c3115ddd20e8bef" - integrity sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw== +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== -"@types/json-schema@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.10" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" + integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== "@types/mdast@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" - integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/node@*": - version "13.9.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.8.tgz#09976420fc80a7a00bf40680c63815ed8c7616f4" - integrity sha512-1WgO8hsyHynlx7nhP1kr0OFzsgKz5XDQL+Lfc3b1Q3qIln/n8cKD4m09NJ0+P1Rq7Zgnc7N0+SsMnoD1rEb0kA== +"@types/node@*", "@types/node@^17.0.5": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.22.tgz#38b6c4b9b2f3ed9f2e376cce42a298fb2375251e" + integrity sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw== -"@types/node@^14.14.28": - version "14.14.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" - integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g== +"@types/node@^14.11.8": + version "14.18.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" + integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1984,204 +1994,226 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-router-config@*": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" + integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router-dom@*": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*": + version "5.1.18" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" + integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*": + version "17.0.41" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.41.tgz#6e179590d276394de1e357b3f89d05d7d3da8b85" + integrity sha512-chYZ9ogWUodyC7VUTRBfblysKLjnohhFY9bGLwvnUFFy48+vB9DikmB3lW0qTFmBcKSzmdglcvkHK71IioOlDA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== "@types/sax@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.1.tgz#e0248be936ece791a82db1a57f3fb5f7c87e8172" - integrity sha512-dqYdvN7Sbw8QT/0Ci5rhjE4/iCMJEM0Y9rHpCu+gGXD9Lwbz28t6HI2yegsB6BoV1sShRMU6lAmAcgRjmFy7LA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e" + integrity sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw== dependencies: "@types/node" "*" -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" - integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" -"@types/uglify-js@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.5.tgz#2c70d5c68f6e002e3b2e4f849adc5f162546f633" - integrity sha512-L7EbSkhSaWBpkl+PZAEAqZTqtTeIsq7s/oX/q0LNnxxJoRVKQE0T81XDVyaxjiiKQwiV2vhVeYRqxdRNqGOGJw== +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== dependencies: - source-map "^0.6.1" + "@types/mime" "^1" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" - integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== +"@types/ws@^8.2.2": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" -"@types/webpack@^4.41.0", "@types/webpack@^4.41.8": - version "4.41.10" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.10.tgz#2e1f6b3508a249854efe3dcc7690905ac5ee10be" - integrity sha512-vIy0qaq8AjOjZLuFPqpo7nAJzcoVXMdw3mvpNN07Uvdy0p1IpJeLNBe3obdRP7FX2jIusDE7z1pZa0A6qYUgnA== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -2194,58 +2226,62 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" -acorn-walk@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3" - integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A== +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +acorn-walk@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4: - version "8.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.1.tgz#fb0026885b9ac9f48bac1e185e4af472971149ff" - integrity sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g== +acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== -address@1.1.2, address@^1.0.1: +address@^1.0.1, address@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" -ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.5: +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2255,78 +2291,66 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -algoliasearch-helper@^3.3.4: - version "3.6.2" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz#45e19b12589cfa0c611b573287f65266ea2cc14a" - integrity sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg== - dependencies: - events "^1.1.1" - -algoliasearch@^4.0.0, algoliasearch@^4.8.4: - version "4.9.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.9.0.tgz#76a78632014902845af5f1d7c02a7115e5b53b50" - integrity sha512-hhlza8j/uCWGe2kSz89HlcexiLxO1wzOKLNPWivNtZeZO5J85agbcMsrKV5+xLFI4LbulP/b/4/IvswxzPrGIw== - dependencies: - "@algolia/cache-browser-local-storage" "4.9.0" - "@algolia/cache-common" "4.9.0" - "@algolia/cache-in-memory" "4.9.0" - "@algolia/client-account" "4.9.0" - "@algolia/client-analytics" "4.9.0" - "@algolia/client-common" "4.9.0" - "@algolia/client-recommendation" "4.9.0" - "@algolia/client-search" "4.9.0" - "@algolia/logger-common" "4.9.0" - "@algolia/logger-console" "4.9.0" - "@algolia/requester-browser-xhr" "4.9.0" - "@algolia/requester-common" "4.9.0" - "@algolia/requester-node-http" "4.9.0" - "@algolia/transporter" "4.9.0" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== +ajv@^8.0.0, ajv@^8.8.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== dependencies: - string-width "^3.0.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== +algoliasearch-helper@^3.7.0: + version "3.7.4" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.4.tgz#3812ea161da52463ec88da52612c9a363c1b181d" + integrity sha512-KmJrsHVm5TmxZ9Oj53XdXuM4CQeu7eVFnB15tpSFt+7is1d1yVCv3hxCLMqYSw/rH42ccv013miQpRr268P8vw== + dependencies: + "@algolia/events" "^4.0.1" + +algoliasearch@^4.0.0, algoliasearch@^4.12.1: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" + +ansi-align@^3.0.0, ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + string-width "^4.1.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -2334,38 +2358,29 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" +ansi-styles@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arg@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.0.tgz#a20e2bb5710e82950a516b3f933fee5ed478be90" - integrity sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ== + version "5.0.1" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" + integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== argparse@^1.0.7: version "1.0.10" @@ -2379,16 +2394,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -2404,69 +2409,50 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-array-reduce@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/async-array-reduce/-/async-array-reduce-0.2.1.tgz#c8be010a2b5cd00dea96c81116034693dfdd82d1" + integrity sha1-yL4BCitc0A3qlsgRFgNGk9/dgtE= async@*: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== async@^2.6.2: version "2.6.4" @@ -2480,50 +2466,37 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^10.2.5: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== - dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" - colorette "^1.2.2" - fraction.js "^4.0.13" - normalize-range "^0.1.2" - postcss-value-parser "^4.1.0" - -autoprefixer@^9.4.7: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@^10.3.7, autoprefixer@^10.4.2: + version "10.4.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" + integrity sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" + browserslist "^4.20.2" + caniuse-lite "^1.0.30001317" + fraction.js "^4.2.0" normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== dependencies: - follow-redirects "^1.14.0" + follow-redirects "^1.14.7" -babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +babel-loader@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" + integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -2535,14 +2508,6 @@ babel-plugin-apply-mdx-type-prop@1.6.22: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" -babel-plugin-apply-mdx-type-prop@^1.5.8: - version "1.5.8" - resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.5.8.tgz#f5ff6d9d7a7fcde0e5f5bd02d3d3cd10e5cca5bf" - integrity sha512-xYp5F9mAnZdDRFSd1vF3XQ0GQUbIulCpnuht2jCmK30GAHL8szVL7TgzwhEGamQ6yJmP/gEyYNM9OR5D2n26eA== - dependencies: - "@babel/helper-plugin-utils" "7.8.3" - "@mdx-js/util" "^1.5.8" - babel-plugin-dynamic-import-node@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2564,36 +2529,45 @@ babel-plugin-extract-import-names@1.6.22: dependencies: "@babel/helper-plugin-utils" "7.10.4" -babel-plugin-extract-import-names@^1.5.8: - version "1.5.8" - resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.5.8.tgz#418057261346451d689dff5036168567036b8cf6" - integrity sha512-LcLfP8ZRBZMdMAXHLugyvvd5PY0gMmLMWFogWAUsG32X6TYW2Eavx+il2bw73KDbW+UdCC1bAJ3NuU25T1MI3g== - dependencies: - "@babel/helper-plugin-utils" "7.8.3" - -babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" - integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" - integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" - core-js-compat "^3.9.1" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" - integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.6.tgz#6f76c7f7224b7af7edc24a4910351948c691fc90" + integrity sha512-Sk+7o/oa2HfHv3Eh8sxoz75/fFvEdHsXV4grdeHufX0nauCmymlnN0rGhIvfpMQSJMvGutJ85gvCGea4iqmDpg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= bail@^1.0.0: version "1.0.5" @@ -2610,23 +2584,10 @@ base16@^1.0.0: resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== batch@0.6.1: version "0.6.1" @@ -2638,48 +2599,41 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bluebird@^3.5.5, bluebird@^3.7.1: +bluebird@^3.7.1: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "1.7.2" + http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" bonjour@^3.5.0: version "3.5.0" @@ -2699,19 +2653,33 @@ boolbase@^1.0.0, boolbase@~1.0.0: integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= boxen@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" - integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" cli-boxes "^2.2.1" - string-width "^4.2.0" + string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== + dependencies: + ansi-align "^3.0.1" + camelcase "^6.2.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2720,22 +2688,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -2779,26 +2731,28 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -2807,65 +2761,39 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - -browserslist@^4.0.0: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== - dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.4: - version "4.16.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.4.tgz#7ebf913487f40caf4637b892b268069951c35d58" - integrity sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ== - dependencies: - caniuse-lite "^1.0.30001208" - colorette "^1.2.2" - electron-to-chromium "^1.3.712" +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1, browserslist@^4.20.2: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" escalade "^3.1.1" - node-releases "^1.1.71" + node-releases "^2.0.2" + picocolors "^1.0.0" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" + base64-js "^1.3.1" + ieee754 "^1.2.1" builtin-status-codes@^3.0.0: version "3.0.0" @@ -2877,81 +2805,10 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5: - version "15.0.6" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" - integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" - integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^3.0.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^2.0.0" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacheable-request@^6.0.0: version "6.1.0" @@ -2966,52 +2823,46 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - caller-callsite "^2.0.0" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase-css@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= caniuse-api@^3.0.0: version "3.0.0" @@ -3023,27 +2874,17 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001038: - version "1.0.30001038" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" - integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== - -caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001196, caniuse-lite@^1.0.30001208: - version "1.0.30001214" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001214.tgz#70f153c78223515c6d37a9fde6cd69250da9d872" - integrity sha512-O2/SCpuaU3eASWVaesQirZv1MSjUNOvmugaD8zNSJqw6Vv5SGwoOpA9LJs3pNPfM745nxqPvfZY3MQKY4AKHYg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317: + version "1.0.30001319" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f" + integrity sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw== -ccount@^1.0.0: +ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -ccount@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" - integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3052,10 +2893,10 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== +chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -3075,6 +2916,17 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +cheerio-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" + integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + dependencies: + css-select "^4.1.3" + css-what "^5.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.7.0" + cheerio@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" @@ -3097,61 +2949,38 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1, chokidar@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" +cheerio@^1.0.0-rc.10: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + fsevents "~2.3.2" chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" @@ -3166,32 +2995,15 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@^2.3.1: +classnames@^2.2.6, classnames@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-css@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.1.2.tgz#6ea0da7286b4ddc2469a1b776e2461a5007eed54" - integrity sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw== +clean-css@^5.2.2, clean-css@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== dependencies: source-map "~0.6.0" @@ -3205,14 +3017,37 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-table3@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" + integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== + dependencies: + string-width "^4.2.0" + optionalDependencies: + colors "1.4.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" clone-response@^1.0.2: version "1.0.2" @@ -3221,34 +3056,17 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clsx@^1.1.1: +clsx@^1.1.0, clsx@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: +collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -3267,31 +3085,30 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" +colorette@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colorette@^2.0.10: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== combine-promises@^1.1.0: version "1.1.0" @@ -3303,36 +3120,31 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.15.1, commander@^2.20.0: +commander@2, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@7, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -3358,16 +3170,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -3385,12 +3187,12 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -consola@^2.15.0: +consola@^2.15.3: version "2.15.3" resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== -console-browserify@^1.1.0: +console-browserify@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== @@ -3405,12 +3207,12 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" @@ -3418,9 +3220,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" @@ -3429,87 +3231,79 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +cookie@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -copy-text-to-clipboard@^3.0.0: +copy-text-to-clipboard@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== -copy-webpack-plugin@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz#138cd9b436dbca0a6d071720d5414848992ec47e" - integrity sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA== +copy-webpack-plugin@^10.2.4: + version "10.2.4" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" + integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== dependencies: - cacache "^15.0.5" - fast-glob "^3.2.4" - find-cache-dir "^3.3.1" - glob-parent "^5.1.1" - globby "^11.0.1" - loader-utils "^2.0.0" + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" normalize-path "^3.0.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - webpack-sources "^1.4.3" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" -core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.10.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.2.tgz#0a675b4e1cde599616322a72c8886bcf696f3ec3" - integrity sha512-IGHnpuaM1N++gLSPI1F1wu3WXICPxSyj/Q++clcwsIOnUVp5uKUIPl/+6h0TQ112KU3fMiSxqJuM+OrCyKj5+A== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== dependencies: - browserslist "^4.16.4" + browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.0.0: - version "3.10.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.10.2.tgz#065304f8547bf42008d4528dfff973c38bd6a332" - integrity sha512-uu18pVHQ21n4mzfuSlCXpucu5VKsck3j2m5fjrBOBqqdgWAxwdCgUuGWj6cDDPN1zLj/qtiqKvBMxWgDeeu49Q== +core-js-pure@^3.20.2: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" + integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== -core-js@^3.9.1: - version "3.10.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.2.tgz#17cb038ce084522a717d873b63f2b3ee532e2cd5" - integrity sha512-W+2oVYeNghuBr3yTzZFQ5rfmjZtYB/Ubg87R5YOmlGrIb+Uw9f7qjUbhsj+/EkXhcV7eOD3jiM4+sgraX3FZUw== +core-js@^3.21.1: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -3518,14 +3312,14 @@ cosmiconfig@^7.0.0: yaml "^1.10.0" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -3536,7 +3330,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -3548,14 +3342,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-fetch@^3.0.4: +cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: node-fetch "2.6.7" -cross-spawn@7.0.3, cross-spawn@^7.0.3: +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3564,18 +3358,7 @@ cross-spawn@7.0.3, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: +crypto-browserify@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -3597,221 +3380,681 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-declaration-sorter@^6.0.3: + version "6.1.4" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== + dependencies: + timsort "^0.3.0" + +css-loader@^6.6.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.7" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.5" + +css-minimizer-webpack-plugin@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^5.0.1, css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-advanced@^5.1.12: + version "5.3.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.1.tgz#f4fa7006aab67e354289b3efd512c93a272b3874" + integrity sha512-kfCknalY5VX/JKJ3Iri5/5rhZmQIqkbqgXsA6oaTnfA4flY/tt+w0hMxbExr0/fVuJL8w56j211op+pkQoNzoQ== + dependencies: + autoprefixer "^10.3.7" + cssnano-preset-default "^5.2.5" + postcss-discard-unused "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" + postcss-zindex "^5.1.0" + +cssnano-preset-default@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" + integrity sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ== + dependencies: + css-declaration-sorter "^6.0.3" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.0" + postcss-discard-comments "^5.1.1" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.3" + postcss-merge-rules "^5.1.1" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" + postcss-minify-selectors "^5.2.0" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.0" + postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.17, cssnano@^5.0.6: + version "5.1.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.5.tgz#5f3f519538c7f1c182c527096892243db3e17397" + integrity sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg== + dependencies: + cssnano-preset-default "^5.2.5" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + +d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.1.tgz#7797eb53ead6b9083c75a45a681e93fc41bc468c" + integrity sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ== + dependencies: + internmap "1 - 2" + +d3-axis@1: + version "1.0.12" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" + integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== + +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.6.tgz#b0a22c7372cabec128bdddf9bddc058592f89e9b" + integrity sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" + integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== + dependencies: + d3-array "1" + d3-path "1" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +"d3-color@1 - 3", d3-color@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.0.1.tgz#03316e595955d1fcd39d9f3610ad41bb90194d0a" + integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw== + +d3-contour@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" + integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== + dependencies: + d3-array "^1.1.1" + +d3-contour@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.1.tgz#2c64255d43059599cd0dba8fe4cc3d51ccdd9bbd" + integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ== + dependencies: + d3-array "2 - 3" + +d3-delaunay@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.2.tgz#7fd3717ad0eade2fc9939f4260acfb503f984e92" + integrity sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ== + dependencies: + delaunator "5" + +d3-dispatch@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +d3-drag@1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" + integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== + dependencies: + d3-dispatch "1" + d3-selection "1" + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +d3-dsv@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" + integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== + dependencies: + commander "2" + iconv-lite "0.4" + rw "1" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +d3-ease@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.7.tgz#9a834890ef8b8ae8c558b2fe55bd57f5993b85e2" + integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.2.0.tgz#15ce2ecfc41b092b1db50abd2c552c2316cf7fc7" + integrity sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA== + dependencies: + d3-dsv "1" + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" + integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== + dependencies: + d3-collection "1" + d3-dispatch "1" + d3-quadtree "1" + d3-timer "1" + +d3-force@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +d3-format@1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" + integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== + +"d3-format@1 - 3", d3-format@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + +d3-geo@1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" + integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== + dependencies: + d3-array "1" + +d3-geo@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.0.1.tgz#4f92362fd8685d93e3b1fae0fd97dc8980b1ed7e" + integrity sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@1: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-hierarchy@3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz#9cbb0ffd2375137a351e6cfeed344a06d4ff4597" + integrity sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA== + +d3-interpolate@1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +"d3-path@1 - 3", d3-path@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.0.1.tgz#f09dec0aaffd770b7995f1a399152bf93052321e" + integrity sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w== + +d3-polygon@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" + integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +d3-quadtree@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" + integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" + integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== + +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-scale-chromatic@1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale-chromatic@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" + integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +d3-scale@2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" + integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== dependencies: - postcss "^7.0.1" - timsort "^0.3.0" + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" -css-loader@^5.1.1: - version "5.2.4" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" - integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== +d3-scale@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== dependencies: - camelcase "^6.2.0" - icss-utils "^5.1.0" - loader-utils "^2.0.0" - postcss "^8.2.10" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^3.0.0" - semver "^7.3.5" + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== +d3-selection@1, d3-selection@^1.1.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.2.tgz#dcaa49522c0dbf32d6c1858afc26b6094555bc5c" + integrity sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg== -css-select@^1.1.0, css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +d3-shape@1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + d3-path "1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +d3-shape@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.1.0.tgz#c8a495652d83ea6f524e482fca57aa3f8bc32556" + integrity sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ== dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" + d3-path "1 - 3" -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== +d3-time-format@2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" + integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" + d3-time "1" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== -cssesc@^3.0.0: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-advanced@^4.0.7: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-4.0.8.tgz#076f7c0818619e7385036c9927fd67e0f626ac30" - integrity sha512-DlZ5+XNKwB3ZnrtJ7jdj8WxT5Zgt1WIr4gdP9v1Sdn3SObqcLwbBobQaM7BqLIVHS74TE5iWn2TSYmOVSsmozQ== + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975" + integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ== dependencies: - autoprefixer "^9.4.7" - cssnano-preset-default "^4.0.8" - postcss-discard-unused "^4.0.1" - postcss-merge-idents "^4.0.1" - postcss-reduce-idents "^4.0.2" - postcss-zindex "^4.0.1" + d3-array "2 - 3" -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= +d3-timer@1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== +d3-transition@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== dependencies: - postcss "^7.0.0" + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-voronoi@1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" + integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== +d3-zoom@1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" + integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^5.14: + version "5.16.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-5.16.0.tgz#9c5e8d3b56403c79d4ed42fbd62f6113f199c877" + integrity sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw== + dependencies: + d3-array "1" + d3-axis "1" + d3-brush "1" + d3-chord "1" + d3-collection "1" + d3-color "1" + d3-contour "1" + d3-dispatch "1" + d3-drag "1" + d3-dsv "1" + d3-ease "1" + d3-fetch "1" + d3-force "1" + d3-format "1" + d3-geo "1" + d3-hierarchy "1" + d3-interpolate "1" + d3-path "1" + d3-polygon "1" + d3-quadtree "1" + d3-random "1" + d3-scale "2" + d3-scale-chromatic "1" + d3-selection "1" + d3-shape "1" + d3-time "1" + d3-time-format "2" + d3-timer "1" + d3-transition "1" + d3-voronoi "1" + d3-zoom "1" + +d3@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.3.0.tgz#f3d5a22c1f658952a6491cf50132f5267ed7a40a" + integrity sha512-MDRLJCMK232OJQRqGljQ/gCxtB8k3/sLKFjftMjzPB3nKVUODpdW9Rb3vcq7U8Ka5YKoZkAmp++Ur6I+6iNWIw== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "3" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +dagre-d3@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/dagre-d3/-/dagre-d3-0.6.4.tgz#0728d5ce7f177ca2337df141ceb60fbe6eeb7b29" + integrity sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ== dependencies: - css-tree "1.0.0-alpha.39" + d3 "^5.14" + dagre "^0.8.5" + graphlib "^2.1.8" + lodash "^4.17.15" -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +dagre@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee" + integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw== + dependencies: + graphlib "^2.1.8" + lodash "^4.17.15" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3819,13 +4062,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: ms "2.0.0" debug@^3.1.1: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -3833,21 +4069,16 @@ debug@^3.2.6: ms "^2.1.1" debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" -decamelize@^1.2.0: +decko@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" + integrity sha1-/UPHNelnuAEzBohKVvvmZZlraBc= decompress-response@^3.3.0: version "3.3.0" @@ -3878,61 +4109,30 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" + execa "^5.0.0" defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -define-properties@^1.1.2, define-properties@^1.1.3: +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - del@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" @@ -3947,6 +4147,13 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" +delaunator@5: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" + integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== + dependencies: + robust-predicates "^3.0.0" + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3965,13 +4172,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detab@2.0.3, detab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" - integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== - dependencies: - repeat-string "^1.5.4" - detab@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" @@ -3980,11 +4180,11 @@ detab@2.0.4: repeat-string "^1.5.4" detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-port-alt@1.1.6: +detect-port-alt@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== @@ -4036,7 +4236,41 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -dom-converter@^0.2: +docusaurus-plugin-redoc@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-1.0.0.tgz#ade7de2a9c6668ff365703e36707fac25caad333" + integrity sha512-BvohSiMfA15FaF5qy8+DHCCEzNXqZ8J4gjLT1G9M3zfcPkI7U2IoacCt66mnjN0tnJG3yvMlJ5LyxTKBWrkIGQ== + dependencies: + "@docusaurus/types" "^2.0.0-beta.17" + "@docusaurus/utils" "^2.0.0-beta.17" + "@redocly/openapi-core" "^1.0.0-beta.87" + joi "^17.5.0" + redoc "^2.0.0-rc.64" + +docusaurus-plugin-sass@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.2.tgz#9b7f8c6fbe833677064ec05b09b98d90b50be324" + integrity sha512-ZZBpj3PrhGpYE2kAnkZB9NRwy/CDi4rGun1oec6PYR8YvGzqxYGtXvLgHi6FFbu8/N483klk8udqyYMh6Ted+A== + dependencies: + sass-loader "^10.1.1" + +docusaurus-theme-redoc@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-1.0.0.tgz#5e6caf24d11b1864b4befaf24cd45eb29cd00aba" + integrity sha512-xbGmmBi7H/y3seQ66iuRMawHzEE968RpV2hsbKmFZXVacbnOdT1x8TauY/VcRJobWeZ+wvLgG4RfVZplcrp4dA== + dependencies: + "@docusaurus/theme-common" "^2.0.0-beta.17" + "@docusaurus/types" "^2.0.0-beta.17" + clsx "^1.1.1" + copyfiles "^2.4.1" + lodash "^4.17.21" + mobx "^6.3.13" + node-polyfill-webpack-plugin "^1.1.4" + redoc "^2.0.0-rc.64" + styled-components "^5.3.3" + to-arraybuffer "^1.0.1" + +dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -4051,6 +4285,15 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + dom-serializer@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -4059,20 +4302,20 @@ dom-serializer@~0.1.0: domelementtype "^1.3.0" entities "^1.1.1" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domain-browser@^4.19.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.22.0.tgz#6ddd34220ec281f9a65d3386d267ddd35c491f9f" + integrity sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw== domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== domhandler@^2.3.0: version "2.4.2" @@ -4081,6 +4324,23 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +dompurify@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.5.tgz#c83ed5a3ae5ce23e52efe654ea052ffb358dd7e3" + integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ== + +dompurify@^2.2.8: + version "2.3.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" + integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -4089,7 +4349,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -4097,18 +4357,27 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== +domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" @@ -4117,42 +4386,27 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.390: - version "1.3.393" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.393.tgz#d13fa4cbf5065e18451c84465d22aef6aca9a911" - integrity sha512-Ko3/VdhZAaMaJBLBFqEJ+M1qMiBI8sJfPY/hSJvDrkB3Do8LJsL9tmXy4w7o9nPXif/jFaZGSlXTQWU8XVsYtg== - -electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.712: - version "1.3.719" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.719.tgz#87166fee347a46a2557f19aadb40a1d68241e61c" - integrity sha512-heM78GKSqrIzO9Oz0/y22nTBN7bqSP1Pla2SyU9DiSnQD+Ea9SyyN5RWWlgqsqeBLNDkSlE9J9EHFmdMPzxB/g== +electron-to-chromium@^1.4.84: + version "1.4.89" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz#33c06592812a17a7131873f4596579084ce33ff8" + integrity sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw== -elliptic@^6.0.0: +elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -4165,21 +4419,16 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -"emoji-regex@>=6.0.0 <=6.1.1": - version "6.1.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" - integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4195,21 +4444,20 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== +enhanced-resolve@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" + integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" entities@^1.1.1, entities@~1.1.1: version "1.1.2" @@ -4217,16 +4465,14 @@ entities@^1.1.1, entities@~1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== error-ex@^1.3.1: version "1.3.2" @@ -4235,22 +4481,36 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== +es-abstract@^1.18.5: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== es-to-primitive@^1.2.1: version "1.2.1" @@ -4261,7 +4521,17 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.0.2, escalade@^3.1.1: +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + +escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -4276,11 +4546,6 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -4291,12 +4556,12 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" esprima@^4.0.0: @@ -4304,27 +4569,32 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eta@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.1.tgz#d985766591676c323f02dfc48a67539212745937" - integrity sha512-H8npoci2J/7XiPnVcCVulBSPsTNGvGaINyMjQDU8AFqp9LGsEYS88g2CiU+d01Sg44WtX7o4nb8wUJ9vnI+tiA== +eta@^1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1" + integrity sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg== etag@~1.8.1: version "1.8.1" @@ -4332,33 +4602,22 @@ etag@~1.8.1: integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= eval@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.4.tgz#e05dbe0dab4b9330215cbb7bf4886eb24bd58700" - integrity sha512-npGsebJejyjMRnLdFu+T/97dnigqIU0Ov3IGrZ8ygd1v7RL1vGkEKtvyWZobqUH1AQgKlg0Yqqe2BtMA9/QZLw== + version "0.1.7" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.7.tgz#106f75f9d6feb10a68adeaf97a43a582c58e0b2f" + integrity sha512-ju9MU0XxhlibL4H5Ln8jCPJONGOS7unrBY+x1ICub09Ohg0tWTcBVkqgbJpRmczNobY8RxqCdar7hkdg5msVCA== dependencies: + "@types/node" "*" require-like ">= 0.1.1" -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -eventsource@^1.0.7: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" - integrity sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA== - dependencies: - original "^1.0.0" +events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -4368,23 +4627,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" get-stream "^6.0.0" @@ -4396,30 +4642,24 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" + homedir-polyfill "^1.0.1" express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.19.2" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -4433,13 +4673,13 @@ express@^4.17.1: on-finished "~2.3.0" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.9.7" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" statuses "~1.5.0" type-is "~1.6.18" utils-merge "1.0.1" @@ -4452,55 +4692,37 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + fast-url-parser@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" @@ -4509,16 +4731,16 @@ fast-url-parser@1.1.3: punycode "^1.3.2" fastq@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.7.0.tgz#fcd79a08c5bd7ec5b55cd3f5c4720db551929801" - integrity sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ== + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -4534,18 +4756,18 @@ fbjs-css-vars@^1.0.0: resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== -fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" - integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== dependencies: - cross-fetch "^3.0.4" + cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + ua-parser-js "^0.7.30" feed@^4.2.2: version "4.2.2" @@ -4554,18 +4776,6 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -4574,25 +4784,10 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^7.0.1: version "7.0.1" @@ -4601,6 +4796,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.2.tgz#fff662368e505d69826abb113f0f6a98f56e9d5f" + integrity sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg== + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4614,39 +4814,15 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@4.1.0, find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4654,76 +4830,84 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" flux@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.1.tgz#7843502b02841d4aaa534af0b373034a1f75ee5c" - integrity sha512-emk4RCvJ8RzNP2lNpphKnG7r18q8elDYNAPx7xn+bDeOIo9FFfxEfIQ2y6YbQNmnsGD3nH1noxtLE64Puz1bRQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" + integrity sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw== dependencies: fbemitter "^3.0.0" - fbjs "^3.0.0" + fbjs "^3.0.1" -follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== +follow-redirects@^1.0.0, follow-redirects@^1.14.7: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreach@^2.0.4, foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= -fork-ts-checker-webpack-plugin@4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" + integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" minimatch "^3.0.4" - semver "^5.6.0" + schema-utils "2.7.0" + semver "^7.3.2" tapable "^1.0.0" - worker-rpc "^0.1.0" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= +fs-extra@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" + integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -fs-extra@^9.1.0: +fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -4733,12 +4917,10 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs-walk@^0.0.2: version "0.0.2" @@ -4747,30 +4929,12 @@ fs-walk@^0.0.2: dependencies: async "*" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -4780,27 +4944,31 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -4819,41 +4987,39 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -github-slugger@^1.0.0, github-slugger@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" - integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== - dependencies: - emoji-regex ">=6.0.0 <=6.1.1" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" +github-slugger@^1.0.0, github-slugger@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" + integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== -glob-parent@^5.1.1: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4: +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -4872,13 +5038,33 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -global-modules@2.0.0: +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: global-prefix "^3.0.0" +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" @@ -4893,40 +5079,29 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globby@^11.0.1, globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.2: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== +globby@^12.0.2: + version "12.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" + integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== dependencies: - array-union "^2.1.0" + array-union "^3.0.1" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" + fast-glob "^3.2.7" + ignore "^5.1.9" + merge2 "^1.4.1" + slash "^4.0.0" got@^9.6.0: version "9.6.0" @@ -4945,34 +5120,28 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -graceful-fs@^4.2.4: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +graphlib@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da" + integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== + dependencies: + lodash "^4.17.15" -gray-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454" - integrity sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw== +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== dependencies: - js-yaml "^3.11.0" + js-yaml "^3.13.1" kind-of "^6.0.2" section-matter "^1.0.0" strip-bom-string "^1.0.0" -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -4985,6 +5154,11 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4995,48 +5169,31 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: +has-glob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" + is-glob "^3.0.0" -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-values@^1.0.0: +has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + has-symbols "^1.0.2" has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -has@^1.0.0, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -5044,12 +5201,13 @@ has@^1.0.0, has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -5059,18 +5217,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hast-to-hyperscript@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-7.0.4.tgz#7c4c037d9a8ea19b0a3fdb676a26448ad922353d" - integrity sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA== - dependencies: - comma-separated-tokens "^1.0.0" - property-information "^5.3.0" - space-separated-tokens "^1.0.0" - style-to-object "^0.2.1" - unist-util-is "^3.0.0" - web-namespaces "^1.1.2" - hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -5108,23 +5254,9 @@ hast-util-from-parse5@^6.0.0: web-namespaces "^1.0.0" hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== - -hast-util-raw@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-5.0.2.tgz#62288f311ec2f35e066a30d5e0277f963ad43a67" - integrity sha512-3ReYQcIHmzSgMq8UrDZHFL0oGlbuVGdLKs8s/Fe8BfHFAyZDrdv1fy/AGn+Fim8ZuvAHcJ61NQhVMtyfHviT/g== - dependencies: - hast-util-from-parse5 "^5.0.0" - hast-util-to-parse5 "^5.0.0" - html-void-elements "^1.0.0" - parse5 "^5.0.0" - unist-util-position "^3.0.0" - web-namespaces "^1.0.0" - xtend "^4.0.0" - zwitch "^1.0.0" + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-raw@6.0.1: version "6.0.1" @@ -5142,17 +5274,6 @@ hast-util-raw@6.0.1: xtend "^4.0.0" zwitch "^1.0.0" -hast-util-to-parse5@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-5.1.2.tgz#09d27bee9ba9348ea05a6cfcc44e02f9083969b6" - integrity sha512-ZgYLJu9lYknMfsBY0rBV4TJn2xiwF1fXFFjbP6EE7S0s5mS8LIKBVWzhA1MeIs1SWW6GnnE4In6c3kPb+CWhog== - dependencies: - hast-to-hyperscript "^7.0.0" - property-information "^5.0.0" - web-namespaces "^1.0.0" - xtend "^4.0.0" - zwitch "^1.0.0" - hast-util-to-parse5@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" @@ -5190,11 +5311,6 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -5216,13 +5332,20 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -5233,51 +5356,23 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier-terser@^5.0.1: - version "5.0.5" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz#8f12f639789f04faa9f5cf2ff9b9f65607f21f8b" - integrity sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" +html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== -html-minifier-terser@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== +html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" he "^1.2.0" - param-case "^3.0.3" + param-case "^3.0.4" relateurl "^0.2.7" - terser "^4.6.3" + terser "^5.10.0" html-tags@^3.1.0: version "3.1.0" @@ -5289,22 +5384,18 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^4.5.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" - integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.20" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" -htmlparser2@^3.3.0, htmlparser2@^3.9.1: +htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -5316,6 +5407,16 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -5326,16 +5427,16 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" + inherits "2.0.4" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" http-errors@~1.6.2: version "1.6.3" @@ -5347,38 +5448,23 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== +http-proxy-middleware@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a" + integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg== dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" -http-proxy@^1.17.0: +http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -5387,6 +5473,11 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -5397,55 +5488,53 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24: +iconv-lite@0.4, iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immer@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== +ignore@^5.1.9, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= +image-size@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.1.tgz#86d6cfc2b1d19eab5d2b368d4b9194d9e48541c5" + integrity sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ== dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" + queue "6.0.2" -import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" +immer@^9.0.7: + version "9.0.12" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" + integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== -import-fresh@^3.2.2, import-fresh@^3.3.0: +import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -5458,14 +5547,6 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -5476,20 +5557,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -infima@0.2.0-alpha.22: - version "0.2.0-alpha.22" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.22.tgz#d3da88ae2f43686e82405409df8fd0f6208148cd" - integrity sha512-wKOWp4C1lTFG/h54UWD3Uf6VEsj5qYehM3ZVio3GBzIQuY8B3cTiwG7ZRNoobg+LvdQA21p5BJTugpTLQJLIrA== +infima@0.2.0-alpha.37: + version "0.2.0-alpha.37" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" + integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== inflight@^1.0.4: version "1.0.6" @@ -5499,16 +5570,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -5519,7 +5585,7 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -5529,57 +5595,46 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" -ip@^1.1.0, ip@^1.1.5: +ip@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" @@ -5595,26 +5650,24 @@ is-alphanumerical@^1.0.0: is-decimal "^1.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - binary-extensions "^1.0.0" + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -5623,20 +5676,23 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== is-ci@^2.0.0: version "2.0.0" @@ -5645,122 +5701,63 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: +is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extendable@^0.1.0, is-extendable@^0.1.1: +is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -5777,17 +5774,30 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== dependencies: - kind-of "^3.0.2" + has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" @@ -5804,104 +5814,109 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: +is-path-cwd@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - has "^1.0.3" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0, is-root@^2.1.0: +is-root@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - html-comment-regex "^1.1.0" + has-tostringtag "^1.0.0" -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== -is-windows@^1.0.2: +is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -5911,15 +5926,12 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" is-yarn-global@^0.3.0: version "0.3.0" @@ -5931,7 +5943,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -5948,45 +5960,50 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jest-worker@^26.5.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== +jest-worker@^27.0.2, jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.0.0" -joi@^17.3.0, joi@^17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" - integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== +joi@^17.5.0, joi@^17.6.0: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" +js-levenshtein@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.11.0, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.0.0: +js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -6008,7 +6025,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -6018,29 +6035,27 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-pointer@0.6.2, json-pointer@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json5@^2.1.0, json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" +json5@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" @@ -6058,29 +6073,10 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== +khroma@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-1.4.1.tgz#ad6a5b6a972befc5112ce5129887a1a83af2c003" + integrity sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" @@ -6092,18 +6088,10 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== latest-version@^5.1.0: version "5.1.0" @@ -6117,41 +6105,34 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +lilconfig@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" +loader-utils@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== locate-path@^3.0.0: version "3.0.0" @@ -6168,6 +6149,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.assignin@^4.0.9: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" @@ -6213,6 +6201,11 @@ lodash.foreach@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.map@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" @@ -6248,26 +6241,16 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6275,12 +6258,12 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - tslib "^1.10.0" + tslib "^2.0.3" lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" @@ -6292,13 +6275,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -6306,45 +6282,45 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -make-dir@^3.0.0, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -make-dir@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha1-GA8fnr74sOY45BZq1S24eb6y/8U= markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== +marked@^4.0.10: + version "4.0.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" + integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== + +matched@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/matched/-/matched-1.0.2.tgz#1d95d77dd5f1b5075a9e94acde5462ffd85f317a" + integrity sha512-7ivM1jFZVTOOS77QsR+TtYHH0ecdLclMkqbf5qiJdX2RorqfhsL65QHySPZgDE0ZjHoh+mQUNHTanNXIlzXd0Q== + dependencies: + arr-union "^3.1.0" + async-array-reduce "^0.2.1" + glob "^7.1.2" + has-glob "^1.0.0" + is-valid-glob "^1.0.0" + resolve-dir "^1.0.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -6354,13 +6330,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdast-squeeze-paragraphs@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-3.0.5.tgz#f428b6b944f8faef454db9b58f170c4183cb2e61" - integrity sha512-xX6Vbe348Y/rukQlG4W3xH+7v4ZlzUbSY4HUIQCuYrF2DrkcHx584mCaFxkWoDZKNUfyLZItHC9VAqX3kIP7XA== - dependencies: - unist-util-remove "^1.0.0" - mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" @@ -6368,13 +6337,6 @@ mdast-squeeze-paragraphs@^4.0.0: dependencies: unist-util-remove "^2.0.0" -mdast-util-definitions@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" - integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== - dependencies: - unist-util-visit "^1.0.0" - mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -6396,21 +6358,6 @@ mdast-util-to-hast@10.0.1: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" -mdast-util-to-hast@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-7.0.0.tgz#589b562ce1ae0a7849e6c38536a9e7bc4f415e54" - integrity sha512-vxnXKSZgvPG2grZM3kxaF052pxsLtq8TPAkiMkqYj1nFTOazYUPXt3LFYIEB6Ws/IX7Uyvljzk64kD6DwZl/wQ== - dependencies: - collapse-white-space "^1.0.0" - detab "^2.0.0" - mdast-util-definitions "^1.2.0" - mdurl "^1.0.1" - trim-lines "^1.0.0" - unist-builder "^2.0.0" - unist-util-generated "^1.0.0" - unist-util-position "^3.0.0" - unist-util-visit "^2.0.0" - mdast-util-to-string@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" @@ -6421,50 +6368,46 @@ mdast-util-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdurl@^1.0.0, mdurl@^1.0.1: +mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -mdx-link-checker@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mdx-link-checker/-/mdx-link-checker-0.0.7.tgz#3196b337460d24d3dea919201e7c0f8c324e8c77" - integrity sha512-u3ZaaPi0M8LmlAalyVScUd4DvOUVjFWuPvXDldxzNbWHlq0h6uKbKnTFeJq0a3ia3qaiI7DJmejNhIqBjp7Pyg== +mdx-link-checker@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/mdx-link-checker/-/mdx-link-checker-0.1.1.tgz#c146eada842bb3e8b6ccd0c7f6a5f4146ea5fcea" + integrity sha512-ZwHGrZHN1kma3boCP1C+q3hmYmFEmlRCuWkoP/kCEViIU+zF8NM1QbGJKUvPJNv+9n5c+KqfW86y7WTfFb0DIQ== dependencies: "@mdx-js/mdx" "^1.5.5" fs-walk "^0.0.2" remark-slug "^5.1.2" +mdx-mermaid@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/mdx-mermaid/-/mdx-mermaid-1.2.2.tgz#3be9870c3bbf944d47dba805acf3cf877499e58f" + integrity sha512-izl9Vaus0fJHJb6IGgcGZ79LpfFACfn28ExPXKL815RTMT9bgDRIAubufZUCgoCAAv/2S1VTxJLWTwbck4TpLA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" +medium-zoom@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" + integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== +memfs@^3.1.2, memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" + fs-monkey "1.0.3" merge-descriptors@1.0.1: version "1.0.1" @@ -6476,47 +6419,38 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +mermaid@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-8.14.0.tgz#ef589b0537f56d6340069070edb51719a4faba00" + integrity sha512-ITSHjwVaby1Li738sxhF48sLTxcNyUAoWfoqyztL1f7J6JOLpHOuQPNLBb6lxGPUA0u7xP9IRULgvod0dKu35A== + dependencies: + "@braintree/sanitize-url" "^3.1.0" + d3 "^7.0.0" + dagre "^0.8.5" + dagre-d3 "^0.6.4" + dompurify "2.3.5" + graphlib "^2.1.8" + khroma "^1.4.1" + moment-mini "^2.24.0" + stylis "^4.0.10" methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" miller-rabin@^4.0.0: version "4.0.1" @@ -6526,15 +6460,10 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-db@1.47.0: - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.33.0: version "1.33.0" @@ -6548,35 +6477,18 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.27: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== - dependencies: - mime-db "1.47.0" - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.43.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.3.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -6595,15 +6507,12 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" - integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== +mini-css-extract-plugin@^2.5.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" + schema-utils "^4.0.0" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -6615,122 +6524,79 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.3, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.0, minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" - integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -module-alias@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== +mobx-react-lite@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.3.0.tgz#7174e807201943beff6f9d3701492314c9fc0db3" + integrity sha512-U/kMSFtV/bNVgY01FuiGWpRkaQVHozBq5CEBZltFvPt4FcV111hEWkgwqVg9GPPZSEuEdV438PEz8mk8mKpYlA== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= +mobx-react@^7.2.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.3.0.tgz#a17dedb71b75dad2337e3f95eb753179f6cfe732" + integrity sha512-RGEcwZokopqyJE5JPwXKB9FWMSqFM9NJVO2QPI+z6laJTJeBHqvPicjnKgY5mvihxTeXB1+72TnooqUePeGV1g== dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" + mobx-react-lite "^3.3.0" + +mobx@^6.3.13: + version "6.5.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.5.0.tgz#dc2d028b1882737f6e813fc92454381e438b7ad3" + integrity sha512-pHZ/cySF00FVENDWIDzJyoObFahK6Eg4d0papqm6d7yMkxWTZ/S/csqJX1A3PsYy4t5k3z2QnlwuCfMW5lSEwA== + +moment-mini@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.24.0.tgz#fa68d98f7fe93ae65bf1262f6abb5fb6983d8d18" + integrity sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ== + +mrmime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b" + integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -6744,120 +6610,104 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanoid@^3.1.22: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +nanoid@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" + lower-case "^2.0.2" + tslib "^2.0.3" node-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== dependencies: - lodash.toarray "^4.4.0" + http2-client "^1.2.5" -node-fetch@2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.0.tgz#37a874ea723855f37db091e6c186e5b67a01d4b2" + integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== +node-polyfill-webpack-plugin@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz#56bfa4d16e17addb9d6b1ef3d04e790c401f5f1d" + integrity sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow== dependencies: - assert "^1.1.1" + assert "^2.0.0" browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" + buffer "^6.0.3" + console-browserify "^1.2.0" constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" + crypto-browserify "^3.12.0" + domain-browser "^4.19.0" + events "^3.3.0" + filter-obj "^2.0.2" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.1" + path-browserify "^1.0.1" process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" + punycode "^2.1.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.3.0" + timers-browserify "^2.0.12" + tty-browserify "^0.0.1" url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" + util "^0.12.4" + vm-browserify "^1.1.2" -node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0= + dependencies: + es6-promise "^3.2.1" -node-releases@^1.1.61, node-releases@^1.1.71: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= dependencies: - remove-trailing-separator "^1.0.1" + inherits "^2.0.1" + readable-stream "~1.0.31" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -6869,32 +6719,15 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-run-path@^4.0.1: version "4.0.1" @@ -6908,96 +6741,98 @@ nprogress@^0.2.0: resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= -nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" -null-loader@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a" - integrity sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg== +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" + fast-safe-stringify "^2.0.7" -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -7030,41 +6865,28 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" - integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== +open@^8.0.9, open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +openapi-sampler@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.2.1.tgz#2ca9eea527f8f2ddb32c3ae1dda31afd8bf0833f" + integrity sha512-mHrYmyvcLD0qrfqPkPRBAL2z16hGT2rW0d0B7nklfoTcc3pmkJLkSZlKSeFgerUM41E5c7jlxf0Y19xrM7mWQQ== + dependencies: + "@types/json-schema" "^7.0.7" + json-pointer "0.6.2" opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -7075,22 +6897,10 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -7101,13 +6911,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -7122,10 +6925,12 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" @@ -7134,17 +6939,13 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + "@types/retry" "^0.12.0" + retry "^0.13.1" p-try@^2.0.0: version "2.2.0" @@ -7166,22 +6967,13 @@ pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -7190,30 +6982,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -7226,14 +7005,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -7244,17 +7015,29 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-numeric-range@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.2.0.tgz#aa70b00f29624ed13e9f943e9461b306e386b0fa" - integrity sha512-1q2tXpAOplPxcl8vrIGPWz1dJxxfmdRkCFcpxxMBerDnGuuHalOWF/xj9L8Nn5XoTUoB/6F0CeQBp2fMgkOYFg== +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" parse5@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parse5@^6.0.0: +parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== @@ -7264,28 +7047,18 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-exists@^3.0.0: version "3.0.0" @@ -7302,22 +7075,17 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@1.0.2, path-is-inside@^1.0.2: +path-is-inside@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -7345,9 +7113,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -7355,39 +7123,20 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" +perfect-scrollbar@^1.5.1: + version "1.5.5" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz#41a211a2fb52a7191eff301432134ea47052b27f" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pkg-dir@^4.1.0: version "4.2.0" @@ -7396,28 +7145,32 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -pkg-up@3.1.0: +pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= +plugin-image-zoom@ataft/plugin-image-zoom: + version "0.0.0" + resolved "https://codeload.github.com/ataft/plugin-image-zoom/tar.gz/86f6f0b4f927ded94dcfdc18c0a9ee702ffd8d06" dependencies: - find-up "^2.1.0" + medium-zoom "^1.0.4" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== +polished@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.4.tgz#640293ba834109614961a700fdacbb6599fb12d0" + integrity sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg== dependencies: - ts-pnp "^1.1.6" + "@babel/runtime" "^7.16.7" -portfinder@^1.0.26: +portfinder@^1.0.28: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== @@ -7426,158 +7179,124 @@ portfinder@^1.0.26: debug "^3.1.1" mkdirp "^0.5.5" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== +postcss-convert-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" + integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-discard-unused@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-4.0.1.tgz#ee7cc66af8c7e8c19bd36f12d09c4bde4039abea" - integrity sha512-/3vq4LU0bLH2Lj4NYN7BTf2caly0flUB7Xtrk9a5K3yLuXMkHMqMO/x3sDq8W2b1eQFSCyY0IVz2L+0HP8kUUA== +postcss-discard-unused@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" + integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== dependencies: - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - uniqs "^2.0.0" + postcss-selector-parser "^6.0.5" -postcss-loader@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.2.0.tgz#f6993ea3e0f46600fb3ee49bbd010448123a7db4" - integrity sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA== +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" - klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - semver "^7.3.4" + klona "^2.0.5" + semver "^7.3.5" -postcss-merge-idents@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-4.0.1.tgz#b7df282a92f052ea0a66c62d8f8812e6d2cbed23" - integrity sha512-43S/VNdF6II0NZ31YxcvNYq4gfURlPAAsJW/z84avBXQCaP4I4qRHUH18slW/SOlJbcxxCobflPNUApYDddS7A== +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: - cssnano-util-same-parent "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +postcss-merge-longhand@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" + integrity sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== dependencies: - browserslist "^4.0.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== +postcss-minify-selectors@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" + integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: version "3.0.0" @@ -7607,284 +7326,176 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== +postcss-normalize-positions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" + integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== +postcss-normalize-repeat-style@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" + integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-reduce-idents@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-4.0.2.tgz#30447a6ec20941e78e21bd4482a11f569c4f455b" - integrity sha512-Tz70Ri10TclPoCtFfftjFVddx3fZGUkr0dEDbIEfbYhFUOFQZZ77TEqRrU0e6TvAvF+Wa5VVzYTpFpq0uwFFzw== +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== dependencies: - browserslist "^4.0.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz#042d74e137db83e6f294712096cb413f5aa612c4" - integrity sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-sort-media-queries@^1.7.26: - version "1.31.21" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-1.31.21.tgz#3225ec6eb490402602284ac99963b80461783cee" - integrity sha512-h+HbXXfOVFeLvCJOzl/Z9SqQ25MNpG/73k71756ftisaaJy75h06/Dn6KOwC4OCMN10ewT2PXMzHV03JNKwBbg== - dependencies: - postcss "^7.0.27" - sort-css-media-queries "1.5.0" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== +postcss-sort-media-queries@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz#a99bae69ef1098ee3b64a5fa94d258ec240d0355" + integrity sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ== dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== - -postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + sort-css-media-queries "2.0.4" -postcss-zindex@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-4.0.1.tgz#8db6a4cec3111e5d3fd99ea70abeda61873d10c1" - integrity sha512-d/8BlQcUdEugZNRM9AdCA2V4fqREUtn/wcixLN3L6ITgc2P/FMcVVYz8QZkhItWT9NB5qr8wuN2dJCE4/+dlrA== +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - has "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -postcss@^6.0.23: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" + postcss-selector-parser "^6.0.5" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.27: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.32: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" +postcss-zindex@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" + integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.2.10, postcss@^8.2.7: - version "8.2.10" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.10.tgz#ca7a042aa8aff494b334d0ff3e9e77079f6f702b" - integrity sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw== +postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.7: + version "8.4.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" + integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== dependencies: - colorette "^1.2.2" - nanoid "^3.1.22" - source-map "^0.6.1" - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + nanoid "^3.3.1" + picocolors "^1.0.0" + source-map-js "^1.0.2" prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -pretty-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^3.0.0" pretty-time@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.0.tgz#5ad4f90c3e447069426c8a53a0eafde60909cdf4" - integrity sha512-GHqzxLYImx1iKN1jJURcuRoA/0ygCcNhfGw1IT8nPIMzarmKQ3Nc+JcG0gi8JXQzuh0C5ShE4npMIoqNin40hg== +prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" + integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== -prismjs@^1.23.0: +prismjs@^1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -7895,11 +7506,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -7907,51 +7513,38 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prompts@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" property-information@^5.0.0, property-information@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.4.0.tgz#16e08f13f4e5c4a7be2e4ec431c01c4f8dba869a" - integrity sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA== + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -7964,14 +7557,6 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -7980,26 +7565,17 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.3.2: +punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -8016,25 +7592,12 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== -querystring-es3@^0.2.0: +querystring-es3@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= @@ -8044,10 +7607,22 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +querystring@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -8074,13 +7649,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -8104,72 +7679,72 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dev-utils@^11.0.1: - version "11.0.4" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^16.14.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== +react-dev-utils@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" + integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.10" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.2" -react-error-overlay@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== +react-error-overlay@^6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" + integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== -react-fast-compare@^3.1.1: +react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== +react-helmet-async@*, react-helmet-async@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" + integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== dependencies: - object-assign "^4.1.1" + "@babel/runtime" "^7.12.5" + invariant "^2.2.4" prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" + react-fast-compare "^3.2.0" + shallowequal "^1.1.0" -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-json-view@^1.21.1: +react-json-view@^1.21.3: version "1.21.3" resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== @@ -8184,20 +7759,13 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-loadable-ssr-addon@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.3.0.tgz#ae9b2d3b11721930f8d8255476d288c0e9f9290f" - integrity sha512-E+lnmDakV0k6ut6R2J77vurwCOwTKEwKlHs9S62G8ez+ujecLPcqjt3YAU8M58kIGjp2QjFlZ7F9QWkq/mr6Iw== +react-loadable-ssr-addon-v5-slorber@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" + integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== dependencies: "@babel/runtime" "^7.10.3" -react-loadable@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.5.0.tgz#582251679d3da86c32aae2c8e689c59f1196d8c4" - integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg== - dependencies: - prop-types "^15.5.0" - react-router-config@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" @@ -8206,24 +7774,24 @@ react-router-config@^5.1.1: "@babel/runtime" "^7.1.2" react-router-dom@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" - integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" + integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== dependencies: - "@babel/runtime" "^7.1.2" + "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.0" + react-router "5.2.1" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.0, react-router@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" - integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== +react-router@5.2.1, react-router@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" + integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== dependencies: - "@babel/runtime" "^7.1.2" + "@babel/runtime" "^7.12.13" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" @@ -8234,30 +7802,32 @@ react-router@5.2.0, react-router@^5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-side-effect@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3" - integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg== +react-tabs@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.2.3.tgz#ccbb3e1241ad3f601047305c75db661239977f2f" + integrity sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg== + dependencies: + clsx "^1.1.0" + prop-types "^15.5.0" react-textarea-autosize@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.2.tgz#4f9374d357b0a6f6469956726722549124a1b2db" - integrity sha512-JrMWVgQSaExQByP3ggI1eA8zF4mF0+ddVuX7acUeK2V7bmrpjVOY72vmLz2IXFJSAXoY3D80nEzrn0GWajWK3Q== + version "8.3.3" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" + integrity sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.0.0" use-latest "^1.0.0" -react@^16.14.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8270,7 +7840,7 @@ react@^16.14.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -8279,26 +7849,27 @@ readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -reading-time@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.3.0.tgz#d13e74431589a4a9038669f24d5acbc08bbb015d" - integrity sha512-RJ8J5O6UvrclfZpcPSPuKusrdRfoY7uXXoYOOdeswZNtSkQaewT3919yz6RyloDBR+iwcUyz5zGOUjhgvfuv3g== +reading-time@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== rechoir@^0.6.2: version "0.6.2" @@ -8307,77 +7878,99 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -recursive-readdir@2.2.2: +recursive-readdir@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== dependencies: minimatch "3.0.4" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +redoc@^2.0.0-rc.64: + version "2.0.0-rc.65" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.65.tgz#54f3e8fe7b526ab22cb9f2d5a0b122367181beb6" + integrity sha512-VqJbhb3krYXFP8De7ygyaWsA4jr9K5avsMo3GJUDv2xPiHTOzcprkIfOaL4ZdINn03x6JT1GOa47cWhrmb5KVA== + dependencies: + "@redocly/openapi-core" "^1.0.0-beta.54" + "@redocly/react-dropdown-aria" "^2.0.11" + classnames "^2.3.1" + decko "^1.2.0" + dompurify "^2.2.8" + eventemitter3 "^4.0.7" + json-pointer "^0.6.2" + lunr "^2.3.9" + mark.js "^8.11.1" + marked "^4.0.10" + mobx-react "^7.2.0" + openapi-sampler "^1.2.1" + path-browserify "^1.0.1" + perfect-scrollbar "^1.5.1" + polished "^4.1.3" + prismjs "^1.27.0" + prop-types "^15.7.2" + react-tabs "^3.2.2" + slugify "~1.4.7" + stickyfill "^1.1.1" + style-loader "^3.3.1" + swagger2openapi "^7.0.6" + url-template "^2.0.8" + +redocusaurus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-1.0.0.tgz#de6a2d8d533761c218c135b0120c4d6db3ee53af" + integrity sha512-P6YRmMU/6ffGMM/lJJcXnBl5N9Mgg/nEjr7+sLNbGJIdI/fq51LPp/Mq+kEE3b5cxeNgbggAJCDb8JwELglvHQ== dependencies: - regenerate "^1.4.0" + "@docusaurus/types" "^2.0.0-beta.17" + docusaurus-plugin-redoc "1.0.0" + docusaurus-theme-redoc "1.0.0" -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" registry-auth-token@^4.0.0: version "4.2.1" @@ -8393,15 +7986,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -8419,6 +8012,13 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +relative@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" + integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8= + dependencies: + isobject "^2.0.0" + remark-admonitions@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/remark-admonitions/-/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870" @@ -8429,13 +8029,13 @@ remark-admonitions@^1.2.1: unist-util-visit "^2.0.1" remark-emoji@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.1.0.tgz#69165d1181b98a54ad5d9ef811003d53d7ebc7db" - integrity sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" + integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== dependencies: emoticon "^3.2.0" node-emoji "^1.10.0" - unist-util-visit "^2.0.2" + unist-util-visit "^2.0.3" remark-footnotes@2.0.0: version "2.0.0" @@ -8456,41 +8056,6 @@ remark-mdx@1.6.22: remark-parse "8.0.3" unified "9.2.0" -remark-mdx@^1.5.8: - version "1.5.8" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.5.8.tgz#81fd9085e56ea534b977d08d6f170899138b3f38" - integrity sha512-wtqqsDuO/mU/ucEo/CDp0L8SPdS2oOE6PRsMm+lQ9TLmqgep4MBmyH8bLpoc8Wf7yjNmae/5yBzUN1YUvR/SsQ== - dependencies: - "@babel/core" "7.8.4" - "@babel/helper-plugin-utils" "7.8.3" - "@babel/plugin-proposal-object-rest-spread" "7.8.3" - "@babel/plugin-syntax-jsx" "7.8.3" - "@mdx-js/util" "^1.5.8" - is-alphabetical "1.0.4" - remark-parse "7.0.2" - unified "8.4.2" - -remark-parse@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf" - integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - remark-parse@8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" @@ -8522,13 +8087,6 @@ remark-slug@^5.1.2: mdast-util-to-string "^1.0.0" unist-util-visit "^1.0.0" -remark-squeeze-paragraphs@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-3.0.4.tgz#9fe50c3bf3b572dd88754cd426ada007c0b8dc5f" - integrity sha512-Wmz5Yj9q+W1oryo8BV17JrOXZgUKVcpJ2ApE2pwnoHwhFKSk4Wp2PmFNbmJMgYSqAdFwfkoe+TSYop5Fy8wMgA== - dependencies: - mdast-squeeze-paragraphs "^3.0.0" - remark-squeeze-paragraphs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" @@ -8536,108 +8094,80 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" -repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + "require-like@>= 0.1.1": version "0.1.2" resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + expand-tilde "^2.0.0" + global-modules "^1.0.0" resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-glob/-/resolve-glob-1.0.0.tgz#c6142b0f850367607aae27506be7985d3a8c6931" + integrity sha512-wSW9pVGJRs89k0wEXhM7C6+va9998NsDhgc0Y+6Nv8hrHsu0hUS7Ug10J1EiVtU6N2tKlSNvx9wLihL8Ao22Lg== + dependencies: + extend-shallow "^2.0.1" + is-valid-glob "^1.0.0" + matched "^1.0.2" + relative "^3.0.2" + resolve-dir "^1.0.0" + resolve-pathname@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -8645,38 +8175,16 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -8692,102 +8200,130 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rtl-detect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.2.tgz#8eca316f5c6563d54df4e406171dd7819adda67f" - integrity sha512-5X1422hvphzg2a/bo4tIDbjFjbJUOaPZwqE6dnyyxqwFqfR+tBcvfqapJr0o0VygATVCGKiODEewhZtKF+90AA== +robust-predicates@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" + integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== -rtlcss@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-2.6.2.tgz#55b572b52c70015ba6e03d497e5c5cb8137104b4" - integrity sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA== +rtl-detect@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" + integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== + +rtlcss@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" + integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== dependencies: - "@choojs/findup" "^0.2.1" - chalk "^2.4.2" - mkdirp "^0.5.1" - postcss "^6.0.23" - strip-json-comments "^2.0.0" + find-up "^5.0.0" + picocolors "^1.0.0" + postcss "^8.3.11" + strip-json-comments "^3.1.1" run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - aproba "^1.1.1" + queue-microtask "^1.2.2" -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +rw@1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + +rxjs@^7.5.4: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: - tslib "^1.9.0" + tslib "^2.1.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4, sax@~1.2.4: +sass-loader@^10.1.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.1.tgz#17e51df313f1a7a203889ce8ff91be362651276e" + integrity sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sass@^1.49.9: + version "1.49.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" + integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -schema-utils@^2.0.0, schema-utils@^2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" - integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "@types/json-schema" "^7.0.6" + "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" @@ -8801,12 +8337,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.8: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== +selfsigned@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" + integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== dependencies: - node-forge "^0.10.0" + node-forge "^1.2.0" semver-diff@^3.1.1: version "3.1.1" @@ -8820,7 +8356,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +semver@^5.4.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -8830,17 +8366,17 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4, semver@^7.3.5: +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== dependencies: debug "2.6.9" depd "~1.1.2" @@ -8849,22 +8385,17 @@ send@0.17.1: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "1.8.1" mime "1.6.0" - ms "2.1.1" + ms "2.1.3" on-finished "~2.3.0" range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -8895,30 +8426,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + send "0.17.2" setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" @@ -8930,10 +8446,10 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" @@ -8943,12 +8459,17 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - shebang-regex "^1.0.0" + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== shebang-command@^2.0.0: version "2.0.0" @@ -8957,22 +8478,17 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +shell-quote@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.4: +shelljs@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -8981,25 +8497,71 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - is-arrayish "^0.3.1" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sirv@^1.0.7: - version "1.0.11" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.11.tgz#81c19a29202048507d6ec0d8ba8910fda52eb5a4" - integrity sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg== + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: - "@polka/url" "^1.0.0-next.9" - mime "^2.3.1" + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" totalist "^1.0.0" sisteransi@^1.0.5: @@ -9007,12 +8569,12 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -sitemap@^6.3.6: - version "6.4.0" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-6.4.0.tgz#b4bc4edf36de742405a7572bc3e467ba484b852e" - integrity sha512-DoPKNc2/apQZTUnfiOONWctwq7s6dZVspxAZe2VPMNtoqNq7HgXRvlRnbIpKjf+8+piQdWncwcy+YhhTGY5USQ== +sitemap@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" + integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== dependencies: - "@types/node" "^14.14.28" + "@types/node" "^17.0.5" "@types/sax" "^1.2.1" arg "^5.0.0" sax "^1.2.4" @@ -9022,107 +8584,49 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -sockjs-client@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" - integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.1" +slugify@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" + integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" -sort-css-media-queries@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-1.5.0.tgz#8f605ad372caad0b81be010311882c046e738093" - integrity sha512-QofNE7CEVH1AKdhS7L9IPbV9UtyQYNXyw++8lC+xG6iOLlpzsmncZRiKbihTAESvZ8wOhwnPoesHbMrehrQyyw== - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" +sort-css-media-queries@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908" + integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw== source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -9165,32 +8669,11 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -9201,131 +8684,85 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -std-env@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" - integrity sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ== - dependencies: - ci-info "^1.6.0" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +std-env@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" + integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI= -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + inherits "~2.0.4" + readable-stream "^3.5.0" -string-width@^4.0.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" -string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + strip-ansi "^6.0.1" -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== +string-width@^5.0.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" -string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -9342,47 +8779,45 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^2.0.0" + ansi-regex "^5.0.1" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +strip-ansi@^7.0.0, strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^6.0.1" strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -9390,40 +8825,53 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -style-to-object@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" - integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== +styled-components@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" + integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== dependencies: - inline-style-parser "0.1.1" + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" +stylis@^4.0.10: + version "4.0.13" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" @@ -9437,96 +8885,73 @@ svg-parser@^2.0.2: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" +svgo@^2.5.0, svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" -tapable@^1.0.0, tapable@^1.1.3: +swagger2openapi@^7.0.6: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^6.0.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser@^4.1.2, terser@^4.6.3: - version "4.6.10" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2" - integrity sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + terser "^5.7.2" -terser@^5.3.4: - version "5.6.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== +terser@^5.10.0, terser@^5.7.2: + version "5.12.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" + integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== dependencies: + acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" - source-map-support "~0.5.19" + source-map-support "~0.5.20" -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0: +through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -9539,10 +8964,10 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== +timers-browserify@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" @@ -9552,16 +8977,16 @@ timsort@^0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -to-arraybuffer@^1.0.0: +to-arraybuffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= @@ -9571,26 +8996,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - to-readable-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -9598,20 +9008,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== totalist@^1.0.0: version "1.1.0" @@ -9623,15 +9023,10 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -trim-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" - integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== - trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== trim@0.0.1: version "0.0.1" @@ -9643,42 +9038,27 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-essentials@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" - integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tslib@^1.10.0, tslib@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== - -tslib@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tty-browserify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^2.5.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.1.tgz#d2be8f50bf5f8f0a5fd916d29bf3e98c17e960be" + integrity sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ== -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -9693,15 +9073,20 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" unherit@^1.0.4: version "1.1.3" @@ -9711,39 +9096,28 @@ unherit@^1.0.4: inherits "^2.0.0" xtend "^4.0.0" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unified@8.4.2, unified@^8.4.2: - version "8.4.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" - integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== unified@9.2.0: version "9.2.0" @@ -9757,39 +9131,16 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== +unified@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" + integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== dependencies: - imurmurhash "^0.1.4" + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" unique-string@^2.0.0: version "2.0.0" @@ -9804,9 +9155,9 @@ unist-builder@2.0.3, unist-builder@^2.0.0: integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== unist-util-generated@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" - integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== unist-util-is@^3.0.0: version "3.0.0" @@ -9814,22 +9165,15 @@ unist-util-is@^3.0.0: integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== unist-util-is@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" - integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== unist-util-position@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - unist-util-remove-position@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" @@ -9837,13 +9181,6 @@ unist-util-remove-position@^2.0.0: dependencies: unist-util-visit "^2.0.0" -unist-util-remove@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-1.0.3.tgz#58ec193dfa84b52d5a055ffbc58e5444eb8031a3" - integrity sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g== - dependencies: - unist-util-is "^3.0.0" - unist-util-remove@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" @@ -9866,23 +9203,14 @@ unist-util-visit-parents@^2.0.0: unist-util-is "^3.0.0" unist-util-visit-parents@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz#d4076af3011739c71d2ce99d05de37d545f4351d" - integrity sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - -unist-util-visit@2.0.2, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.2.tgz#3843782a517de3d2357b4c193b24af2d9366afb7" - integrity sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" -unist-util-visit@2.0.3: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -9891,7 +9219,7 @@ unist-util-visit@2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" -unist-util-visit@^1.0.0, unist-util-visit@^1.1.0: +unist-util-visit@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== @@ -9908,23 +9236,10 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== update-notifier@^5.1.0: version "5.1.0" @@ -9953,11 +9268,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - url-loader@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" @@ -9974,13 +9284,10 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3, url-parse@^1.5.1: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= url@^0.11.0: version "0.11.0" @@ -9991,11 +9298,9 @@ url@^0.11.0: querystring "0.2.0" use-composed-ref@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" - integrity sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg== - dependencies: - ts-essentials "^2.0.3" + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849" + integrity sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw== use-isomorphic-layout-effect@^1.0.0: version "1.1.1" @@ -10009,49 +9314,24 @@ use-latest@^1.0.0: dependencies: use-isomorphic-layout-effect "^1.0.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== +util@^0.12.0, util@^0.12.4: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== dependencies: - inherits "2.0.3" + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= @@ -10066,10 +9346,10 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== value-equal@^1.0.1: version "1.0.1" @@ -10081,16 +9361,6 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" @@ -10105,49 +9375,38 @@ vfile-message@^2.0.0: unist-util-stringify-position "^2.0.0" vfile@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.0.tgz#d79248957f43225d57ff67a56effc67bef08946e" - integrity sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg== + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" - replace-ext "1.0.0" unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vm-browserify@^1.0.1: +vm-browserify@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -wait-on@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.3.0.tgz#584e17d4b3fe7b46ac2b9f8e5e102c005c2776c7" - integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== +wait-on@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== dependencies: - axios "^0.21.1" - joi "^17.3.0" + axios "^0.25.0" + joi "^17.6.0" lodash "^4.17.21" minimist "^1.2.5" - rxjs "^6.6.3" + rxjs "^7.5.4" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -10166,87 +9425,77 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webpack-bundle-analyzer@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.1.tgz#c71fb2eaffc10a4754d7303b224adb2342069da1" - integrity sha512-j5m7WgytCkiVBoOGavzNokBOqxe6Mma13X1asfVYtKWM3wxBiRRu1u1iG0Iol5+qp9WgyhkMmBAcvjEfJ2bdDw== +webpack-bundle-analyzer@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" + integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" - commander "^6.2.0" + commander "^7.2.0" gzip-size "^6.0.0" lodash "^4.17.20" opener "^1.5.2" sirv "^1.0.7" ws "^7.3.1" -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.11.2: - version "3.11.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" - integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== - dependencies: - ansi-html "0.0.7" + schema-utils "^4.0.0" + +webpack-dev-server@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.2.2" + ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^2.1.8" + chokidar "^3.5.3" + colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" + default-gateway "^6.0.3" + del "^6.0.0" express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^4.0.0" + selfsigned "^2.0.0" serve-index "^1.9.1" sockjs "^0.3.21" - sockjs-client "^1.5.0" spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" + strip-ansi "^7.0.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -10254,59 +9503,52 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.44.1: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.69.1: + version "5.70.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.9.2" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -webpackbar@^5.0.0-3: - version "5.0.0-3" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.0-3.tgz#f4f96c8fb13001b2bb1348252db4c980ab93aaac" - integrity sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g== - dependencies: - ansi-escapes "^4.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" + +webpackbar@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" + integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== + dependencies: chalk "^4.1.0" - consola "^2.15.0" - figures "^3.2.0" + consola "^2.15.3" pretty-time "^1.1.0" - std-env "^2.2.1" - text-table "^0.2.0" - wrap-ansi "^7.0.0" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" + std-env "^3.0.1" -websocket-driver@^0.7.4: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -10328,12 +9570,30 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" -which@^1.2.9, which@^1.3.1: +which@^1.2.14, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -10354,28 +9614,17 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== dependencies: - microevent.ts "~0.1.1" + string-width "^5.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== wrap-ansi@^7.0.0: version "7.0.0" @@ -10386,6 +9635,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" + integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -10401,17 +9659,15 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - ws@^7.3.1: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + +ws@^8.4.2: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== xdg-basedir@^4.0.0: version "4.0.0" @@ -10425,54 +9681,66 @@ xml-js@^1.6.11: dependencies: sax "^1.2.4" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +yargs@^17.0.1: + version "17.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" + integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" yocto-queue@^0.1.0: version "0.1.0" diff --git a/examples/attach/devspace.yaml b/examples/attach/devspace.yaml new file mode 100644 index 0000000000..4943d4cf05 --- /dev/null +++ b/examples/attach/devspace.yaml @@ -0,0 +1,17 @@ +version: v2beta1 +name: attach + +deployments: + my-deployment: + helm: + values: + containers: + - image: ubuntu + +dev: + my-dev: + imageSelector: ubuntu + attach: {} + workingDir: /app + sync: + - path: ./ diff --git a/go.mod b/go.mod index 8b0e260ee9..82b4cda153 100644 --- a/go.mod +++ b/go.mod @@ -15,12 +15,14 @@ require ( github.com/docker/go-connections v0.4.0 github.com/evanphx/json-patch v4.12.0+incompatible github.com/evanphx/json-patch/v5 v5.1.0 + github.com/gertd/go-pluralize v0.2.0 github.com/ghodss/yaml v1.0.0 github.com/gliderlabs/ssh v0.3.3 github.com/go-resty/resty/v2 v2.7.0 github.com/google/uuid v1.1.2 github.com/gorilla/websocket v1.4.2 github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf // indirect + github.com/invopop/jsonschema v0.3.0 github.com/jessevdk/go-flags v1.4.0 github.com/joho/godotenv v1.3.0 github.com/json-iterator/go v1.1.12 @@ -38,12 +40,12 @@ require ( github.com/otiai10/copy v0.0.0-20180813030456-0046ee23fdbd github.com/otiai10/mint v1.3.3 // indirect github.com/pkg/errors v0.9.1 - github.com/pkg/sftp v1.10.1 + github.com/pkg/sftp v1.13.1 github.com/rhysd/go-github-selfupdate v0.0.0-20180520142321-41c1bbb0804a github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 github.com/sirupsen/logrus v1.8.1 github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c - github.com/spf13/cobra v1.2.1 + github.com/spf13/cobra v1.4.0 github.com/spf13/pflag v1.0.5 github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect github.com/tcnksm/go-gitconfig v0.1.2 // indirect @@ -52,7 +54,7 @@ require ( golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 golang.org/x/net v0.0.0-20211029224645-99673261e6eb golang.org/x/text v0.3.7 - google.golang.org/grpc v1.40.0 + google.golang.org/grpc v1.43.0 google.golang.org/protobuf v1.27.1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/src-d/enry.v1 v1.6.4 diff --git a/go.sum b/go.sum index c1a562e57e..55637a525c 100644 --- a/go.sum +++ b/go.sum @@ -23,10 +23,20 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -36,6 +46,7 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7 cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -45,6 +56,7 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= code.gitea.io/sdk/gitea v0.12.0/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= @@ -116,10 +128,12 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/Djarvur/go-err113 v0.1.0/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= +github.com/Jeffail/gabs/v2 v2.6.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -157,6 +171,7 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= @@ -170,10 +185,14 @@ github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3st github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/atombender/go-jsonschema v0.9.0 h1:p401YAKXnAURMwNXUB7oJMn6KDAS34IauXnoFk7iPfk= +github.com/atombender/go-jsonschema v0.9.0/go.mod h1:ev1S/jfIbe8uIdBSPPVWB0Pj7NuHTe+JkM2Gw+JaaD8= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.90/go.mod h1:es1KtYUFs7le0xQ3rOihkuoVD90z7D0fR2Qm4S00/gU= @@ -188,6 +207,7 @@ github.com/aws/aws-sdk-go v1.34.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -220,10 +240,13 @@ github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMS github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -231,11 +254,19 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20160425231609-f8ad88b59a58/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/compose-spec/compose-go v1.2.2 h1:y1dwl3KUTBnWPVur6EZno9zUIum6Q87/F5keljnGQB4= @@ -290,12 +321,17 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.15 h1:cKRCLMj3Ddm54bKSpemfQ8AtYFBhAI2MPmdys22fBdc= github.com/creack/pty v1.1.15/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/danielgtaylor/casing v0.0.0-20210126043903-4e55e6373ac3/go.mod h1:eFdYmNxcuLDrRNW0efVoxSaApmvGXfHZ9k2CT/RSUF0= +github.com/danielgtaylor/huma v1.3.2 h1:XW1LW7o4HlRjigJz4XVZHcnROUGEzPhe13+SsHeWf2c= +github.com/danielgtaylor/huma v1.3.2/go.mod h1:2iZhNWUuIywghcke8CRLOBv/AaHN/ZUbjL4Yb1mWlzs= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -363,7 +399,10 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -375,6 +414,9 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -387,8 +429,13 @@ github.com/frankban/quicktest v1.13.1/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= +github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/gertd/go-pluralize v0.2.0 h1:VzWNnxkUo3wkW2Nmp+3ieHSTQQ0LBHeSVxlKsQPQ+UY= +github.com/gertd/go-pluralize v0.2.0/go.mod h1:4ouO1Ndf/r7sZMorwp4Sbfw80lUni+sd+o3qJR8L9To= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -397,6 +444,7 @@ github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.3 h1:mBQ8NiOgDkINJrZtoizkC3nDNYgSaWtxyem6S2XHBtA= github.com/gliderlabs/ssh v0.3.3/go.mod h1:ZSS+CUoKHDrqVakTfTWUlKSr9MtMFkC4UvtQKD7O914= +github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -453,6 +501,7 @@ github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2 github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -484,6 +533,7 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -504,6 +554,7 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= @@ -561,6 +612,7 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -570,8 +622,12 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio v1.0.1/go.mod h1:t/HQoYBZSsWSNK35C6CO/TpPLDVWvxOHboWUAweKUpk= github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= @@ -587,12 +643,15 @@ github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.2.4/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -614,6 +673,9 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/graphql-go/graphql v0.7.9/go.mod h1:k6yrAYQaSP59DC5UVxbgxESlmVyojThKdORUqGDGmrI= +github.com/graphql-go/graphql v0.8.0/go.mod h1:nKiHzRM0qopJEwCITUuIsxk9PlVlwIiiI8pnJEhordQ= +github.com/graphql-go/handler v0.2.3/go.mod h1:leLF6RpV5uZMN1CdImAxuiayrYYhOk33bZciaUGaXeU= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -630,18 +692,28 @@ github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= github.com/hanwen/go-fuse/v2 v2.0.3/go.mod h1:0EQM6aH2ctVpvZ6a+onrQ/vaykxh2GH7hy3e13vzTUY= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -651,15 +723,22 @@ github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/uuid v0.0.0-20160311170451-ebb0a03e909c/go.mod h1:fHzc09UnyJyqyW+bFuq864eh+wC7dj65aXmXLRe5to0= github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174 h1:WlZsjVhE8Af9IcZDGgJGQpNflI3+MJSBhsgT5PCtzBQ= github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -671,6 +750,8 @@ github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7V github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/invopop/jsonschema v0.3.0 h1:bLc7vCIFtaJYARy0JXnc/IKZygCms+lfOK4BaJM+fkI= +github.com/invopop/jsonschema v0.3.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/ishidawataru/sctp v0.0.0-20191218070446-00ab2ac2db07/go.mod h1:co9pwDoBCm1kGxawmb4sPq0cSIOOWNPT4KnHotMP1Zg= github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg= github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= @@ -700,6 +781,7 @@ github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBv github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -728,6 +810,7 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/koron-go/gqlcost v0.2.2/go.mod h1:8ZAmWla8nXCH0lBTxMZ+gbvgHhCCvTX3V4pEkC3obQA= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -745,6 +828,7 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -753,9 +837,11 @@ github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z github.com/loft-sh/notify v0.0.0-20210827094439-0720dcc7feee h1:hZ79+pKEbCBrH1dVmgZ4jtFrrDPxgM4zqEP1lHlSnvI= github.com/loft-sh/notify v0.0.0-20210827094439-0720dcc7feee/go.mod h1:pq83B8lgfCY7tKdegTTXU6DZxGQkcWMowUTOTpTQmqk= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -770,6 +856,10 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= @@ -777,9 +867,12 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= @@ -797,7 +890,10 @@ github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88J github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -920,11 +1016,13 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.3 h1:7JgpsBaN0uMkyju4tbYHu0mnM55hNKVYLsXmwr15NQI= github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -937,10 +1035,13 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/profile v1.5.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -949,6 +1050,7 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= @@ -966,6 +1068,7 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= @@ -979,6 +1082,7 @@ github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7z github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= @@ -1003,11 +1107,16 @@ github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNue github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= github.com/ryancurrah/gomodguard v1.1.0/go.mod h1:4O8tr7hBODaGE6VIhfJDHcwzh5GUccKSJBU0UMXJFVM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 h1:G04eS0JkAIVZfaJLjla9dNxkJCPiKIGZlw9AfOhzOD0= github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94/go.mod h1:b18R55ulyQ/h3RaWyloPyER7fWQVZvimKKhnI5OfrJQ= +github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= +github.com/sanity-io/litter v1.1.0 h1:BllcKWa3VbZmOZbDCoszYLk7zCsKHz5Beossi8SUcTc= +github.com/sanity-io/litter v1.1.0/go.mod h1:CJ0VCw2q4qKU7LaQr3n7UOSHzgEMgcGco7N/SkZQPjw= github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= @@ -1048,20 +1157,26 @@ github.com/sourcegraph/go-diff v0.5.3/go.mod h1:v9JDtjCE4HHHCZGId75rg8gkKKa98RVj github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -1070,6 +1185,7 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= @@ -1082,6 +1198,7 @@ github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -1097,6 +1214,7 @@ github.com/tcnksm/go-gitconfig v0.1.2 h1:iiDhRitByXAEyjgBqsKi9QU4o2TNtv9kPP3RgPg github.com/tcnksm/go-gitconfig v0.1.2/go.mod h1:/8EhP4H7oJZdIPyT+/UIsG87kTzrzM4UsLGSItWYCpE= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= +github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8= github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= github.com/tetafro/godot v0.4.2/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= @@ -1113,6 +1231,7 @@ github.com/tonistiigi/fsutil v0.0.0-20201103201449-0834f99b7b85/go.mod h1:a7cilN github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/toqueteos/trie v1.0.0 h1:8i6pXxNUXNRAqP246iibb7w/pSFquNTQ+uNfriG7vlk= github.com/toqueteos/trie v1.0.0/go.mod h1:Ywk48QhEqhU1+DwhMkJ2x7eeGxDHiGkAdc9+0DYcbsM= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -1139,12 +1258,15 @@ github.com/vmware-labs/yaml-jsonpath v0.3.2/go.mod h1:U6whw1z03QyqgWdgXxvVnQ90zN github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= github.com/xanzy/go-gitlab v0.32.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= @@ -1168,8 +1290,11 @@ go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= @@ -1197,12 +1322,16 @@ go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0H go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= golang.org/x/build v0.0.0-20190314133821-5284462c4bec/go.mod h1:atTaCNAy0f16Ah5aV1gMSwgiKVHwu/JncqDpuRr7lS4= @@ -1221,6 +1350,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1229,9 +1359,12 @@ golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa h1:idItI2DDfCokpg0N51B2VtiLdJ4vAuXC9fnCb2gACo4= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1271,6 +1404,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1321,10 +1455,13 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1348,8 +1485,13 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1399,9 +1541,11 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1445,21 +1589,37 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210925032602-92d5a993a665/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 h1:saXMvIOKvRFwbOMicHXr0B1uwoxq9dGmLe5ExMES6c4= +golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= @@ -1517,6 +1677,7 @@ golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDq golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1565,8 +1726,12 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1609,6 +1774,17 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1664,14 +1840,36 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 h1:NHN4wOCScVzKhPenJ2dt+BTs3X/XkBVI/Rh4iDt55T8= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= @@ -1698,9 +1896,16 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1733,6 +1938,8 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -1839,6 +2046,7 @@ k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= diff --git a/hack/gen-docs.go b/hack/gen-docs.go deleted file mode 100644 index 0d88b169d7..0000000000 --- a/hack/gen-docs.go +++ /dev/null @@ -1,95 +0,0 @@ -package main - -import ( - "fmt" - "io/ioutil" - "log" - "os" - "path" - "path/filepath" - "regexp" - "strings" - - "github.com/loft-sh/devspace/cmd" - "github.com/loft-sh/devspace/pkg/util/factory" - "github.com/spf13/cobra/doc" -) - -const cliDocsDir = "./docs/pages/commands" -const headerTemplate = `--- -title: "%s" -sidebar_label: %s ---- - -` - -var fixSynopsisRegexp = regexp.MustCompile("(?si)(## devspace.*?\n)(.*?)#(## Synopsis\n*\\s*)(.*?)(\\s*\n\n\\s*)((```)(.*?))?#(## Options)(.*?)((### Options inherited from parent commands)(.*?)#(## See Also)(\\s*\\* \\[devspace\\][^\n]*)?(.*))|(#(## See Also)(\\s*\\* \\[devspace\\][^\n]*)?(.*))\n###### Auto generated by spf13/cobra on .*$") - -// Run executes the command logic -func main() { - filePrepender := func(filename string) string { - name := filepath.Base(filename) - base := strings.TrimSuffix(name, path.Ext(name)) - command := strings.Split(base, "_") - title := strings.Join(command, " ") - sidebarLabel := title - l := len(command) - - if l > 1 { - matches, err := filepath.Glob(cliDocsDir + "/devspace_" + command[1]) - if err != nil { - log.Fatal(err) - } - - if len(matches) > 2 { - sidebarLabel = command[l-1] - } - } - - return fmt.Sprintf(headerTemplate, "Command - "+title, sidebarLabel) - } - - linkHandler := func(name string) string { - base := strings.TrimSuffix(name, path.Ext(name)) - return strings.ToLower(base) + ".md" - } - - f := factory.DefaultFactory() - rootCmd := cmd.BuildRoot(f, true) - - err := doc.GenMarkdownTreeCustom(rootCmd, cliDocsDir, filePrepender, linkHandler) - if err != nil { - log.Fatal(err) - } - - err = filepath.Walk(cliDocsDir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - stat, err := os.Stat(path) - if err != nil { - return err - } - - if stat.IsDir() { - return nil - } - - content, err := ioutil.ReadFile(path) - if err != nil { - return err - } - - newContents := fixSynopsisRegexp.ReplaceAllString(string(content), "$2$3$7$8```\n$4\n```\n\n\n## Flags$10\n## Global & Inherited Flags$13") - - err = ioutil.WriteFile(path, []byte(newContents), 0) - if err != nil { - return err - } - - return nil - }) - if err != nil { - log.Fatal(err) - } -} diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000000..d156588165 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,31 @@ +[build] + base = "docs/" + publish = "build/" + command = """ + set -e + + export OUT_DIR="build/" + export TARGET_OUT_DIR="build/docs" + + # Build docs + yarn build + + # Move files to build/docs/ + mkdir -p tmp-$TARGET_OUT_DIR + mv $OUT_DIR/* tmp-$TARGET_OUT_DIR + mkdir -p $TARGET_OUT_DIR + mv tmp-$TARGET_OUT_DIR/* $TARGET_OUT_DIR + """ + +[build.processing] + skip_processing = false +[build.processing.html] + pretty_urls = true +[build.processing.css] + bundle = false + minify = false +[build.processing.js] + bundle = false + minify = false +[build.processing.images] + compress = true diff --git a/pkg/devspace/config/versions/latest/schema.go b/pkg/devspace/config/versions/latest/schema.go index faf84dfce4..9472042f7a 100644 --- a/pkg/devspace/config/versions/latest/schema.go +++ b/pkg/devspace/config/versions/latest/schema.go @@ -45,16 +45,20 @@ type Config struct { // Version holds the config version. DevSpace will always convert older configs to the current latest // config version, which makes it possible to use the newest DevSpace version also with older config // versions. - Version string `yaml:"version" json:"version"` + Version string `yaml:"version" json:"version" jsonschema:"required"` // Name specifies the name of the DevSpace project and uniquely identifies a project. // DevSpace will not allow multiple active projects with the same name in the same Kubernetes namespace. - Name string `yaml:"name" json:"name"` + Name string `yaml:"name" json:"name" jsonschema:"required"` // Imports merges specified config files into this one. This is very useful to split up your DevSpace configuration // into multiple files and reuse those through git, a remote url or common local path. Imports []Import `yaml:"imports,omitempty" json:"imports,omitempty"` + // Functions are POSIX functions that can be used within pipelines. Those functions can also be imported by + // imports. + Functions map[string]string `yaml:"functions,omitempty" json:"functions,omitempty"` + // Pipelines are the work blocks that DevSpace should execute when devspace dev, devspace build, devspace deploy or devspace purge // is called. Pipelines are defined through a special POSIX script that allows you to use special commands // such as create_deployments, start_dev, build_images etc. to signal DevSpace you want to execute @@ -63,10 +67,6 @@ type Config struct { // via the devspace run-pipeline command or used within another pipeline through run_pipelines. Pipelines map[string]*Pipeline `yaml:"pipelines,omitempty" json:"pipelines,omitempty"` - // Functions are POSIX functions that can be used within pipelines. Those functions can also be imported by - // imports. - Functions map[string]string `yaml:"functions,omitempty" json:"functions,omitempty"` - // Images holds configuration of how DevSpace should build images. By default, DevSpace will build all defined images. // If you are using a custom pipeline, you can dynamically define which image is built at which time during the // execution. @@ -91,19 +91,10 @@ type Config struct { // Vars are config variables that can be used inside other config sections to replace certain values dynamically Vars map[string]*Variable `yaml:"vars,omitempty" json:"vars,omitempty"` - // PullSecrets are image pull secrets that will be created by devspace in the target namespace - // during devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single - // one or the one specified. - PullSecrets map[string]*PullSecretConfig `yaml:"pullSecrets,omitempty" json:"pullSecrets,omitempty"` - // Commands are custom commands that can be executed via 'devspace run COMMAND'. These commands are run within a pseudo bash // that also allows executing special commands such as run_watch or is_equal. Commands map[string]*CommandConfig `yaml:"commands,omitempty" json:"commands,omitempty"` - // Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not - // fulfilled, DevSpace will fail. - Require RequireConfig `yaml:"require,omitempty" json:"require,omitempty"` - // Dependencies are sub devspace projects that lie in a local folder or remote git repository that can be executed // from within the pipeline. In contrast to imports, these projects pose as separate fully functional DevSpace projects // that typically lie including source code in a different folder and can be used to compose a full microservice @@ -111,22 +102,31 @@ type Config struct { // the same project multiple times, make sure to use a different name for each of those instances. Dependencies map[string]*DependencyConfig `yaml:"dependencies,omitempty" json:"dependencies,omitempty"` + // PullSecrets are image pull secrets that will be created by devspace in the target namespace + // during devspace dev or devspace deploy. DevSpace will merge all defined pull secrets into a single + // one or the one specified. + PullSecrets map[string]*PullSecretConfig `yaml:"pullSecrets,omitempty" json:"pullSecrets,omitempty"` + + // Require defines what DevSpace, plugins and command versions are required to use this config and if a condition is not + // fulfilled, DevSpace will fail. + Require RequireConfig `yaml:"require,omitempty" json:"require,omitempty"` + // Profiles can be used to change the current configuration and change the behavior of devspace. They are deprecated and // imports should be used instead. - Profiles []*ProfileConfig `yaml:"profiles,omitempty" json:"profiles,omitempty"` + Profiles []*ProfileConfig `yaml:"profiles,omitempty" json:"profiles,omitempty" jsonschema:"-"` // Hooks are actions that are executed at certain points within the pipeline. Hooks are ordered and are executed // in the order they are specified. They are deprecated and pipelines should be used instead. - Hooks []*HookConfig `yaml:"hooks,omitempty" json:"hooks,omitempty"` + Hooks []*HookConfig `yaml:"hooks,omitempty" json:"hooks,omitempty" jsonschema:"-"` } // Import specifies the source of the devspace config to merge type Import struct { + // Enabled specifies if the given import should be enabled + Enabled *bool `yaml:"enabled,omitempty" json:"enabled,omitempty" jsonschema:"required"` + // SourceConfig defines the source for this import SourceConfig `yaml:",inline" json:",inline"` - - // Enabled specifies if the given import should be enabled - Enabled *bool `yaml:"enabled,omitempty" json:"enabled,omitempty"` } // Pipeline defines what DevSpace should do. A pipeline consists of one or more @@ -134,7 +134,10 @@ type Import struct { // of one or more conditional steps that are executed in order. type Pipeline struct { // Name of the pipeline, will be filled automatically - Name string `yaml:"name,omitempty" json:"name,omitempty"` + Name string `yaml:"name,omitempty" json:"name,omitempty" jsonschema:"enum=dev,enum=deploy,enum=build,enum=purge,enum=.*"` + + // Run is the actual shell command that should be executed during this pipeline + Run string `yaml:"run,omitempty" json:"run,omitempty" jsonschema:"required"` // Flags are extra flags that can be used for running the pipeline via // devspace run-pipeline. @@ -143,9 +146,6 @@ type Pipeline struct { // ContinueOnError will not fail the whole job and pipeline if // a call within the step fails. ContinueOnError bool `yaml:"continueOnError,omitempty" json:"continueOnError,omitempty"` - - // Run is the actual shell command that should be executed during this pipeline - Run string `yaml:"run,omitempty" json:"run,omitempty"` } // PipelineFlag defines an extra pipeline flag @@ -156,8 +156,8 @@ type PipelineFlag struct { // Short is optional and is the shorthand name for this flag. E.g. 'g' converts to '-g' Short string `yaml:"short,omitempty" json:"short,omitempty"` - // Type is the type of the flag. Defaults to bool if empty - Type PipelineFlagType `yaml:"type,omitempty" json:"type,omitempty"` + // Type is the type of the flag. Defaults to `bool` + Type PipelineFlagType `yaml:"type,omitempty" json:"type,omitempty" jsonschema:"enum=bool,enum=int,enum=string,enum=stringArray"` // Default is the default value for this flag Default interface{} `yaml:"default,omitempty" json:"default,omitempty"` @@ -210,15 +210,15 @@ type RequireConfig struct { type RequirePlugin struct { // Name of the plugin that should be installed - Name string `yaml:"name" json:"name"` + Name string `yaml:"name" json:"name" jsonschema:"required"` // Version constraint of the plugin that should be installed - Version string `yaml:"version" json:"version"` + Version string `yaml:"version" json:"version" jsonschema:"required"` } type RequireCommand struct { // Name is the name of the command that should be installed - Name string `yaml:"name" json:"name"` + Name string `yaml:"name" json:"name" jsonschema:"required"` // VersionArgs are the arguments to retrieve the version of the command VersionArgs []string `yaml:"versionArgs,omitempty" json:"versionArgs,omitempty"` @@ -237,7 +237,7 @@ type Image struct { // Image is the complete image name including registry and repository // for example myregistry.com/mynamespace/myimage - Image string `yaml:"image" json:"image"` + Image string `yaml:"image" json:"image" jsonschema:"required"` // Tags is an array that specifies all tags that should be build during // the build process. If this is empty, devspace will generate a random tag @@ -245,36 +245,31 @@ type Image struct { // Dockerfile specifies a path (relative or absolute) to the dockerfile. Defaults // to ./Dockerfile - Dockerfile string `yaml:"dockerfile,omitempty" json:"dockerfile,omitempty"` + Dockerfile string `yaml:"dockerfile" json:"dockerfile" jsonschema:"default=./Dockerfile" jsonschema_extras:"group=buildConfig"` // Context is the context path to build with. Defaults to the current working directory - Context string `yaml:"context,omitempty" json:"context,omitempty"` + Context string `yaml:"context,omitempty" json:"context,omitempty" jsonschema:"default=./" jsonschema_extras:"group=buildConfig"` // Entrypoint specifies an entrypoint that will be appended to the dockerfile during // image build in memory. Example: ["sleep", "99999"] - Entrypoint []string `yaml:"entrypoint,omitempty" json:"entrypoint,omitempty"` + Entrypoint []string `yaml:"entrypoint,omitempty" json:"entrypoint,omitempty" jsonschema_extras:"group=overwrites,group_name=In-Memory Overwrites"` // Cmd specifies the arguments for the entrypoint that will be appended // during build in memory to the dockerfile - Cmd []string `yaml:"cmd,omitempty" json:"cmd,omitempty"` + Cmd []string `yaml:"cmd,omitempty" json:"cmd,omitempty" jsonschema_extras:"group=overwrites"` - // CreatePullSecret specifies if a pull secret should be created for this image in the - // target namespace. Defaults to true - CreatePullSecret *bool `yaml:"createPullSecret,omitempty" json:"createPullSecret,omitempty"` + // AppendDockerfileInstructions are instructions that will be appended to the Dockerfile that is build + // at the current build target and are appended before the entrypoint and cmd instructions + AppendDockerfileInstructions []string `yaml:"appendDockerfileInstructions,omitempty" json:"appendDockerfileInstructions,omitempty" jsonschema_extras:"group=overwrites"` - // InjectRestartHelper will inject a small restart script into the container and wraps the entrypoint of that - // container, so that devspace is able to restart the complete container during sync. - // Please make sure you either have an Entrypoint defined in the devspace config or in the - // dockerfile for this image, otherwise devspace will fail. - InjectRestartHelper bool `yaml:"injectRestartHelper,omitempty" json:"injectRestartHelper,omitempty"` + // BuildArgs are the build args that are to the build + BuildArgs map[string]*string `yaml:"buildArgs,omitempty" json:"buildArgs,omitempty" jsonschema_extras:"group=buildConfig,group_name=Build Configuration"` - // RestartHelperPath will load the restart helper from this location instead of using the bundled - // one within DevSpace. Can be either a local path or an URL where to find the restart helper. - RestartHelperPath string `yaml:"restartHelperPath,omitempty" json:"restartHelperPath,omitempty"` + // Target is the target that should get used during the build. Only works if the dockerfile supports this + Target string `yaml:"target,omitempty" json:"target,omitempty" jsonschema_extras:"group=buildConfig"` - // AppendDockerfileInstructions are instructions that will be appended to the Dockerfile that is build - // at the current build target and are appended before the entrypoint and cmd instructions - AppendDockerfileInstructions []string `yaml:"appendDockerfileInstructions,omitempty" json:"appendDockerfileInstructions,omitempty"` + // Network is the network that should get used to build the image + Network string `yaml:"network,omitempty" json:"network,omitempty" jsonschema_extras:"group=buildConfig"` // RebuildStrategy is used to determine when DevSpace should rebuild an image. By default, devspace will // rebuild an image if one of the following conditions is true: @@ -282,33 +277,38 @@ type Image struct { // - The configuration within the devspace.yaml for the image has changed // - A file within the docker context (excluding .dockerignore rules) has changed // This option is ignored for custom builds. - RebuildStrategy RebuildStrategy `yaml:"rebuildStrategy,omitempty" json:"rebuildStrategy,omitempty"` - - // Target is the target that should get used during the build. Only works if the dockerfile supports this - Target string `yaml:"target,omitempty" json:"target,omitempty"` - - // Network is the network that should get used to build the image - Network string `yaml:"network,omitempty" json:"network,omitempty"` - - // BuildArgs are the build args that are to the build - BuildArgs map[string]*string `yaml:"buildArgs,omitempty" json:"buildArgs,omitempty"` + RebuildStrategy RebuildStrategy `yaml:"rebuildStrategy,omitempty" json:"rebuildStrategy,omitempty" jsonschema:"enum=default,enum=always,enum=ignoreContextChanges" jsonschema_extras:"group=buildConfig"` // SkipPush will not push the image to a registry if enabled. Only works if docker or buildkit is chosen // as build method - SkipPush bool `yaml:"skipPush,omitempty" json:"skipPush,omitempty"` + SkipPush bool `yaml:"skipPush,omitempty" json:"skipPush,omitempty" jsonschema_extras:"group=pushPull,group_name=Push & Pull"` + + // CreatePullSecret specifies if a pull secret should be created for this image in the + // target namespace. Defaults to true + CreatePullSecret *bool `yaml:"createPullSecret,omitempty" json:"createPullSecret,omitempty" jsonschema:"required" jsonschema_extras:"group=pushPull"` + + // BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit + BuildKit *BuildKitConfig `yaml:"buildKit,omitempty" json:"buildKit,omitempty" jsonschema_extras:"group=engines,group_name=Build Engines"` // Docker if docker is specified, DevSpace will build the image using the local docker daemon - Docker *DockerConfig `yaml:"docker,omitempty" json:"docker,omitempty"` + Docker *DockerConfig `yaml:"docker,omitempty" json:"docker,omitempty" jsonschema_extras:"group=engines"` // Kaniko if kaniko is specified, DevSpace will build the image in-cluster with kaniko - Kaniko *KanikoConfig `yaml:"kaniko,omitempty" json:"kaniko,omitempty"` - - // BuildKit if buildKit is specified, DevSpace will build the image either in-cluster or locally with BuildKit - BuildKit *BuildKitConfig `yaml:"buildKit,omitempty" json:"buildKit,omitempty"` + Kaniko *KanikoConfig `yaml:"kaniko,omitempty" json:"kaniko,omitempty" jsonschema_extras:"group=engines"` // Custom if custom is specified, DevSpace will build the image with the help of // a custom script. - Custom *CustomConfig `yaml:"custom,omitempty" json:"custom,omitempty"` + Custom *CustomConfig `yaml:"custom,omitempty" json:"custom,omitempty" jsonschema_extras:"group=engines"` + + // InjectRestartHelper will inject a small restart script into the container and wraps the entrypoint of that + // container, so that devspace is able to restart the complete container during sync. + // Please make sure you either have an Entrypoint defined in the devspace config or in the + // dockerfile for this image, otherwise devspace will fail. + InjectRestartHelper bool `yaml:"injectRestartHelper,omitempty" json:"injectRestartHelper,omitempty" jsonschema:"-"` + + // RestartHelperPath will load the restart helper from this location instead of using the bundled + // one within DevSpace. Can be either a local path or an URL where to find the restart helper. + RestartHelperPath string `yaml:"restartHelperPath,omitempty" json:"restartHelperPath,omitempty" jsonschema:"-"` } // RebuildStrategy is the type of a image rebuild strategy @@ -323,28 +323,28 @@ const ( // DockerConfig tells the DevSpace CLI to build with Docker on Minikube or on localhost type DockerConfig struct { + // DisableFallback allows you to turn off kaniko building if docker isn't installed + DisableFallback *bool `yaml:"disableFallback,omitempty" json:"disableFallback,omitempty"` // PreferMinikube allows you to turn off using the minikube docker daemon if the minikube // context is used. PreferMinikube *bool `yaml:"preferMinikube,omitempty" json:"preferMinikube,omitempty"` - // DisableFallback allows you to turn off kaniko building if docker isn't installed - DisableFallback *bool `yaml:"disableFallback,omitempty" json:"disableFallback,omitempty"` // UseCLI specifies if DevSpace should use the docker cli for building UseCLI bool `yaml:"useCli,omitempty" json:"useCli,omitempty"` // Args are additional arguments to pass to the docker cli Args []string `yaml:"args,omitempty" json:"args,omitempty"` // DEPRECATED: UseBuildKit - UseBuildKit bool `yaml:"useBuildKit,omitempty" json:"useBuildKit,omitempty"` + UseBuildKit bool `yaml:"useBuildKit,omitempty" json:"useBuildKit,omitempty" jsonschema:"-"` } // BuildKitConfig tells the DevSpace CLI to type BuildKitConfig struct { - // PreferMinikube if false, will not try to use the minikube docker daemon to build the image - PreferMinikube *bool `yaml:"preferMinikube,omitempty" json:"preferMinikube,omitempty"` - // InCluster if specified, DevSpace will use BuildKit to build the image within the cluster InCluster *BuildKitInClusterConfig `yaml:"inCluster,omitempty" json:"inCluster,omitempty"` + // PreferMinikube if false, will not try to use the minikube docker daemon to build the image + PreferMinikube *bool `yaml:"preferMinikube,omitempty" json:"preferMinikube,omitempty"` + // Args are additional arguments to call docker buildx build with Args []string `yaml:"args,omitempty" json:"args,omitempty"` @@ -561,17 +561,17 @@ type CustomConfig struct { OnChange []string `yaml:"onChange,omitempty" json:"onChange,omitempty"` // DEPRECATED: Commands - Commands []CustomConfigCommand `yaml:"commands,omitempty" json:"commands,omitempty"` + Commands []CustomConfigCommand `yaml:"commands,omitempty" json:"commands,omitempty" jsonschema:"-"` // DEPRECATED: Args - Args []string `yaml:"args,omitempty" json:"args,omitempty"` + Args []string `yaml:"args,omitempty" json:"args,omitempty" jsonschema:"-"` // DEPRECATED: AppendArgs - AppendArgs []string `yaml:"appendArgs,omitempty" json:"appendArgs,omitempty"` + AppendArgs []string `yaml:"appendArgs,omitempty" json:"appendArgs,omitempty" jsonschema:"-"` // DEPRECATED: ImageFlag - ImageFlag string `yaml:"imageFlag,omitempty" json:"imageFlag,omitempty"` + ImageFlag string `yaml:"imageFlag,omitempty" json:"imageFlag,omitempty" jsonschema:"-"` // DEPRECATED: ImageTagOnly - ImageTagOnly bool `yaml:"imageTagOnly,omitempty" json:"imageTagOnly,omitempty"` + ImageTagOnly bool `yaml:"imageTagOnly,omitempty" json:"imageTagOnly,omitempty" jsonschema:"-"` // DEPRECATED: SkipImageArg - SkipImageArg *bool `yaml:"skipImageArg,omitempty" json:"skipImageArg,omitempty"` + SkipImageArg *bool `yaml:"skipImageArg,omitempty" json:"skipImageArg,omitempty" jsonschema:"-"` } // CustomConfigCommand holds the information about a command on a specific operating system @@ -586,16 +586,18 @@ type CustomConfigCommand struct { type DeploymentConfig struct { // Name of the deployment Name string `yaml:"name,omitempty" json:"name,omitempty"` - // Namespace where to deploy this deployment - Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty"` - // UpdateImageTags lets you define if DevSpace should update the tags of the images defined in the - // images section with their most recent built tag. - UpdateImageTags *bool `yaml:"updateImageTags,omitempty" json:"updateImageTags,omitempty"` // Helm tells DevSpace to deploy this deployment via helm Helm *HelmConfig `yaml:"helm,omitempty" json:"helm,omitempty"` // Kubectl tells DevSpace to deploy this deployment via kubectl or kustomize Kubectl *KubectlConfig `yaml:"kubectl,omitempty" json:"kubectl,omitempty"` + + // UpdateImageTags lets you define if DevSpace should update the tags of the images defined in the + // images section with their most recent built tag. + UpdateImageTags *bool `yaml:"updateImageTags,omitempty" json:"updateImageTags,omitempty"` + + // Namespace where to deploy this deployment + Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty"` } // ComponentConfig holds the component information @@ -779,7 +781,7 @@ type RollingUpdateConfig struct { // HelmConfig defines the specific helm options used during deployment type HelmConfig struct { // Chart holds the chart configuration and where DevSpace can find the chart - Chart *ChartConfig `yaml:"chart,omitempty" json:"chart,omitempty"` + Chart *ChartConfig `yaml:"chart,omitempty" json:"chart,omitempty" jsonschema:"required"` // Values are additional values that should get passed to deploying this chart Values map[string]interface{} `yaml:"values,omitempty" json:"values,omitempty"` // ValuesFiles are additional files that hold values for deploying this chart @@ -787,47 +789,47 @@ type HelmConfig struct { // DisplayOutput allows you to display the helm output to the console DisplayOutput bool `yaml:"displayOutput,omitempty" json:"output,omitempty"` - // TemplateArgs are additional arguments to pass to `helm template` - TemplateArgs []string `yaml:"templateArgs,omitempty" json:"templateArgs,omitempty"` // UpgradeArgs are additional arguments to pass to `helm upgrade` UpgradeArgs []string `yaml:"upgradeArgs,omitempty" json:"upgradeArgs,omitempty"` + // TemplateArgs are additional arguments to pass to `helm template` + TemplateArgs []string `yaml:"templateArgs,omitempty" json:"templateArgs,omitempty"` } // ChartConfig defines the helm chart options type ChartConfig struct { - // Source can be used to reference an helm chart from a distant location - // such as a git repository - Source *SourceConfig `yaml:",inline" json:",inline"` // Name is the name of the helm chart to deploy. Can also be a local path - Name string `yaml:"name,omitempty" json:"name,omitempty"` + Name string `yaml:"name,omitempty" json:"name,omitempty" jsonschema:"required" jsonschema_extras:"group=repo,group_name=Source: Helm Repository"` // Version is the version of the helm chart to deploy - Version string `yaml:"version,omitempty" json:"version,omitempty"` + Version string `yaml:"version,omitempty" json:"version,omitempty" jsonschema_extras:"group=repo"` // RepoURL is the url of the repo to deploy the chart from - RepoURL string `yaml:"repo,omitempty" json:"repo,omitempty"` + RepoURL string `yaml:"repo,omitempty" json:"repo,omitempty" jsonschema_extras:"group=repo"` // Username is the username to authenticate to the chart repo - Username string `yaml:"username,omitempty" json:"username,omitempty"` + Username string `yaml:"username,omitempty" json:"username,omitempty" jsonschema_extras:"group=repo"` // Password is the password to authenticate to the chart repo - Password string `yaml:"password,omitempty" json:"password,omitempty"` + Password string `yaml:"password,omitempty" json:"password,omitempty" jsonschema_extras:"group=repo"` + // Source can be used to reference an helm chart from a distant location + // such as a git repository + Source *SourceConfig `yaml:",inline" json:",inline"` } // KubectlConfig defines the specific kubectl options used during deployment type KubectlConfig struct { // Manifests is a list of files or folders that will be deployed by DevSpace using kubectl // or kustomize - Manifests []string `yaml:"manifests,omitempty" json:"manifests,omitempty"` - // Kustomize can be used to enable kustomize instead of kubectl - Kustomize *bool `yaml:"kustomize,omitempty" json:"kustomize,omitempty"` - // KustomizeArgs are extra arguments for `kustomize build` which will be run before `kubectl apply` - KustomizeArgs []string `yaml:"kustomizeArgs,omitempty" json:"kustomizeArgs,omitempty"` - // CreateArgs are extra arguments for `kubectl create` which will be run before `kubectl apply` - CreateArgs []string `yaml:"createArgs,omitempty" json:"createArgs,omitempty"` + Manifests []string `yaml:"manifests,omitempty" json:"manifests,omitempty" jsonschema:"required"` // ApplyArgs are extra arguments for `kubectl apply` ApplyArgs []string `yaml:"applyArgs,omitempty" json:"applyArgs,omitempty"` - - // KustomizeBinaryPath is the optional path where to find the kustomize binary - KustomizeBinaryPath string `yaml:"kustomizeBinaryPath,omitempty" json:"kustomizeBinaryPath,omitempty"` + // CreateArgs are extra arguments for `kubectl create` which will be run before `kubectl apply` + CreateArgs []string `yaml:"createArgs,omitempty" json:"createArgs,omitempty"` // KubectlBinaryPath is the optional path where to finde the kubectl binary KubectlBinaryPath string `yaml:"kubectlBinaryPath,omitempty" json:"kubectlBinaryPath,omitempty"` + + // Kustomize can be used to enabdevle kustomize instead of kubectl + Kustomize *bool `yaml:"kustomize,omitempty" json:"kustomize,omitempty" jsonschema_extras:"group=kustomize,group_name=Kustomize"` + // KustomizeArgs are extra arguments for `kustomize build` which will be run before `kubectl apply` + KustomizeArgs []string `yaml:"kustomizeArgs,omitempty" json:"kustomizeArgs,omitempty" jsonschema_extras:"group=kustomize"` + // KustomizeBinaryPath is the optional path where to find the kustomize binary + KustomizeBinaryPath string `yaml:"kustomizeBinaryPath,omitempty" json:"kustomizeBinaryPath,omitempty" jsonschema_extras:"group=kustomize"` } // DevPod holds configurations for selecting a pod and starting dev services for that pod @@ -835,76 +837,79 @@ type DevPod struct { // Name of the dev configuration Name string `yaml:"name,omitempty" json:"name,omitempty"` // ImageSelector to select a pod - ImageSelector string `yaml:"imageSelector,omitempty" json:"imageSelector,omitempty"` + ImageSelector string `yaml:"imageSelector,omitempty" json:"imageSelector,omitempty" jsonschema_extras:"group=selector"` // LabelSelector to select a pod - LabelSelector map[string]string `yaml:"labelSelector,omitempty" json:"labelSelector,omitempty"` + LabelSelector map[string]string `yaml:"labelSelector,omitempty" json:"labelSelector,omitempty" jsonschema_extras:"group=selector"` // Namespace where to select the pod - Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty"` - - // Ports defines port mappings from the remote pod that should be forwarded to your local - // computer - Ports []*PortMapping `yaml:"ports,omitempty" json:"ports,omitempty"` - - // Open defines urls that should be opened as soon as they are reachable - Open []*OpenConfig `yaml:"open,omitempty" json:"open,omitempty"` + Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty" jsonschema_extras:"group=selector"` // DevContainer can either be defined inline if the pod only has a single container or // containers can be used to define configurations for multiple containers in the same // pod. DevContainer `yaml:",inline" json:",inline"` - Containers map[string]*DevContainer `yaml:"containers,omitempty" json:"containers,omitempty"` - // Patches are additional changes to the pod spec that should be applied - Patches []*PatchConfig `yaml:"patches,omitempty" json:"patches,omitempty"` + // Ports defines port mappings from the remote pod that should be forwarded to your local + // computer + Ports []*PortMapping `yaml:"ports,omitempty" json:"ports,omitempty" jsonschema_extras:"group=ports"` + // PersistenceOptions are additional options for persisting paths within this pod - PersistenceOptions *PersistenceOptions `yaml:"persistenceOptions,omitempty" json:"persistenceOptions,omitempty"` + PersistenceOptions *PersistenceOptions `yaml:"persistenceOptions,omitempty" json:"persistenceOptions,omitempty" jsonschema_extras:"group=modifications"` + + // Patches are additional changes to the pod spec that should be applied + Patches []*PatchConfig `yaml:"patches,omitempty" json:"patches,omitempty" jsonschema_extras:"group=modifications"` + + // Open defines urls that should be opened as soon as they are reachable + Open []*OpenConfig `yaml:"open,omitempty" json:"open,omitempty" jsonschema_extras:"group=workflows_background,group_name=Background Dev Workflows"` + + Containers map[string]*DevContainer `yaml:"containers,omitempty" json:"containers,omitempty" jsonschema_extras:"group=selector"` } // DevContainer holds options for dev services that should // get started within a certain container of the selected pod type DevContainer struct { // Container is the container name these services should get started. - Container string `yaml:"container,omitempty" json:"container,omitempty"` - - // DevImage is the image to use for this container and will replace the existing image - // if necessary. - DevImage string `yaml:"devImage,omitempty" json:"devImage,omitempty"` + Container string `yaml:"container,omitempty" json:"container,omitempty" jsonschema_extras:"group=selector,group_name=Selector"` // Target Container architecture to use for the devspacehelper (currently amd64 or arm64). Defaults to amd64, but // devspace tries to find out the architecture by itself by looking at the node this container runs on. - Arch ContainerArchitecture `yaml:"arch,omitempty" json:"arch,omitempty"` - // RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of - // the container and restarting it and is injected via an annotation in the replaced pod. - RestartHelper *RestartHelper `yaml:"restartHelper,omitempty" json:"restartHelper,omitempty"` + Arch ContainerArchitecture `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema_extras:"group=selector"` - // ReversePorts are port mappings to make local ports available inside the container - ReversePorts []*PortMapping `yaml:"reversePorts,omitempty" json:"reversePorts,omitempty"` + // DevImage is the image to use for this container and will replace the existing image + // if necessary. + DevImage string `yaml:"devImage,omitempty" json:"devImage,omitempty" jsonschema_extras:"group=modifications,group_name=Modifications"` // Command can be used to override the entrypoint of the container - Command []string `yaml:"command,omitempty" json:"command,omitempty"` + Command []string `yaml:"command,omitempty" json:"command,omitempty" jsonschema_extras:"group=modifications"` // Args can be used to override the args of the container - Args []string `yaml:"args,omitempty" json:"args,omitempty"` + Args []string `yaml:"args,omitempty" json:"args,omitempty" jsonschema_extras:"group=modifications"` // WorkingDir can be used to override the working dir of the container - WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty"` - // Resources can be used to override the resource definitions of the container - Resources *PodResources `yaml:"resources,omitempty" json:"resources,omitempty"` + WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty" jsonschema_extras:"group=modifications"` // Env can be used to add environment variables to the container. DevSpace will // not replace existing environment variables if an environment variable is defined here. - Env []EnvVar `yaml:"env,omitempty" json:"env,omitempty"` + Env []EnvVar `yaml:"env,omitempty" json:"env,omitempty" jsonschema_extras:"group=modifications"` + // Resources can be used to override the resource definitions of the container + Resources *PodResources `yaml:"resources,omitempty" json:"resources,omitempty" jsonschema_extras:"group=modifications"` + + // ReversePorts are port mappings to make local ports available inside the container + ReversePorts []*PortMapping `yaml:"reversePorts,omitempty" json:"reversePorts,omitempty" jsonschema_extras:"group=ports,group_name=Port Forwarding"` + + // Sync allows you to sync certain local paths with paths inside the container + Sync []*SyncConfig `yaml:"sync,omitempty" json:"sync,omitempty" jsonschema_extras:"group=sync,group_name=File Sync"` + // SSH allows you to create an SSH tunnel to this container + PersistPaths []PersistentPath `yaml:"persistPaths,omitempty" json:"persistPaths,omitempty" jsonschema_extras:"group=modifications"` // Terminal allows you to tell DevSpace to open a terminal with screen support to this container - Terminal *Terminal `yaml:"terminal,omitempty" json:"terminal,omitempty"` + Terminal *Terminal `yaml:"terminal,omitempty" json:"terminal,omitempty" jsonschema_extras:"group=workflows,group_name=Foreground Dev Workflows"` // Logs allows you to tell DevSpace to stream logs from this container to the console - Logs *Logs `yaml:"logs,omitempty" json:"logs,omitempty"` + Logs *Logs `yaml:"logs,omitempty" json:"logs,omitempty" jsonschema_extras:"group=workflows"` // Attach allows you to tell DevSpace to attach to this container - Attach *Attach `yaml:"attach,omitempty" json:"attach,omitempty"` + Attach *Attach `yaml:"attach,omitempty" json:"attach,omitempty" jsonschema_extras:"group=workflows"` // PersistPaths allows you to persist certain paths within this container with a persistent volume claim - PersistPaths []PersistentPath `yaml:"persistPaths,omitempty" json:"persistPaths,omitempty"` - // Sync allows you to sync certain local paths with paths inside the container - Sync []*SyncConfig `yaml:"sync,omitempty" json:"sync,omitempty"` - // SSH allows you to create an SSH tunnel to this container - SSH *SSH `yaml:"ssh,omitempty" json:"ssh,omitempty"` + SSH *SSH `yaml:"ssh,omitempty" json:"ssh,omitempty" jsonschema_extras:"group=workflows_background"` // ProxyCommands allow you to proxy certain local commands to the container - ProxyCommands []*ProxyCommand `yaml:"proxyCommands,omitempty" json:"proxyCommands,omitempty"` + ProxyCommands []*ProxyCommand `yaml:"proxyCommands,omitempty" json:"proxyCommands,omitempty" jsonschema_extras:"group=workflows_background"` + // RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of + // the container and restarting it and is injected via an annotation in the replaced pod. + RestartHelper *RestartHelper `yaml:"restartHelper,omitempty" json:"restartHelper,omitempty" jsonschema_extras:"group=workflows_background"` } type RestartHelper struct { @@ -1038,55 +1043,58 @@ type OpenConfig struct { // SyncConfig defines the paths for a SyncFolder type SyncConfig struct { - // PrintLogs defines if sync logs should be displayed on the terminal - PrintLogs bool `yaml:"printLogs,omitempty" json:"printLogs,omitempty"` - - // StartContainer will start the container after initial sync is done. This will - // inject a devspacehelper into the pod and you need to define dev.*.command for - // this to work. - StartContainer bool `yaml:"startContainer,omitempty" json:"startContainer,omitempty"` - // Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.' // to specify either the local or remote working directory. This is valid for example: .:. Path string `yaml:"path,omitempty" json:"path,omitempty"` // ExcludePaths is an array of file patterns in gitignore format to exclude. - ExcludePaths []string `yaml:"excludePaths,omitempty" json:"excludePaths,omitempty"` + ExcludePaths []string `yaml:"excludePaths,omitempty" json:"excludePaths,omitempty" jsonschema_extras:"group=exclude,group_name=Exclude Paths From File Sync"` // ExcludeFile loads the file patterns to exclude from a file. - ExcludeFile string `yaml:"excludeFile,omitempty" json:"excludeFile,omitempty"` + ExcludeFile string `yaml:"excludeFile,omitempty" json:"excludeFile,omitempty" jsonschema_extras:"group=exclude"` // DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading - DownloadExcludePaths []string `yaml:"downloadExcludePaths,omitempty" json:"downloadExcludePaths,omitempty"` + DownloadExcludePaths []string `yaml:"downloadExcludePaths,omitempty" json:"downloadExcludePaths,omitempty" jsonschema_extras:"group=exclude"` // DownloadExcludeFile loads the file patterns to exclude from downloading from a file. - DownloadExcludeFile string `yaml:"downloadExcludeFile,omitempty" json:"downloadExcludeFile,omitempty"` + DownloadExcludeFile string `yaml:"downloadExcludeFile,omitempty" json:"downloadExcludeFile,omitempty" jsonschema_extras:"group=exclude"` // UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading - UploadExcludePaths []string `yaml:"uploadExcludePaths,omitempty" json:"uploadExcludePaths,omitempty"` + UploadExcludePaths []string `yaml:"uploadExcludePaths,omitempty" json:"uploadExcludePaths,omitempty" jsonschema_extras:"group=exclude"` // UploadExcludeFile loads the file patterns to exclude from uploading from a file. - UploadExcludeFile string `yaml:"uploadExcludeFile,omitempty" json:"uploadExcludeFile,omitempty"` + UploadExcludeFile string `yaml:"uploadExcludeFile,omitempty" json:"uploadExcludeFile,omitempty" jsonschema_extras:"group=exclude"` + + // StartContainer will start the container after initial sync is done. This will + // inject a devspacehelper into the pod and you need to define dev.*.command for + // this to work. + StartContainer bool `yaml:"startContainer,omitempty" json:"startContainer,omitempty" jsonschema_extras:"group=actions,group_name=Sync-Triggered Actions"` + + // OnUpload can be used to execute certain commands on uploading either in the container or locally as + // well as restart the container after a file changed has happened. + OnUpload *SyncOnUpload `yaml:"onUpload,omitempty" json:"onUpload,omitempty" jsonschema_extras:"group=actions"` // InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal - InitialSync InitialSyncStrategy `yaml:"initialSync,omitempty" json:"initialSync,omitempty"` + InitialSync InitialSyncStrategy `yaml:"initialSync,omitempty" json:"initialSync,omitempty" jsonschema_extras:"group=initial_sync,group_name=Initial Sync"` + + // WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done + WaitInitialSync *bool `yaml:"waitInitialSync,omitempty" json:"waitInitialSync,omitempty" jsonschema_extras:"group=initial_sync"` + // InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible - InitialSyncCompareBy InitialSyncCompareBy `yaml:"initialSyncCompareBy,omitempty" json:"initialSyncCompareBy,omitempty"` + InitialSyncCompareBy InitialSyncCompareBy `yaml:"initialSyncCompareBy,omitempty" json:"initialSyncCompareBy,omitempty" jsonschema_extras:"group=initial_sync"` // DisableDownload will disable downloading completely - DisableDownload bool `yaml:"disableDownload,omitempty" json:"disableDownload,omitempty"` + DisableDownload bool `yaml:"disableDownload,omitempty" json:"disableDownload,omitempty" jsonschema_extras:"group=one_direction,group_name=One-Directional Sync"` // DisableUpload will disable uploading completely - DisableUpload bool `yaml:"disableUpload,omitempty" json:"disableUpload,omitempty"` - // NoWatch will terminate the sync after the initial sync is done - NoWatch bool `yaml:"noWatch,omitempty" json:"noWatch,omitempty"` - - // Polling will tell the remote container to use polling instead of inotify - Polling bool `yaml:"polling,omitempty" json:"polling,omitempty"` + DisableUpload bool `yaml:"disableUpload,omitempty" json:"disableUpload,omitempty" jsonschema_extras:"group=one_direction"` - // WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done - WaitInitialSync *bool `yaml:"waitInitialSync,omitempty" json:"waitInitialSync,omitempty"` // BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this // sync configuration BandwidthLimits *BandwidthLimits `yaml:"bandwidthLimits,omitempty" json:"bandwidthLimits,omitempty"` - // OnUpload can be used to execute certain commands on uploading either in the container or locally as - // well as restart the container after a file changed has happened. - OnUpload *SyncOnUpload `yaml:"onUpload,omitempty" json:"onUpload,omitempty"` + // Polling will tell the remote container to use polling instead of inotify + Polling bool `yaml:"polling,omitempty" json:"polling,omitempty"` + + // NoWatch will terminate the sync after the initial sync is done + NoWatch bool `yaml:"noWatch,omitempty" json:"noWatch,omitempty"` + + // PrintLogs defines if sync logs should be displayed on the terminal + PrintLogs bool `yaml:"printLogs,omitempty" json:"printLogs,omitempty"` } type ContainerArchitecture string @@ -1220,66 +1228,66 @@ type Terminal struct { // DependencyConfig defines the devspace dependency type DependencyConfig struct { - // Source holds the dependency project - Source *SourceConfig `yaml:",inline" json:",inline"` - // Name is used internally Name string `yaml:"name" json:"name"` - // Pipeline is the pipeline to deploy by default. Defaults to 'deploy' - Pipeline string `yaml:"pipeline,omitempty" json:"pipeline,omitempty"` - - // Profiles specifies which profiles should be applied while loading the dependency - Profiles []string `yaml:"profiles,omitempty" json:"profiles,omitempty"` + // Source holds the dependency project + Source *SourceConfig `yaml:",inline" json:",inline"` - // DisableProfileActivation disabled automatic profile activation of dependency profiles - DisableProfileActivation bool `yaml:"disableProfileActivation,omitempty" json:"disableProfileActivation,omitempty"` + // Pipeline is the pipeline to deploy by default. Defaults to 'deploy' + Pipeline string `yaml:"pipeline,omitempty" json:"pipeline,omitempty" jsonschema:"default=deploy" jsonschema_extras:"group=execution,group_name=Execution"` // Vars are variables that should be passed to the dependency - Vars map[string]string `yaml:"vars,omitempty" json:"vars,omitempty"` + Vars map[string]string `yaml:"vars,omitempty" json:"vars,omitempty" jsonschema_extras:"group=execution"` // OverwriteVars specifies if DevSpace should pass the parent variables to the dependency - OverwriteVars bool `yaml:"overwriteVars,omitempty" json:"overwriteVars,omitempty"` + OverwriteVars bool `yaml:"overwriteVars,omitempty" json:"overwriteVars,omitempty" jsonschema_extras:"group=execution"` // IgnoreDependencies defines if dependencies of the dependency should be excluded - IgnoreDependencies bool `yaml:"ignoreDependencies,omitempty" json:"ignoreDependencies,omitempty"` + IgnoreDependencies bool `yaml:"ignoreDependencies,omitempty" json:"ignoreDependencies,omitempty" jsonschema_extras:"group=execution"` // Namespace specifies the namespace this dependency should be deployed to - Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty"` + Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty" jsonschema_extras:"group=execution"` + + // Profiles specifies which profiles should be applied while loading the dependency + Profiles []string `yaml:"profiles,omitempty" json:"profiles,omitempty" jsonschema:"-"` + + // DisableProfileActivation disabled automatic profile activation of dependency profiles + DisableProfileActivation bool `yaml:"disableProfileActivation,omitempty" json:"disableProfileActivation,omitempty" jsonschema:"-"` } // SourceConfig defines an artifact source type SourceConfig struct { + // Path is the local path where DevSpace can find the artifact. + // This option is mutually exclusive with the path option. + Path string `yaml:"path,omitempty" json:"path,omitempty" jsonschema_extras:"group=path,group_name=Source: Local Filesystem"` + // Git is the remote repository to download the artifact from. You can either use // https projects or ssh projects here, but need to make sure git can pull the project. // This option is mutually exclusive with the path option. - Git string `yaml:"git,omitempty" json:"git,omitempty"` - - // CloneArgs are additional arguments that should be supplied to the git CLI - CloneArgs []string `yaml:"cloneArgs,omitempty" json:"cloneArgs,omitempty"` - - // DisableShallow can be used to turn off shallow clones as these are the default used - // by devspace - DisableShallow bool `yaml:"disableShallow,omitempty" json:"disableShallow,omitempty"` - - // DisablePull will disable pulling every time DevSpace is reevaluating this source - DisablePull bool `yaml:"disablePull,omitempty" json:"disablePull,omitempty"` + Git string `yaml:"git,omitempty" json:"git,omitempty" jsonschema_extras:"group=git,group_name=Source: Git Repository"` // SubPath is a path within the git repository where the artifact lies in - SubPath string `yaml:"subPath,omitempty" json:"subPath,omitempty"` + SubPath string `yaml:"subPath,omitempty" json:"subPath,omitempty" jsonschema_extras:"group=git"` // Branch is the git branch to pull - Branch string `yaml:"branch,omitempty" json:"branch,omitempty"` + Branch string `yaml:"branch,omitempty" json:"branch,omitempty" jsonschema_extras:"group=git"` // Tag is the tag to pull - Tag string `yaml:"tag,omitempty" json:"tag,omitempty"` + Tag string `yaml:"tag,omitempty" json:"tag,omitempty" jsonschema_extras:"group=git"` // Revision is the git revision to pull - Revision string `yaml:"revision,omitempty" json:"revision,omitempty"` + Revision string `yaml:"revision,omitempty" json:"revision,omitempty" jsonschema_extras:"group=git"` - // Path is the local path where DevSpace can find the artifact. - // This option is mutually exclusive with the path option. - Path string `yaml:"path,omitempty" json:"path,omitempty"` + // CloneArgs are additional arguments that should be supplied to the git CLI + CloneArgs []string `yaml:"cloneArgs,omitempty" json:"cloneArgs,omitempty" jsonschema_extras:"group=git"` + + // DisableShallow can be used to turn off shallow clones as these are the default used + // by devspace + DisableShallow bool `yaml:"disableShallow,omitempty" json:"disableShallow,omitempty" jsonschema_extras:"group=git"` + + // DisablePull will disable pulling every time DevSpace is reevaluating this source + DisablePull bool `yaml:"disablePull,omitempty" json:"disablePull,omitempty" jsonschema_extras:"group=git"` } // HookConfig defines a hook @@ -1396,16 +1404,7 @@ type CommandConfig struct { Section string `yaml:"section,omitempty" json:"section,omitempty"` // Command is the command that should be executed. For example: 'echo 123' - Command string `yaml:"command" json:"command"` - - // After is executed after the command was run. It is executed also when - // the command was interrupted which will set the env variable COMMAND_INTERRUPT - // to true as well as when the command errored which will set the error string to - // COMMAND_ERROR. - After string `yaml:"after,omitempty" json:"after,omitempty"` - - // Internal commands are not show in list and are usable through run_command - Internal bool `yaml:"internal,omitempty" json:"internal,omitempty"` + Command string `yaml:"command" json:"command" jsonschema:"required"` // Args are optional and if defined, command is not executed within a shell // and rather directly. @@ -1417,6 +1416,15 @@ type CommandConfig struct { // Description describes what the command is doing and can be seen in `devspace list commands` Description string `yaml:"description,omitempty" json:"description,omitempty"` + + // Internal commands are not show in list and are usable through run_command + Internal bool `yaml:"internal,omitempty" json:"internal,omitempty"` + + // After is executed after the command was run. It is executed also when + // the command was interrupted which will set the env variable COMMAND_INTERRUPT + // to true as well as when the command errored which will set the error string to + // COMMAND_ERROR. + After string `yaml:"after,omitempty" json:"after,omitempty"` } type CommandFlag struct { @@ -1449,46 +1457,46 @@ type Variable struct { // Name is the name of the variable Name string `yaml:"name" json:"name"` + // Value is a shortcut for using source: none and default: my-value + Value interface{} `yaml:"value,omitempty" json:"value,omitempty" jsonschema:"oneof_type=string;integer;boolean" jsonschema_extras:"group=static,group_name=Static Value"` + // Question can be used to define a custom question if the variable was not yet used - Question string `yaml:"question,omitempty" json:"question,omitempty"` + Question string `yaml:"question,omitempty" json:"question,omitempty" jsonschema_extras:"group=question,group_name=Value From Input (Question)"` + + // Default is the default value the variable should have if not set by the user + Default interface{} `yaml:"default,omitempty" json:"default,omitempty" jsonschema:"oneof_type=string;integer;boolean" jsonschema_extras:"group=question"` // Options are options that can be selected when the variable question is asked - Options []string `yaml:"options,omitempty" json:"options,omitempty"` + Options []string `yaml:"options,omitempty" json:"options,omitempty" jsonschema_extras:"group=question"` // Password signals that this variable should not be visible if entered - Password bool `yaml:"password,omitempty" json:"password,omitempty"` + Password bool `yaml:"password,omitempty" json:"password,omitempty" jsonschema_extras:"group=question"` // ValidationPattern can be used to verify the user input - ValidationPattern string `yaml:"validationPattern,omitempty" json:"validationPattern,omitempty"` + ValidationPattern string `yaml:"validationPattern,omitempty" json:"validationPattern,omitempty" jsonschema_extras:"group=question"` // ValidationMessage can be used to tell the user the format of the variable value - ValidationMessage string `yaml:"validationMessage,omitempty" json:"validationMessage,omitempty"` + ValidationMessage string `yaml:"validationMessage,omitempty" json:"validationMessage,omitempty" jsonschema_extras:"group=question"` // NoCache can be used to prompt the user on every run for this variable - NoCache bool `yaml:"noCache,omitempty" json:"noCache,omitempty"` - - // AlwaysResolve makes sure this variable will always be resolved and not only if it is used somewhere - AlwaysResolve bool `yaml:"alwaysResolve,omitempty" json:"alwaysResolve,omitempty"` - - // Value is a shortcut for using source: none and default: my-value - Value interface{} `yaml:"value,omitempty" json:"value,omitempty"` - - // Default is the default value the variable should have if not set by the user - Default interface{} `yaml:"default,omitempty" json:"default,omitempty"` - - // Source defines where the variable should be taken from - Source VariableSource `yaml:"source,omitempty" json:"source,omitempty"` + NoCache bool `yaml:"noCache,omitempty" json:"noCache,omitempty" jsonschema_extras:"group=question"` // Command is the command how to retrieve the variable. If args is omitted, command is parsed as a shell // command. - Command string `yaml:"command,omitempty" json:"command,omitempty"` + Command string `yaml:"command,omitempty" json:"command,omitempty" jsonschema_extras:"group=execution,group_name=Value From Command"` // Args are optional args that will be used for the command - Args []string `yaml:"args,omitempty" json:"args,omitempty"` + Args []string `yaml:"args,omitempty" json:"args,omitempty" jsonschema_extras:"group=execution"` // Commands are additional commands that can be used to run a different command on a different operating // system. - Commands []VariableCommand `yaml:"commands,omitempty" json:"commands,omitempty"` + Commands []VariableCommand `yaml:"commands,omitempty" json:"commands,omitempty" jsonschema_extras:"group=execution"` + + // AlwaysResolve makes sure this variable will always be resolved and not only if it is used somewhere + AlwaysResolve bool `yaml:"alwaysResolve,omitempty" json:"alwaysResolve,omitempty"` + + // Source defines where the variable should be taken from + Source VariableSource `yaml:"source,omitempty" json:"source,omitempty" jsonschema:"enum=all,enum=env,enum=input,enum=command,enum=none"` } func (v *Variable) UnmarshalYAML(unmarshal func(interface{}) error) error { @@ -1520,16 +1528,16 @@ func (v *Variable) UnmarshalYAML(unmarshal func(interface{}) error) error { } type VariableCommand struct { + // OperatingSystem is optional and defines the operating system this + // command should be executed on + OperatingSystem string `yaml:"os,omitempty" json:"os,omitempty"` + // Command is the command to use to retrieve the value for this variable. If no // args are specified the command is run within a pseudo shell. Command string `yaml:"command,omitempty" json:"command,omitempty"` // Args are optional arguments for the command Args []string `yaml:"args,omitempty" json:"args,omitempty"` - - // OperatingSystem is optional and defines the operating system this - // command should be executed on - OperatingSystem string `yaml:"os,omitempty" json:"os,omitempty"` } // VariableSource is type of a variable source @@ -1599,19 +1607,19 @@ type ProfileConfigStructure struct { Hooks *[]interface{} `yaml:"hooks,omitempty" json:"hooks,omitempty"` // DEPRECATED: OldDeployments references the old deployments - OldDeployments *[]interface{} `yaml:"oldDeployments,omitempty" json:"oldDeployments,omitempty"` + OldDeployments *[]interface{} `yaml:"oldDeployments,omitempty" json:"oldDeployments,omitempty" jsonschema:"-"` // DEPRECATED: OldDependencies references the old dependencies - OldDependencies *[]interface{} `yaml:"oldDependencies,omitempty" json:"oldDependencies,omitempty"` + OldDependencies *[]interface{} `yaml:"oldDependencies,omitempty" json:"oldDependencies,omitempty" jsonschema:"-"` // DEPRECATED: OldCommands references the old commands - OldCommands *[]interface{} `yaml:"oldCommands,omitempty" json:"oldCommands,omitempty"` + OldCommands *[]interface{} `yaml:"oldCommands,omitempty" json:"oldCommands,omitempty" jsonschema:"-"` // DEPRECATED: OldPullSecrets references the old pullsecrets - OldPullSecrets *[]interface{} `yaml:"oldPullSecrets,omitempty" json:"oldPullSecrets,omitempty"` + OldPullSecrets *[]interface{} `yaml:"oldPullSecrets,omitempty" json:"oldPullSecrets,omitempty" jsonschema:"-"` // DEPRECATED: OldVars references the old vars - OldVars *[]interface{} `yaml:"oldVars,omitempty" json:"oldVars,omitempty"` + OldVars *[]interface{} `yaml:"oldVars,omitempty" json:"oldVars,omitempty" jsonschema:"-"` } // ProfileParent defines where to load the profile from @@ -1654,7 +1662,7 @@ type PullSecretConfig struct { // The registry to create the image pull secret for. // Empty string == docker hub // e.g. gcr.io - Registry string `yaml:"registry,omitempty" json:"registry"` + Registry string `yaml:"registry,omitempty" json:"registry" jsonschema:"required"` // The username of the registry. If this is empty, devspace will try // to receive the auth data from the local docker diff --git a/pkg/devspace/config/versions/versions.go b/pkg/devspace/config/versions/versions.go index c827e529fe..5bd9c43fdd 100644 --- a/pkg/devspace/config/versions/versions.go +++ b/pkg/devspace/config/versions/versions.go @@ -3,14 +3,15 @@ package versions import ( "context" "fmt" - "github.com/loft-sh/devspace/pkg/devspace/config/versions/v1beta11" - "github.com/loft-sh/devspace/pkg/util/yamlutil" "io/ioutil" "os" "path/filepath" "regexp" "strings" + "github.com/loft-sh/devspace/pkg/devspace/config/versions/v1beta11" + "github.com/loft-sh/devspace/pkg/util/yamlutil" + "github.com/loft-sh/devspace/pkg/devspace/config/loader/variable" "github.com/loft-sh/devspace/pkg/devspace/config/versions/v1beta10" @@ -37,7 +38,7 @@ type loader struct { New config.New } -var versionLoader = map[string]*loader{ +var VersionLoader = map[string]*loader{ v1beta1.Version: {New: v1beta1.New}, v1beta2.Version: {New: v1beta2.New}, v1beta3.Version: {New: v1beta3.New}, @@ -125,7 +126,7 @@ func Parse(data map[string]interface{}, log log.Logger) (*latest.Config, error) return nil, errors.Errorf("Version is missing in devspace.yaml") } - loader, ok := versionLoader[version] + loader, ok := VersionLoader[version] if !ok { return nil, errors.Errorf("Unrecognized config version %s. Please upgrade devspace with `devspace upgrade`", version) } diff --git a/pkg/devspace/pipeline/engine/pipelinehandler/commands/build_images.go b/pkg/devspace/pipeline/engine/pipelinehandler/commands/build_images.go index 8198808112..7cd99106f1 100644 --- a/pkg/devspace/pipeline/engine/pipelinehandler/commands/build_images.go +++ b/pkg/devspace/pipeline/engine/pipelinehandler/commands/build_images.go @@ -2,26 +2,28 @@ package commands import ( "fmt" + "strings" + flags "github.com/jessevdk/go-flags" "github.com/loft-sh/devspace/pkg/devspace/build" devspacecontext "github.com/loft-sh/devspace/pkg/devspace/context" "github.com/loft-sh/devspace/pkg/devspace/pipeline/types" "github.com/pkg/errors" - "strings" ) // BuildImagesOptions describe how images should be build type BuildImagesOptions struct { build.Options + All bool `long:"all" description:"Build all images"` + Set []string `long:"set" description:"Set configuration"` SetString []string `long:"set-string" description:"Set configuration as string"` From []string `long:"from" description:"Reuse an existing configuration"` FromFile []string `long:"from-file" description:"Reuse an existing configuration from a file"` - - All bool `long:"all" description:"Build all images"` } +// BuildImages func BuildImages(ctx devspacecontext.Context, pipeline types.Pipeline, args []string) error { ctx.Log().Debugf("build_images %s", strings.Join(args, " ")) if ctx.KubeClient() != nil { diff --git a/pkg/devspace/pipeline/pipeline.go b/pkg/devspace/pipeline/pipeline.go index b33d89d8d2..036c6da28d 100644 --- a/pkg/devspace/pipeline/pipeline.go +++ b/pkg/devspace/pipeline/pipeline.go @@ -3,16 +3,17 @@ package pipeline import ( "context" "fmt" + "os" + "strings" + "sync" + "time" + "github.com/loft-sh/devspace/pkg/devspace/context/values" "github.com/loft-sh/devspace/pkg/devspace/kubectl" "github.com/loft-sh/devspace/pkg/util/tomb" utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/wait" "mvdan.cc/sh/v3/expand" - "os" - "strings" - "sync" - "time" "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest" devspacecontext "github.com/loft-sh/devspace/pkg/devspace/context" @@ -102,7 +103,12 @@ func (p *pipeline) Exclude(ctx devspacecontext.Context) error { if p.excludedErr != nil { return p.excludedErr } else if !couldExclude && ctx.KubeClient() != nil { - return fmt.Errorf("couldn't execute '%s', because there is another DevSpace instance active in the current namespace right now that uses the same project name (%s)", strings.Join(os.Args, " "), p.name) + return fmt.Errorf("couldn't execute '%s', because there is another DevSpace session for the project (%s) already running inside this namespace\n\n%s\n ", strings.Join(os.Args, " "), p.name, `You may want to use one of these commands instead: +- devspace enter: opens a terminal session for a container +- devspace attach: attaches to the PID 1 process (entrypoint) of a container +- devspace logs: streams the logs of a container +- devspace sync: syncs files between your local filesyste and a container's filesystem +- devspace ui: starts the DevSpace localhost UI`) } ctx.Log().Debugf("Marked project excluded: %v", p.name) return nil diff --git a/static/img/congrats.gif b/static/img/congrats.gif deleted file mode 100644 index 5b4e316b15..0000000000 Binary files a/static/img/congrats.gif and /dev/null differ diff --git a/static/img/deployment-process-devspace.svg b/static/img/deployment-process-devspace.svg deleted file mode 100644 index 32c194e225..0000000000 --- a/static/img/deployment-process-devspace.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/development-process-devspace.svg b/static/img/development-process-devspace.svg deleted file mode 100644 index 05c2e435f3..0000000000 --- a/static/img/development-process-devspace.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/devspace-cluster-compatibility.png b/static/img/devspace-cluster-compatibility.png deleted file mode 100644 index 67be266fd4..0000000000 Binary files a/static/img/devspace-cluster-compatibility.png and /dev/null differ diff --git a/static/img/devspace-localhost-ui-demo.gif b/static/img/devspace-localhost-ui-demo.gif deleted file mode 100644 index 75ca3b4c4a..0000000000 Binary files a/static/img/devspace-localhost-ui-demo.gif and /dev/null differ diff --git a/static/img/devspace-localhost-ui-namespace-inspection.png b/static/img/devspace-localhost-ui-namespace-inspection.png deleted file mode 100644 index 534e106d44..0000000000 Binary files a/static/img/devspace-localhost-ui-namespace-inspection.png and /dev/null differ diff --git a/static/img/devspace-logo.svg b/static/img/devspace-logo.svg deleted file mode 100644 index 401bcd7408..0000000000 --- a/static/img/devspace-logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/static/img/devspace-readme-intro.gif b/static/img/devspace-readme-intro.gif deleted file mode 100644 index 98877c1cfd..0000000000 Binary files a/static/img/devspace-readme-intro.gif and /dev/null differ diff --git a/static/img/image-building-process-devspace.svg b/static/img/image-building-process-devspace.svg deleted file mode 100644 index 898132577d..0000000000 --- a/static/img/image-building-process-devspace.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/line.svg b/static/img/line.svg deleted file mode 100644 index 4ba7fa34f8..0000000000 --- a/static/img/line.svg +++ /dev/null @@ -1,3 +0,0 @@ - - diff --git a/static/img/slack.svg b/static/img/slack.svg deleted file mode 100644 index 0a073e435e..0000000000 --- a/static/img/slack.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/workflow-devspace.png b/static/img/workflow-devspace.png deleted file mode 100644 index bd9c3ded03..0000000000 Binary files a/static/img/workflow-devspace.png and /dev/null differ diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go index 0668a66cf7..be2b343606 100644 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go +++ b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go @@ -15,7 +15,7 @@ type roffRenderer struct { extensions blackfriday.Extensions listCounters []int firstHeader bool - defineTerm bool + firstDD bool listDepth int } @@ -42,7 +42,8 @@ const ( quoteCloseTag = "\n.RE\n" listTag = "\n.RS\n" listCloseTag = "\n.RE\n" - arglistTag = "\n.TP\n" + dtTag = "\n.TP\n" + dd2Tag = "\n" tableStart = "\n.TS\nallbox;\n" tableEnd = ".TE\n" tableCellStart = "T{\n" @@ -90,7 +91,7 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering switch node.Type { case blackfriday.Text: - r.handleText(w, node, entering) + escapeSpecialChars(w, node.Literal) case blackfriday.Softbreak: out(w, crTag) case blackfriday.Hardbreak: @@ -150,40 +151,21 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering out(w, codeCloseTag) case blackfriday.Table: r.handleTable(w, node, entering) - case blackfriday.TableCell: - r.handleTableCell(w, node, entering) case blackfriday.TableHead: case blackfriday.TableBody: case blackfriday.TableRow: // no action as cell entries do all the nroff formatting return blackfriday.GoToNext + case blackfriday.TableCell: + r.handleTableCell(w, node, entering) + case blackfriday.HTMLSpan: + // ignore other HTML tags default: fmt.Fprintln(os.Stderr, "WARNING: go-md2man does not handle node type "+node.Type.String()) } return walkAction } -func (r *roffRenderer) handleText(w io.Writer, node *blackfriday.Node, entering bool) { - var ( - start, end string - ) - // handle special roff table cell text encapsulation - if node.Parent.Type == blackfriday.TableCell { - if len(node.Literal) > 30 { - start = tableCellStart - end = tableCellEnd - } else { - // end rows that aren't terminated by "tableCellEnd" with a cr if end of row - if node.Parent.Next == nil && !node.Parent.IsHeader { - end = crTag - } - } - } - out(w, start) - escapeSpecialChars(w, node.Literal) - out(w, end) -} - func (r *roffRenderer) handleHeading(w io.Writer, node *blackfriday.Node, entering bool) { if entering { switch node.Level { @@ -230,15 +212,20 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering if node.ListFlags&blackfriday.ListTypeOrdered != 0 { out(w, fmt.Sprintf(".IP \"%3d.\" 5\n", r.listCounters[len(r.listCounters)-1])) r.listCounters[len(r.listCounters)-1]++ + } else if node.ListFlags&blackfriday.ListTypeTerm != 0 { + // DT (definition term): line just before DD (see below). + out(w, dtTag) + r.firstDD = true } else if node.ListFlags&blackfriday.ListTypeDefinition != 0 { - // state machine for handling terms and following definitions - // since blackfriday does not distinguish them properly, nor - // does it seperate them into separate lists as it should - if !r.defineTerm { - out(w, arglistTag) - r.defineTerm = true + // DD (definition description): line that starts with ": ". + // + // We have to distinguish between the first DD and the + // subsequent ones, as there should be no vertical + // whitespace between the DT and the first DD. + if r.firstDD { + r.firstDD = false } else { - r.defineTerm = false + out(w, dd2Tag) } } else { out(w, ".IP \\(bu 2\n") @@ -251,7 +238,7 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering bool) { if entering { out(w, tableStart) - //call walker to count cells (and rows?) so format section can be produced + // call walker to count cells (and rows?) so format section can be produced columns := countColumns(node) out(w, strings.Repeat("l ", columns)+"\n") out(w, strings.Repeat("l ", columns)+".\n") @@ -261,28 +248,41 @@ func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering } func (r *roffRenderer) handleTableCell(w io.Writer, node *blackfriday.Node, entering bool) { - var ( - start, end string - ) - if node.IsHeader { - start = codespanTag - end = codespanCloseTag - } if entering { + var start string if node.Prev != nil && node.Prev.Type == blackfriday.TableCell { - out(w, "\t"+start) - } else { - out(w, start) + start = "\t" + } + if node.IsHeader { + start += codespanTag + } else if nodeLiteralSize(node) > 30 { + start += tableCellStart } + out(w, start) } else { - // need to carriage return if we are at the end of the header row - if node.IsHeader && node.Next == nil { - end = end + crTag + var end string + if node.IsHeader { + end = codespanCloseTag + } else if nodeLiteralSize(node) > 30 { + end = tableCellEnd + } + if node.Next == nil && end != tableCellEnd { + // Last cell: need to carriage return if we are at the end of the + // header row and content isn't wrapped in a "tablecell" + end += crTag } out(w, end) } } +func nodeLiteralSize(node *blackfriday.Node) int { + total := 0 + for n := node.FirstChild; n != nil; n = n.FirstChild { + total += len(n.Literal) + } + return total +} + // because roff format requires knowing the column count before outputting any table // data we need to walk a table tree and count the columns func countColumns(node *blackfriday.Node) int { @@ -309,15 +309,6 @@ func out(w io.Writer, output string) { io.WriteString(w, output) // nolint: errcheck } -func needsBackslash(c byte) bool { - for _, r := range []byte("-_&\\~") { - if c == r { - return true - } - } - return false -} - func escapeSpecialChars(w io.Writer, text []byte) { for i := 0; i < len(text); i++ { // escape initial apostrophe or period @@ -328,7 +319,7 @@ func escapeSpecialChars(w io.Writer, text []byte) { // directly copy normal characters org := i - for i < len(text) && !needsBackslash(text[i]) { + for i < len(text) && text[i] != '\\' { i++ } if i > org { diff --git a/vendor/github.com/gertd/go-pluralize/.gitignore b/vendor/github.com/gertd/go-pluralize/.gitignore new file mode 100644 index 0000000000..50b430e839 --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/.gitignore @@ -0,0 +1,22 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Log files +*.log + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# exclude binery files +pdx +debug + +# exclude directories +bin/ +release/ diff --git a/vendor/github.com/gertd/go-pluralize/.travis.yml b/vendor/github.com/gertd/go-pluralize/.travis.yml new file mode 100644 index 0000000000..3e0ee5017a --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/.travis.yml @@ -0,0 +1,29 @@ +language: go +go: +- 1.14.3 +cache: + directories: + - "$HOME/local" +script: +- make +before_install: +install: +before_deploy: +- make VERSION=${TRAVIS_TAG} release -j3 +- ls release/ +deploy: + provider: releases + api_key: + secure: 5tGm98IBWwiIwsZSRFNWSSP85IHAZrysGu1Z5od2N9n7crf1Q2RmNLLaDd9VMJc9zd9QDQb68BJBe8W+XT4XKAtcE6HRrgDveV5JpBIdAYQOqN9CBqEb0WEjYJeypoRzDTBfIayJnaZs3uNMcJm9e063ezhwOevflxbBOkBgVycVjA5kW8da5lVj0HnbTraUsIPjkpFDwyqgaVxCIKTe9eUwEUbKHBW8Sfp1b6sYLLiZrLyvAMvorMcnTdo0UfymwXxXlVOiDhTbiF6zGlW7aZ9uhxJRay3GIfFgqz8qcK1GIfG3HKl3wDtcWIGr3lNEsGTeBVr+55LD1gb+sCbMz3+mH4xK6d+LVuACmdHei/34WhXy0JXsIXthYnH/VbGLgELlL6UObat5Kjo7Db7Je5WcJuJ9GBGZ9o1MGfFG835QIYc3TMrFbnXrvAC7iefNKs/jr4Bdgapt7N0h9B/Ra5VUxZBmPveOC4tk3Km3j2ORau3rO4QvXTSuvvYXMLDENNwQlaDT5IFlAANLmcWY1vN16UoEXdPnOQyE90nsvpIQYnFGqLxgEJYJmp1br+U5ldKHIvnYke6h/f6FGDPsbIspxj6jSoITz7jHh3m8vEMuIl4pd1sreC5eQULJNZIZw786MVES2CSxsBsLB1nRZfE+uQu8B1vPRfnFvNBZ83Q= + file_glob: true + file: release/**/*.zip + skip_cleanup: true + overwrite: true + on: + tags: true +notifications: + email: false +env: + global: + - PATH=$PATH:$HOME/local/bin + - GO111MODULE=on diff --git a/vendor/github.com/gertd/go-pluralize/LICENSE b/vendor/github.com/gertd/go-pluralize/LICENSE new file mode 100644 index 0000000000..f002d157e1 --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/LICENSE @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2019 Gert Drapers + +Copyright (c) 2013 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/gertd/go-pluralize/Makefile b/vendor/github.com/gertd/go-pluralize/Makefile new file mode 100644 index 0000000000..30a80996c7 --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/Makefile @@ -0,0 +1,151 @@ +SHELL := $(shell which bash) + +## BOF define block + +BINARIES := pluralize +BINARY = $(word 1, $@) + +PLATFORMS := windows linux darwin +PLATFORM = $(word 1, $@) + +ROOT_DIR := $(shell git rev-parse --show-toplevel) +BIN_DIR := $(ROOT_DIR)/bin +REL_DIR := $(ROOT_DIR)/release +SRC_DIR := $(ROOT_DIR)/cmd +INC_DIR := $(ROOT_DIR)/include +TMP_DIR := $(ROOT_DIR)/tmp + +VERSION :=`git describe --tags 2>/dev/null` +COMMIT :=`git rev-parse --short HEAD 2>/dev/null` +DATE :=`date "+%FT%T%z"` + +LDBASE := github.com/gertd/go-pluralize/pkg/version +LDFLAGS := -ldflags "-w -s -X $(LDBASE).ver=${VERSION} -X $(LDBASE).date=${DATE} -X $(LDBASE).commit=${COMMIT}" + +GOARCH ?= amd64 +GOOS ?= $(shell go env GOOS) + +LINTER := $(BIN_DIR)/golangci-lint +LINTVERSION:= v1.27.0 + +TESTRUNNER := $(BIN_DIR)/gotestsum +TESTVERSION:= v0.5.0 + +PROTOC := $(BIN_DIR)/protoc +PROTOCVER := 3.12.3 + +NO_COLOR :=\033[0m +OK_COLOR :=\033[32;01m +ERR_COLOR :=\033[31;01m +WARN_COLOR :=\033[36;01m +ATTN_COLOR :=\033[33;01m + +## EOF define block + +.PHONY: all +all: deps gen build test lint + +deps: + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @GO111MODULE=on go mod download + +.PHONY: gen +gen: deps $(BIN_DIR) + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @go generate ./... + +.PHONY: dobuild +dobuild: + @echo -e "$(ATTN_COLOR)==> $@ $(B) GOOS=$(P) GOARCH=$(GOARCH) VERSION=$(VERSION) COMMIT=$(COMMIT) DATE=$(DATE) $(NO_COLOR)" + @GOOS=$(P) GOARCH=$(GOARCH) GO111MODULE=on go build $(LDFLAGS) -o $(T)/$(P)-$(GOARCH)/$(B)$(if $(findstring $(P),windows),".exe","") $(SRC_DIR)/$(B) +ifneq ($(P),windows) + @chmod +x $(T)/$(P)-$(GOARCH)/$(B) +endif + +.PHONY: build +build: $(BIN_DIR) deps + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @for b in ${BINARIES}; \ + do \ + $(MAKE) dobuild B=$${b} P=${GOOS} T=${BIN_DIR}; \ + done + +.PHONY: doinstall +doinstall: + @echo -e "$(ATTN_COLOR)==> $@ $(B) GOOS=$(P) GOARCH=$(GOARCH) VERSION=$(VERSION) COMMIT=$(COMMIT) DATE=$(DATE) $(NO_COLOR)" + @GOOS=$(P) GOARCH=$(GOARCH) GO111MODULE=on go install $(LDFLAGS) $(SRC_DIR)/$(B) + +.PHONY: install +install: + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @for b in ${BINARIES}; \ + do \ + $(MAKE) doinstall B=$${b} P=${GOOS}; \ + done + +.PHONY: dorelease +dorelease: + @echo -e "$(ATTN_COLOR)==> $@ build GOOS=$(P) GOARCH=$(GOARCH) VERSION=$(VERSION) COMMIT=$(COMMIT) DATE=$(DATE) $(NO_COLOR)" + @GOOS=$(P) GOARCH=$(GOARCH) GO111MODULE=on go build $(LDFLAGS) -o $(T)/$(P)-$(GOARCH)/$(B)$(if $(findstring $(P),windows),".exe","") $(SRC_DIR)/$(B) +ifneq ($(P),windows) + @chmod +x $(T)/$(P)-$(GOARCH)/$(B) +endif + @echo -e "$(ATTN_COLOR)==> $@ zip $(B)-$(P)-$(GOARCH).zip $(NO_COLOR)" + @zip -j $(T)/$(P)-$(GOARCH)/$(B)-$(P)-$(GOARCH).zip $(T)/$(P)-$(GOARCH)/$(B)$(if $(findstring $(P),windows),".exe","") >/dev/null + +.PHONY: release +release: $(REL_DIR) + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @for b in ${BINARIES}; \ + do \ + for p in ${PLATFORMS}; \ + do \ + $(MAKE) dorelease B=$${b} P=$${p} T=${REL_DIR}; \ + done; \ + done \ + +$(TESTRUNNER): + @echo -e "$(ATTN_COLOR)==> get $@ $(NO_COLOR)" + @GOBIN=$(BIN_DIR) go get -u gotest.tools/gotestsum + +.PHONY: test +test: $(TESTRUNNER) + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @CGO_ENABLED=0 $(BIN_DIR)/gotestsum --format short-verbose -- -count=1 -v $(ROOT_DIR)/... + +$(LINTER): + @echo -e "$(ATTN_COLOR)==> get $@ $(NO_COLOR)" + @curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s $(LINTVERSION) + +.PHONY: lint +lint: $(LINTER) + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @CGO_ENABLED=0 $(LINTER) run --enable-all + @echo -e "$(NO_COLOR)\c" + +.PHONY: doclean +doclean: + @echo -e "$(ATTN_COLOR)==> $@ $(B) GOOS=$(P) $(NO_COLOR)" + @if [ -a $(GOPATH)/bin/$(B)$(if $(findstring $(P),windows),".exe","") ];\ + then \ + rm $(GOPATH)/bin/$(B)$(if $(findstring $(P),windows),".exe",""); \ + fi + +.PHONY: clean +clean: + @echo -e "$(ATTN_COLOR)==> $@ $(NO_COLOR)" + @rm -rf $(BIN_DIR) + @rm -rf $(REL_DIR) + @go clean + @for b in ${BINARIES}; \ + do \ + $(MAKE) doclean B=$${b} P=${GOOS}; \ + done + +$(REL_DIR): + @echo -e "$(ATTN_COLOR)==> create REL_DIR $(REL_DIR) $(NO_COLOR)" + @mkdir -p $(REL_DIR) + +$(BIN_DIR): + @echo -e "$(ATTN_COLOR)==> create BIN_DIR $(BIN_DIR) $(NO_COLOR)" + @mkdir -p $(BIN_DIR) diff --git a/vendor/github.com/gertd/go-pluralize/README.md b/vendor/github.com/gertd/go-pluralize/README.md new file mode 100644 index 0000000000..d4fe4d04dc --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/README.md @@ -0,0 +1,106 @@ +# go-pluralize +[![Build Status](https://travis-ci.org/gertd/go-pluralize.svg?branch=master)](https://travis-ci.org/gertd/go-pluralize) +[![Go Report Card](https://goreportcard.com/badge/github.com/gertd/go-pluralize)](https://goreportcard.com/report/github.com/gertd/go-pluralize) +[![GoDoc](https://godoc.org/github.com/gertd/go-pluralize?status.svg)](https://godoc.org/github.com/gertd/go-pluralize) + +Pluralize and singularize any word + +# Acknowledgements +> The go-pluralize module is the Golang adaptation of the great work from [Blake Embrey](https://www.npmjs.com/~blakeembrey) and other contributors who created and maintain the NPM JavaScript [pluralize](https://www.npmjs.com/package/pluralize) package. +> The originating Javascript implementation can be found on https://github.com/blakeembrey/pluralize +> +> Without their great work this module would have taken a lot more effort, **thank you all**! + +# Version mapping + +The latest go-pluralize version is compatible with [pluralize](https://www.npmjs.com/package/pluralize) version 8.0.0 commit [#36f03cd](https://github.com/blakeembrey/pluralize/commit/36f03cd2d573fa6d23e12e1529fa4627e2af74b4) + +| go-pluralize version | NPM Pluralize Package version | +| ------------- | ------------- | +| 0.2.0 - Jan 25, 2022 [v0.2.0](https://github.com/gertd/go-pluralize/releases/tag/v0.2.0) | 8.0.0 - Oct 6, 2021 [#36f03cd](https://github.com/blakeembrey/pluralize/commit/36f03cd2d573fa6d23e12e1529fa4627e2af74b4) +| 0.1.7 - Jun 23, 2020 [v0.1.7](https://github.com/gertd/go-pluralize/releases/tag/v0.1.7) | 8.0.0 - Mar 14, 2020 [#e507706](https://github.com/blakeembrey/pluralize/commit/e507706be779612c06ebfd6043163e063e791d79) +| 0.1.2 - Apr 1, 2020 [v0.1.2](https://github.com/gertd/go-pluralize/releases/tag/v0.1.2) | 8.0.0 - Mar 14, 2020 [#e507706](https://github.com/blakeembrey/pluralize/commit/e507706be779612c06ebfd6043163e063e791d79) +| 0.1.1 - Sep 15, 2019 [v0.1.1](https://github.com/gertd/go-pluralize/releases/tag/v0.1.1) | 8.0.0 - Aug 27, 2019 [#abb3991](https://github.com/blakeembrey/pluralize/commit/abb399111aedd1d62dd418d7e0217d85f5bf22c9) +| 0.1.0 - Jun 12, 2019 [v0.1.0](https://github.com/gertd/go-pluralize/releases/tag/v0.1.0) | 8.0.0 - May 24, 2019 [#0265e4d](https://github.com/blakeembrey/pluralize/commit/0265e4d131ecad8e11c420fa4be98b75dc92c33d) + +# Installation + +To install the go module: + + go get -u github.com/gertd/go-pluralize + +To lock down a specific the version: + + go get -u github.com/gertd/go-pluralize@0.1.7 + +Download the sources and binaries from the latest [release](https://github.com/gertd/go-pluralize/releases/latest) + + +# Usage + +## Code + import pluralize "github.com/gertd/go-pluralize" + + word := "Empire" + + pluralize := pluralize.NewClient() + + fmt.Printf("IsPlural(%s) => %t\n", input, pluralize.IsPlural(word)) + fmt.Printf("IsSingular(%s) => %t\n", input, pluralize.IsSingular(word)) + fmt.Printf("Plural(%s) => %s\n", input, pluralize.Plural(word)) + fmt.Printf("Singular(%s) => %s\n", input, pluralize.Singular(word)) + +## Result + IsPlural(Empire) => false + IsSingular(Empire) => true + Plural(Empire) => Empires + Singular(Empire) => Empire + + +# Pluralize Command Line + +## Installation + go get -x github.com/gertd/go-pluralize/cmd/pluralize + + + + +## Usage + +### Help + pluralize -help + Usage of ./bin/pluralize: + -cmd string + command [All|IsPlural|IsSingular|Plural|Singular] (default "All") + -version + display version info + -word string + input value + +### Word with All Commands + pluralize -word Empire + + IsPlural(Empire) => false + IsSingular(Empire) => true + Plural(Empire) => Empires + Singular(Empire) => Empire + +### Is Word Plural? + pluralize -word Cactus -cmd IsPlural + + IsPlural(Cactus) => false + +### Is Word Singular? + pluralize -word Cacti -cmd IsSingular + + IsSingular(Cacti) => false + +### Word Make Plural + pluralize -word Cactus -cmd Plural + + Plural(Cactus) => Cacti + +### Word Make Singular + pluralize -word Cacti -cmd Singular + + Singular(Cacti) => Cactus diff --git a/vendor/github.com/gertd/go-pluralize/go.mod b/vendor/github.com/gertd/go-pluralize/go.mod new file mode 100644 index 0000000000..cba227bba0 --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/go.mod @@ -0,0 +1,5 @@ +module github.com/gertd/go-pluralize + +go 1.17 + +require github.com/pkg/errors v0.9.1 diff --git a/vendor/github.com/gertd/go-pluralize/go.sum b/vendor/github.com/gertd/go-pluralize/go.sum new file mode 100644 index 0000000000..7c401c3f58 --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/go.sum @@ -0,0 +1,2 @@ +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/vendor/github.com/gertd/go-pluralize/pluralize.go b/vendor/github.com/gertd/go-pluralize/pluralize.go new file mode 100644 index 0000000000..9d2144479a --- /dev/null +++ b/vendor/github.com/gertd/go-pluralize/pluralize.go @@ -0,0 +1,500 @@ +package pluralize + +import ( + "fmt" + "regexp" + "strconv" + "strings" +) + +// Rule -- pluralize rule expression and replacement value. +type Rule struct { + expression *regexp.Regexp + replacement string +} + +// Client -- pluralize client. +type Client struct { + pluralRules []Rule + singularRules []Rule + uncountables map[string]bool + irregularSingles map[string]string + irregularPlurals map[string]string + interpolateExpr *regexp.Regexp +} + +// NewClient - pluralization client factory method. +func NewClient() *Client { + client := Client{} + client.init() + + return &client +} + +func (c *Client) init() { + c.pluralRules = make([]Rule, 0) + c.singularRules = make([]Rule, 0) + c.uncountables = make(map[string]bool) + c.irregularSingles = make(map[string]string) + c.irregularPlurals = make(map[string]string) + + c.loadIrregularRules() + c.loadPluralizationRules() + c.loadSingularizationRules() + c.loadUncountableRules() + c.interpolateExpr = regexp.MustCompile(`\$(\d{1,2})`) +} + +// Pluralize -- Pluralize or singularize a word based on the passed in count. +// word: the word to pluralize +// count: how many of the word exist +// inclusive: whether to prefix with the number (e.g. 3 ducks) +func (c *Client) Pluralize(word string, count int, inclusive bool) string { + pluralized := func() func(string) string { + if count == 1 { + return c.Singular + } + + return c.Plural + } + + if inclusive { + return fmt.Sprintf("%d %s", count, pluralized()(word)) + } + + return pluralized()(word) +} + +// Plural -- Pluralize a word. +func (c *Client) Plural(word string) string { + return c.replaceWord(c.irregularSingles, c.irregularPlurals, c.pluralRules)(word) +} + +// IsPlural -- Check if a word is plural. +func (c *Client) IsPlural(word string) bool { + return c.checkWord(c.irregularSingles, c.irregularPlurals, c.pluralRules)(word) +} + +// Singular -- Singularize a word. +func (c *Client) Singular(word string) string { + return c.replaceWord(c.irregularPlurals, c.irregularSingles, c.singularRules)(word) +} + +// IsSingular -- Check if a word is singular. +func (c *Client) IsSingular(word string) bool { + return c.checkWord(c.irregularPlurals, c.irregularSingles, c.singularRules)(word) +} + +// AddPluralRule -- Add a pluralization rule to the collection. +func (c *Client) AddPluralRule(rule string, replacement string) { + c.pluralRules = append(c.pluralRules, Rule{sanitizeRule(rule), replacement}) +} + +// AddSingularRule -- Add a singularization rule to the collection. +func (c *Client) AddSingularRule(rule string, replacement string) { + c.singularRules = append(c.singularRules, Rule{sanitizeRule(rule), replacement}) +} + +// AddUncountableRule -- Add an uncountable word rule. +func (c *Client) AddUncountableRule(word string) { + if !isExpr(word) { + c.uncountables[strings.ToLower(word)] = true + return + } + + c.AddPluralRule(word, `$0`) + c.AddSingularRule(word, `$0`) +} + +// AddIrregularRule -- Add an irregular word definition. +func (c *Client) AddIrregularRule(single string, plural string) { + p := strings.ToLower(plural) + s := strings.ToLower(single) + + c.irregularSingles[s] = p + c.irregularPlurals[p] = s +} + +func (c *Client) replaceWord(replaceMap map[string]string, keepMap map[string]string, rules []Rule) func(w string) string { //nolint:lll + f := func(word string) string { + // Get the correct token and case restoration functions. + var token = strings.ToLower(word) + + // Check against the keep object map. + if _, ok := keepMap[token]; ok { + return restoreCase(word, token) + } + + // Check against the replacement map for a direct word replacement. + if replaceToken, ok := replaceMap[token]; ok { + return restoreCase(word, replaceToken) + } + + // Run all the rules against the word. + return c.sanitizeWord(token, word, rules) + } + + return f +} + +func (c *Client) checkWord(replaceMap map[string]string, keepMap map[string]string, rules []Rule) func(w string) bool { + f := func(word string) bool { + var token = strings.ToLower(word) + + if _, ok := keepMap[token]; ok { + return true + } + + if _, ok := replaceMap[token]; ok { + return false + } + + return c.sanitizeWord(token, token, rules) == token + } + + return f +} + +func (c *Client) interpolate(str string, args []string) string { + lookup := map[string]string{} + + for _, submatch := range c.interpolateExpr.FindAllStringSubmatch(str, -1) { + element, _ := strconv.Atoi(submatch[1]) + lookup[submatch[0]] = args[element] + } + + result := c.interpolateExpr.ReplaceAllStringFunc(str, func(repl string) string { + return lookup[repl] + }) + + return result +} + +func (c *Client) replace(word string, rule Rule) string { + return rule.expression.ReplaceAllStringFunc(word, func(w string) string { + match := rule.expression.FindString(word) + index := rule.expression.FindStringIndex(word)[0] + args := rule.expression.FindAllStringSubmatch(word, -1)[0] + + result := c.interpolate(rule.replacement, args) + + if match == `` { + return restoreCase(word[index-1:index], result) + } + return restoreCase(match, result) + }) +} + +func (c *Client) sanitizeWord(token string, word string, rules []Rule) string { + // If empty string + if len(token) == 0 { + return word + } + // If does not need fixup + if _, ok := c.uncountables[token]; ok { + return word + } + + // Iterate over the sanitization rules and use the first one to match. + // NOTE: iterate rules array in reverse order specific => general rules + for i := len(rules) - 1; i >= 0; i-- { + if rules[i].expression.MatchString(word) { + return c.replace(word, rules[i]) + } + } + + return word +} + +func sanitizeRule(rule string) *regexp.Regexp { + if isExpr(rule) { + return regexp.MustCompile(rule) + } + + return regexp.MustCompile(`(?i)^` + rule + `$`) +} + +func restoreCase(word string, token string) string { + // Tokens are an exact match. + if word == token { + return token + } + + // Lower cased words. E.g. "hello". + if word == strings.ToLower(word) { + return strings.ToLower(token) + } + + // Upper cased words. E.g. "WHISKY". + if word == strings.ToUpper(word) { + return strings.ToUpper(token) + } + + // Title cased words. E.g. "Title". + if word[:1] == strings.ToUpper(word[:1]) { + return strings.ToUpper(token[:1]) + strings.ToLower(token[1:]) + } + + // Lower cased words. E.g. "test". + return strings.ToLower(token) +} + +// isExpr -- helper to detect if string represents an expression by checking first character to be `(`. +func isExpr(s string) bool { + return s[:1] == `(` +} + +func (c *Client) loadIrregularRules() { //nolint:funlen + var irregularRules = []struct { + single string + plural string + }{ + // Pronouns. + {`I`, `we`}, + {`me`, `us`}, + {`he`, `they`}, + {`she`, `they`}, + {`them`, `them`}, + {`myself`, `ourselves`}, + {`yourself`, `yourselves`}, + {`itself`, `themselves`}, + {`herself`, `themselves`}, + {`himself`, `themselves`}, + {`themself`, `themselves`}, + {`is`, `are`}, + {`was`, `were`}, + {`has`, `have`}, + {`this`, `these`}, + {`that`, `those`}, + {`my`, `our`}, + {`its`, `their`}, + {`his`, `their`}, + {`her`, `their`}, + // Words ending in with a consonant and `o`. + {`echo`, `echoes`}, + {`dingo`, `dingoes`}, + {`volcano`, `volcanoes`}, + {`tornado`, `tornadoes`}, + {`torpedo`, `torpedoes`}, + // Ends with `us`. + {`genus`, `genera`}, + {`viscus`, `viscera`}, + // Ends with `ma`. + {`stigma`, `stigmata`}, + {`stoma`, `stomata`}, + {`dogma`, `dogmata`}, + {`lemma`, `lemmata`}, + {`schema`, `schemata`}, + {`anathema`, `anathemata`}, + // Other irregular rules. + {`ox`, `oxen`}, + {`axe`, `axes`}, + {`die`, `dice`}, + {`yes`, `yeses`}, + {`foot`, `feet`}, + {`eave`, `eaves`}, + {`goose`, `geese`}, + {`tooth`, `teeth`}, + {`quiz`, `quizzes`}, + {`human`, `humans`}, + {`proof`, `proofs`}, + {`carve`, `carves`}, + {`valve`, `valves`}, + {`looey`, `looies`}, + {`thief`, `thieves`}, + {`groove`, `grooves`}, + {`pickaxe`, `pickaxes`}, + {`passerby`, `passersby`}, + {`canvas`, `canvases`}, + {`sms`, `sms`}, + } + + for _, r := range irregularRules { + c.AddIrregularRule(r.single, r.plural) + } +} + +func (c *Client) loadPluralizationRules() { + var pluralizationRules = []struct { + rule string + replacement string + }{ + {`(?i)s?$`, `s`}, + {`(?i)[^[:ascii:]]$`, `$0`}, + {`(?i)([^aeiou]ese)$`, `$1`}, + {`(?i)(ax|test)is$`, `$1es`}, + {`(?i)(alias|[^aou]us|t[lm]as|gas|ris)$`, `$1es`}, + {`(?i)(e[mn]u)s?$`, `$1s`}, + {`(?i)([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$`, `$1`}, + {`(?i)(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$`, `$1i`}, //nolint:lll,misspell + {`(?i)(alumn|alg|vertebr)(?:a|ae)$`, `$1ae`}, + {`(?i)(seraph|cherub)(?:im)?$`, `$1im`}, + {`(?i)(her|at|gr)o$`, `$1oes`}, + {`(?i)(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$`, `$1a`}, //nolint:lll,misspell + {`(?i)(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$`, `$1a`}, + {`(?i)sis$`, `ses`}, + {`(?i)(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$`, `$1$2ves`}, + {`(?i)([^aeiouy]|qu)y$`, `$1ies`}, + {`(?i)([^ch][ieo][ln])ey$`, `$1ies`}, + {`(?i)(x|ch|ss|sh|zz)$`, `$1es`}, + {`(?i)(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$`, `$1ices`}, + {`(?i)\b((?:tit)?m|l)(?:ice|ouse)$`, `$1ice`}, + {`(?i)(pe)(?:rson|ople)$`, `$1ople`}, + {`(?i)(child)(?:ren)?$`, `$1ren`}, + {`(?i)eaux$`, `$0`}, + {`(?i)m[ae]n$`, `men`}, + {`thou`, `you`}, + } + + for _, r := range pluralizationRules { + c.AddPluralRule(r.rule, r.replacement) + } +} + +func (c *Client) loadSingularizationRules() { + var singularizationRules = []struct { + rule string + replacement string + }{ + {`(?i)s$`, ``}, + {`(?i)(ss)$`, `$1`}, + {`(?i)(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$`, `$1fe`}, + {`(?i)(ar|(?:wo|[ae])l|[eo][ao])ves$`, `$1f`}, + {`(?i)ies$`, `y`}, + {`(?i)(dg|ss|ois|lk|ok|wn|mb|th|ch|ec|oal|is|ck|ix|sser|ts|wb)ies$`, `$1ie`}, + {`(?i)\b(l|(?:neck|cross|hog|aun)?t|coll|faer|food|gen|goon|group|hipp|junk|vegg|(?:pork)?p|charl|calor|cut)ies$`, `$1ie`}, //nolint:lll + {`(?i)\b(mon|smil)ies$`, `$1ey`}, + {`(?i)\b((?:tit)?m|l)ice$`, `$1ouse`}, + {`(?i)(seraph|cherub)im$`, `$1`}, + {`(?i)(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$`, `$1`}, + {`(?i)(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$`, `$1sis`}, + {`(?i)(movie|twelve|abuse|e[mn]u)s$`, `$1`}, + {`(?i)(test)(?:is|es)$`, `$1is`}, + {`(?i)(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$`, `$1us`}, //nolint:lll,misspell + {`(?i)(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$`, `$1um`}, //nolint:lll,misspell + {`(?i)(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$`, `$1on`}, + {`(?i)(alumn|alg|vertebr)ae$`, `$1a`}, + {`(?i)(cod|mur|sil|vert|ind)ices$`, `$1ex`}, + {`(?i)(matr|append)ices$`, `$1ix`}, + {`(?i)(pe)(rson|ople)$`, `$1rson`}, + {`(?i)(child)ren$`, `$1`}, + {`(?i)(eau)x?$`, `$1`}, + {`(?i)men$`, `man`}, + } + + for _, r := range singularizationRules { + c.AddSingularRule(r.rule, r.replacement) + } +} + +func (c *Client) loadUncountableRules() { //nolint:funlen + var uncountableRules = []string{ + // Singular words with no plurals. + `adulthood`, + `advice`, + `agenda`, + `aid`, + `aircraft`, + `alcohol`, + `ammo`, + `analytics`, + `anime`, + `athletics`, + `audio`, + `bison`, + `blood`, + `bream`, + `buffalo`, + `butter`, + `carp`, + `cash`, + `chassis`, + `chess`, + `clothing`, + `cod`, + `commerce`, + `cooperation`, + `corps`, + `debris`, + `diabetes`, + `digestion`, + `elk`, + `energy`, + `equipment`, + `excretion`, + `expertise`, + `firmware`, + `flounder`, + `fun`, + `gallows`, + `garbage`, + `graffiti`, + `hardware`, + `headquarters`, + `health`, + `herpes`, + `highjinks`, + `homework`, + `housework`, + `information`, + `jeans`, + `justice`, + `kudos`, + `labour`, + `literature`, + `machinery`, + `mackerel`, + `mail`, + `media`, + `mews`, + `moose`, + `music`, + `mud`, + `manga`, + `news`, + `only`, + `personnel`, + `pike`, + `plankton`, + `pliers`, + `police`, + `pollution`, + `premises`, + `rain`, + `research`, + `rice`, + `salmon`, + `scissors`, + `series`, + `sewage`, + `shambles`, + `shrimp`, + `software`, + `staff`, + `swine`, + `tennis`, + `traffic`, + `transportation`, + `trout`, + `tuna`, + `wealth`, + `welfare`, + `whiting`, + `wildebeest`, + `wildlife`, + `you`, + // Regexes. + `(?i)pok[eé]mon$`, // + `(?i)[^aeiou]ese$`, // "chinese", "japanese" + `(?i)deer$`, // "deer", "reindeer" + `(?i)(fish)$`, // "fish", "blowfish", "angelfish" + `(?i)measles$`, // + `(?i)o[iu]s$`, // "carnivorous" + `(?i)pox$`, // "chickpox", "smallpox" + `(?i)sheep$`, // + } + + for _, w := range uncountableRules { + c.AddUncountableRule(w) + } +} diff --git a/vendor/github.com/iancoleman/orderedmap/LICENSE b/vendor/github.com/iancoleman/orderedmap/LICENSE new file mode 100644 index 0000000000..2732e3795b --- /dev/null +++ b/vendor/github.com/iancoleman/orderedmap/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Ian Coleman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, Subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or Substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/iancoleman/orderedmap/orderedmap.go b/vendor/github.com/iancoleman/orderedmap/orderedmap.go new file mode 100644 index 0000000000..656e354f90 --- /dev/null +++ b/vendor/github.com/iancoleman/orderedmap/orderedmap.go @@ -0,0 +1,329 @@ +package orderedmap + +import ( + "encoding/json" + "errors" + "sort" + "strings" +) + +var NoValueError = errors.New("No value for this key") + +type KeyIndex struct { + Key string + Index int +} +type ByIndex []KeyIndex + +func (a ByIndex) Len() int { return len(a) } +func (a ByIndex) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a ByIndex) Less(i, j int) bool { return a[i].Index < a[j].Index } + +type Pair struct { + key string + value interface{} +} + +func (kv *Pair) Key() string { + return kv.key +} + +func (kv *Pair) Value() interface{} { + return kv.value +} + +type ByPair struct { + Pairs []*Pair + LessFunc func(a *Pair, j *Pair) bool +} + +func (a ByPair) Len() int { return len(a.Pairs) } +func (a ByPair) Swap(i, j int) { a.Pairs[i], a.Pairs[j] = a.Pairs[j], a.Pairs[i] } +func (a ByPair) Less(i, j int) bool { return a.LessFunc(a.Pairs[i], a.Pairs[j]) } + +type OrderedMap struct { + keys []string + values map[string]interface{} +} + +func New() *OrderedMap { + o := OrderedMap{} + o.keys = []string{} + o.values = map[string]interface{}{} + return &o +} + +func (o *OrderedMap) Get(key string) (interface{}, bool) { + val, exists := o.values[key] + return val, exists +} + +func (o *OrderedMap) Set(key string, value interface{}) { + _, exists := o.values[key] + if !exists { + o.keys = append(o.keys, key) + } + o.values[key] = value +} + +func (o *OrderedMap) Delete(key string) { + // check key is in use + _, ok := o.values[key] + if !ok { + return + } + // remove from keys + for i, k := range o.keys { + if k == key { + o.keys = append(o.keys[:i], o.keys[i+1:]...) + break + } + } + // remove from values + delete(o.values, key) +} + +func (o *OrderedMap) Keys() []string { + return o.keys +} + +// SortKeys Sort the map keys using your sort func +func (o *OrderedMap) SortKeys(sortFunc func(keys []string)) { + sortFunc(o.keys) +} + +// Sort Sort the map using your sort func +func (o *OrderedMap) Sort(lessFunc func(a *Pair, b *Pair) bool) { + pairs := make([]*Pair, len(o.keys)) + for i, key := range o.keys { + pairs[i] = &Pair{key, o.values[key]} + } + + sort.Sort(ByPair{pairs, lessFunc}) + + for i, pair := range pairs { + o.keys[i] = pair.key + } +} + +func (o *OrderedMap) UnmarshalJSON(b []byte) error { + if o.values == nil { + o.values = map[string]interface{}{} + } + var err error + err = mapStringToOrderedMap(string(b), o) + if err != nil { + return err + } + return nil +} + +func mapStringToOrderedMap(s string, o *OrderedMap) error { + // parse string into map + m := map[string]interface{}{} + err := json.Unmarshal([]byte(s), &m) + if err != nil { + return err + } + // Get the order of the keys + orderedKeys := []KeyIndex{} + for k, _ := range m { + kEscaped := strings.Replace(k, `"`, `\"`, -1) + kQuoted := `"` + kEscaped + `"` + // Find how much content exists before this key. + // If all content from this key and after is replaced with a close + // brace, it should still form a valid json string. + sTrimmed := s + for len(sTrimmed) > 0 { + lastIndex := strings.LastIndex(sTrimmed, kQuoted) + if lastIndex == -1 { + break + } + sTrimmed = sTrimmed[0:lastIndex] + sTrimmed = strings.TrimSpace(sTrimmed) + if len(sTrimmed) > 0 && sTrimmed[len(sTrimmed)-1] == ',' { + sTrimmed = sTrimmed[0 : len(sTrimmed)-1] + } + maybeValidJson := sTrimmed + "}" + testMap := map[string]interface{}{} + err := json.Unmarshal([]byte(maybeValidJson), &testMap) + if err == nil { + // record the position of this key in s + ki := KeyIndex{ + Key: k, + Index: len(sTrimmed), + } + orderedKeys = append(orderedKeys, ki) + // shorten the string to get the next key + startOfValueIndex := lastIndex + len(kQuoted) + valueStr := s[startOfValueIndex : len(s)-1] + valueStr = strings.TrimSpace(valueStr) + if len(valueStr) > 0 && valueStr[0] == ':' { + valueStr = valueStr[1:len(valueStr)] + } + valueStr = strings.TrimSpace(valueStr) + if valueStr[0] == '{' { + // if the value for this key is a map + // find end of valueStr by removing everything after last } + // until it forms valid json + hasValidJson := false + i := 1 + for i < len(valueStr) && !hasValidJson { + if valueStr[i] != '}' { + i = i + 1 + continue + } + subTestMap := map[string]interface{}{} + testValue := valueStr[0 : i+1] + err = json.Unmarshal([]byte(testValue), &subTestMap) + if err == nil { + hasValidJson = true + valueStr = testValue + break + } + i = i + 1 + } + // convert to orderedmap + // this may be recursive it values in the map are also maps + if hasValidJson { + newMap := New() + err := mapStringToOrderedMap(valueStr, newMap) + if err != nil { + return err + } + m[k] = *newMap + } + } else if valueStr[0] == '[' { + // if the value for this key is a slice + // find end of valueStr by removing everything after last ] + // until it forms valid json + hasValidJson := false + i := 1 + for i < len(valueStr) && !hasValidJson { + if valueStr[i] != ']' { + i = i + 1 + continue + } + subTestSlice := []interface{}{} + testValue := valueStr[0 : i+1] + err = json.Unmarshal([]byte(testValue), &subTestSlice) + if err == nil { + hasValidJson = true + valueStr = testValue + break + } + i = i + 1 + } + // convert to slice with any map items converted to + // orderedmaps + // this may be recursive if values in the slice are slices + if hasValidJson { + newSlice := []interface{}{} + err := sliceStringToSliceWithOrderedMaps(valueStr, &newSlice) + if err != nil { + return err + } + m[k] = newSlice + } + } else { + o.Set(k, m[k]) + } + break + } + } + } + // Sort the keys + sort.Sort(ByIndex(orderedKeys)) + // Convert sorted keys to string slice + k := []string{} + for _, ki := range orderedKeys { + k = append(k, ki.Key) + } + // Set the OrderedMap values + o.values = m + o.keys = k + return nil +} + +func sliceStringToSliceWithOrderedMaps(valueStr string, newSlice *[]interface{}) error { + // if the value for this key is a []interface, convert any map items to an orderedmap. + // find end of valueStr by removing everything after last ] + // until it forms valid json + itemsStr := strings.TrimSpace(valueStr) + itemsStr = itemsStr[1 : len(itemsStr)-1] + // get next item in the slice + itemIndex := 0 + startItem := 0 + endItem := 0 + for endItem <= len(itemsStr) { + couldBeItemEnd := false + couldBeItemEnd = couldBeItemEnd || endItem == len(itemsStr) + couldBeItemEnd = couldBeItemEnd || (endItem < len(itemsStr) && itemsStr[endItem] == ',') + if !couldBeItemEnd { + endItem = endItem + 1 + continue + } + // if this substring compiles to json, it's the next item + possibleItemStr := strings.TrimSpace(itemsStr[startItem:endItem]) + var possibleItem interface{} + err := json.Unmarshal([]byte(possibleItemStr), &possibleItem) + if err != nil { + endItem = endItem + 1 + continue + } + if possibleItemStr[0] == '{' { + // if item is map, convert to orderedmap + oo := New() + err := mapStringToOrderedMap(possibleItemStr, oo) + if err != nil { + return err + } + // add new orderedmap item to new slice + slice := *newSlice + slice = append(slice, *oo) + *newSlice = slice + } else if possibleItemStr[0] == '[' { + // if item is slice, convert to slice with orderedmaps + newItem := []interface{}{} + err := sliceStringToSliceWithOrderedMaps(possibleItemStr, &newItem) + if err != nil { + return err + } + // replace original slice item with new slice + slice := *newSlice + slice = append(slice, newItem) + *newSlice = slice + } else { + // any non-slice and non-map item, just add json parsed item + slice := *newSlice + slice = append(slice, possibleItem) + *newSlice = slice + } + // remove this item from itemsStr + startItem = endItem + 1 + endItem = endItem + 1 + itemIndex = itemIndex + 1 + } + return nil +} + +func (o OrderedMap) MarshalJSON() ([]byte, error) { + s := "{" + for _, k := range o.keys { + // add key + kEscaped := strings.Replace(k, `"`, `\"`, -1) + s = s + `"` + kEscaped + `":` + // add value + v := o.values[k] + vBytes, err := json.Marshal(v) + if err != nil { + return []byte{}, err + } + s = s + string(vBytes) + "," + } + if len(o.keys) > 0 { + s = s[0 : len(s)-1] + } + s = s + "}" + return []byte(s), nil +} diff --git a/vendor/github.com/iancoleman/orderedmap/readme.md b/vendor/github.com/iancoleman/orderedmap/readme.md new file mode 100644 index 0000000000..895632e1b1 --- /dev/null +++ b/vendor/github.com/iancoleman/orderedmap/readme.md @@ -0,0 +1,73 @@ +# orderedmap + +A golang data type equivalent to python's collections.OrderedDict + +Retains order of keys in maps + +Can be JSON serialized / deserialized + +# Usage + +```go +package main + +import ( + "encoding/json" + "github.com/iancoleman/orderedmap" +) + +func main() { + + // use New() instead of o := map[string]interface{}{} + o := orderedmap.New() + + // use Set instead of o["a"] = 1 + o.Set("a", 1) + + // use Get instead of i, ok := o["a"] + val, ok := o.Get("a") + + // use Keys instead of for k, v := range o + key := o.Keys() + for _, k := range keys { + v, _ := o.Get(k) + } + + // use o.Delete instead of delete(o, key) + err := o.Delete("a") + + // serialize to a json string using encoding/json + bytes, err := json.Marshal(o) + prettyBytes, err := json.MarshalIndent(o) + + // deserialize a json string using encoding/json + // all maps (including nested maps) will be parsed as orderedmaps + s := `{"a": 1}` + err := json.Unmarshal([]byte(s), &o) + + // sort the keys + o.SortKeys(sort.Strings) + + // sort by Pair + o.Sort(func(a *Pair, b *Pair) bool { + return a.Value().(float64) < b.Value().(float64) + }) +} +``` + +# Caveats + +* OrderedMap only takes strings for the key, as per [the JSON spec](http://json.org/). + +# Tests + +``` +go test +``` + +# Alternatives + +None of the alternatives offer JSON serialization. + +* [cevaris/ordered_map](https://github.com/cevaris/ordered_map) +* [mantyr/iterator](https://github.com/mantyr/iterator) diff --git a/vendor/github.com/invopop/jsonschema/.golangci.yml b/vendor/github.com/invopop/jsonschema/.golangci.yml new file mode 100644 index 0000000000..df2c4fe1f0 --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/.golangci.yml @@ -0,0 +1,88 @@ +run: + tests: true + max-same-issues: 50 + skip-dirs: + - resources + - old + skip-files: + - cmd/protopkg/main.go + +output: + print-issued-lines: false + +linters: + enable-all: true + disable: + - maligned + - megacheck + - lll + - typecheck # `go build` catches this, and it doesn't currently work with Go 1.11 modules + - goimports # horrendously slow with go modules :( + - dupl # has never been actually useful + - gochecknoglobals + - gochecknoinits + - interfacer # author deprecated it because it provides bad suggestions + - funlen + - whitespace + - godox + - wsl + - dogsled + - gomnd + - gocognit + - gocyclo + - scopelint + - godot + - nestif + - testpackage + - goerr113 + - gci + - gofumpt + - exhaustivestruct + - nlreturn + - forbidigo + - cyclop + - paralleltest + - ifshort # so annoying + - golint + - tagliatelle + - forcetypeassert + - wrapcheck + - revive + - structcheck + - stylecheck + - exhaustive + +linters-settings: + govet: + check-shadowing: true + use-installed-packages: true + dupl: + threshold: 100 + goconst: + min-len: 8 + min-occurrences: 3 + gocyclo: + min-complexity: 20 + gocritic: + disabled-checks: + - ifElseChain + + +issues: + max-per-linter: 0 + max-same: 0 + exclude-use-default: false + exclude: + # Captured by errcheck. + - '^(G104|G204):' + # Very commonly not checked. + - 'Error return value of .(.*\.Help|.*\.MarkFlagRequired|(os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*Print(f|ln|)|os\.(Un)?Setenv). is not checked' + # Weird error only seen on Kochiku... + - 'internal error: no range for' + - 'exported method `.*\.(MarshalJSON|UnmarshalJSON|URN|Payload|GoString|Close|Provides|Requires|ExcludeFromHash|MarshalText|UnmarshalText|Description|Check|Poll|Severity)` should have comment or be unexported' + - 'composite literal uses unkeyed fields' + - 'declaration of "err" shadows declaration' + - 'by other packages, and that stutters' + - 'Potential file inclusion via variable' + - 'at least one file in a package should have a package comment' + - 'bad syntax for struct tag pair' diff --git a/vendor/github.com/invopop/jsonschema/COPYING b/vendor/github.com/invopop/jsonschema/COPYING new file mode 100644 index 0000000000..2993ec085d --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/COPYING @@ -0,0 +1,19 @@ +Copyright (C) 2014 Alec Thomas + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/invopop/jsonschema/README.md b/vendor/github.com/invopop/jsonschema/README.md new file mode 100644 index 0000000000..7062a3393b --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/README.md @@ -0,0 +1,412 @@ +# Go JSON Schema Reflection + +[![Lint](https://github.com/invopop/jsonschema/actions/workflows/lint.yaml/badge.svg)](https://github.com/invopop/jsonschema/actions/workflows/lint.yaml) +[![Test Go](https://github.com/invopop/jsonschema/actions/workflows/test.yaml/badge.svg)](https://github.com/invopop/jsonschema/actions/workflows/test.yaml) +[![Go Report Card](https://goreportcard.com/badge/github.com/invopop/jsonschema)](https://goreportcard.com/report/github.com/invopop/jsonschema) +[![GoDoc](https://godoc.org/github.com/invopop/jsonschema?status.svg)](https://godoc.org/github.com/invopop/jsonschema) +![Latest Tag](https://img.shields.io/github/v/tag/invopop/jsonschema) + +This package can be used to generate [JSON Schemas](http://json-schema.org/latest/json-schema-validation.html) from Go types through reflection. + +- Supports arbitrarily complex types, including `interface{}`, maps, slices, etc. +- Supports json-schema features such as minLength, maxLength, pattern, format, etc. +- Supports simple string and numeric enums. +- Supports custom property fields via the `jsonschema_extras` struct tag. + +This repository is a fork of the original [jsonschema](https://github.com/alecthomas/jsonschema) by [@alecthomas](https://github.com/alecthomas). At [Invopop](https://invopop.com) we use jsonschema as a cornerstone in our [GOBL library](https://github.com/invopop/gobl), and wanted to be able to continue building and adding features without taking up Alec's time. There have been a few significant changes that probably mean this version is a not compatible with with Alec's: + +- The original was stuck on the draft-04 version of JSON Schema, we've now moved to the latest JSON Schema Draft 2020-12. +- Schema IDs are added automatically from the current Go package's URL in order to be unique, and can be disabled with the `Anonymous` option. +- Support for the `FullyQualifyTypeName` option has been removed. If you have conflicts, you should use multiple schema files with different IDs, set the `DoNotReference` option to true to hide definitions completely, or add your own naming strategy using the `Namer` property. + +## Example + +The following Go type: + +```go +type TestUser struct { + ID int `json:"id"` + Name string `json:"name" jsonschema:"title=the name,description=The name of a friend,example=joe,example=lucy,default=alex"` + Friends []int `json:"friends,omitempty" jsonschema_description:"The list of IDs, omitted when empty"` + Tags map[string]interface{} `json:"tags,omitempty" jsonschema_extras:"a=b,foo=bar,foo=bar1"` + BirthDate time.Time `json:"birth_date,omitempty" jsonschema:"oneof_required=date"` + YearOfBirth string `json:"year_of_birth,omitempty" jsonschema:"oneof_required=year"` + Metadata interface{} `json:"metadata,omitempty" jsonschema:"oneof_type=string;array"` + FavColor string `json:"fav_color,omitempty" jsonschema:"enum=red,enum=green,enum=blue"` +} +``` + +Results in following JSON Schema: + +```go +jsonschema.Reflect(&TestUser{}) +``` + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/SampleUser", + "$defs": { + "SampleUser": { + "oneOf": [ + { + "required": ["birth_date"], + "title": "date" + }, + { + "required": ["year_of_birth"], + "title": "year" + } + ], + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string", + "title": "the name", + "description": "The name of a friend", + "default": "alex", + "examples": ["joe", "lucy"] + }, + "friends": { + "items": { + "type": "integer" + }, + "type": "array", + "description": "The list of IDs, omitted when empty" + }, + "tags": { + "type": "object", + "a": "b", + "foo": ["bar", "bar1"] + }, + "birth_date": { + "type": "string", + "format": "date-time" + }, + "year_of_birth": { + "type": "string" + }, + "metadata": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array" + } + ] + }, + "fav_color": { + "type": "string", + "enum": ["red", "green", "blue"] + } + }, + "additionalProperties": false, + "type": "object", + "required": ["id", "name"] + } + } +} +``` + +## Configurable behaviour + +The behaviour of the schema generator can be altered with parameters when a `jsonschema.Reflector` +instance is created. + +### ExpandedStruct + +If set to `true`, makes the top level struct not to reference itself in the definitions. But type passed should be a struct type. + +eg. + +```go +type GrandfatherType struct { + FamilyName string `json:"family_name" jsonschema:"required"` +} + +type SomeBaseType struct { + SomeBaseProperty int `json:"some_base_property"` + // The jsonschema required tag is nonsensical for private and ignored properties. + // Their presence here tests that the fields *will not* be required in the output + // schema, even if they are tagged required. + somePrivateBaseProperty string `json:"i_am_private" jsonschema:"required"` + SomeIgnoredBaseProperty string `json:"-" jsonschema:"required"` + SomeSchemaIgnoredProperty string `jsonschema:"-,required"` + SomeUntaggedBaseProperty bool `jsonschema:"required"` + someUnexportedUntaggedBaseProperty bool + Grandfather GrandfatherType `json:"grand"` +} +``` + +will output: + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "required": ["some_base_property", "grand", "SomeUntaggedBaseProperty"], + "properties": { + "SomeUntaggedBaseProperty": { + "type": "boolean" + }, + "grand": { + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/definitions/GrandfatherType" + }, + "some_base_property": { + "type": "integer" + } + }, + "type": "object", + "$defs": { + "GrandfatherType": { + "required": ["family_name"], + "properties": { + "family_name": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + } + } +} +``` + +### PreferYAMLSchema + +JSON schemas can also be used to validate YAML, however YAML frequently uses +different identifiers to JSON indicated by the `yaml:` tag. The `Reflector` will +by default prefer `json:` tags over `yaml:` tags (and only use the latter if the +former are not present). This behavior can be changed via the `PreferYAMLSchema` +flag, that will switch this behavior: `yaml:` tags will be preferred over +`json:` tags. + +With `PreferYAMLSchema: true`, the following struct: + +```go +type Person struct { + FirstName string `json:"FirstName" yaml:"first_name"` +} +``` + +would result in this schema: + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/TestYamlAndJson", + "$defs": { + "Person": { + "required": ["first_name"], + "properties": { + "first_name": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + } + } +} +``` + +whereas without the flag one obtains: + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/TestYamlAndJson", + "$defs": { + "Person": { + "required": ["FirstName"], + "properties": { + "first_name": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + } + } +} +``` + +### Using Go Comments + +Writing a good schema with descriptions inside tags can become cumbersome and tedious, especially if you already have some Go comments around your types and field definitions. If you'd like to take advantage of these existing comments, you can use the `AddGoComments(base, path string)` method that forms part of the reflector to parse your go files and automatically generate a dictionary of Go import paths, types, and fields, to individual comments. These will then be used automatically as description fields, and can be overridden with a manual definition if needed. + +Take a simplified example of a User struct which for the sake of simplicity we assume is defined inside this package: + +```go +package main + +// User is used as a base to provide tests for comments. +type User struct { + // Unique sequential identifier. + ID int `json:"id" jsonschema:"required"` + // Name of the user + Name string `json:"name"` +} +``` + +To get the comments provided into your JSON schema, use a regular `Reflector` and add the go code using an import module URL and path. Fully qualified go module paths cannot be determined reliably by the `go/parser` library, so we need to introduce this manually: + +```go +r := new(Reflector) +if err := r.AddGoComments("github.com/invopop/jsonschema", "./"); err != nil { + // deal with error +} +s := r.Reflect(&User{}) +// output +``` + +Expect the results to be similar to: + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/User", + "$defs": { + "User": { + "required": ["id"], + "properties": { + "id": { + "type": "integer", + "description": "Unique sequential identifier." + }, + "name": { + "type": "string", + "description": "Name of the user" + } + }, + "additionalProperties": false, + "type": "object", + "description": "User is used as a base to provide tests for comments." + } + } +} +``` + +### Custom Key Naming + +In some situations, the keys actually used to write files are different from Go structs'. + +This is often the case when writing a configuration file to YAML or JSON from a Go struct, or when returning a JSON response for a Web API: APIs typically use snake_case, while Go uses PascalCase. + +You can pass a `func(string) string` function to `Reflector`'s `KeyNamer` option to map Go field names to JSON key names and reflect the aforementionned transformations, without having to specify `json:"..."` on every struct field. + +For example, consider the following struct + +```go +type User struct { + GivenName string + PasswordSalted []byte `json:"salted_password"` +} +``` + +We can transform field names to snake_case in the generated JSON schema: + +```go +r := new(jsonschema.Reflector) +r.KeyNamer = strcase.SnakeCase // from package github.com/stoewer/go-strcase + +r.Reflect(&User{}) +``` + +Will yield + +```diff + { + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/User", + "$defs": { + "User": { + "properties": { +- "GivenName": { ++ "given_name": { + "type": "string" + }, + "salted_password": { + "type": "string", + "contentEncoding": "base64" + } + }, + "additionalProperties": false, + "type": "object", +- "required": ["GivenName", "salted_password"] ++ "required": ["given_name", "salted_password"] + } + } + } +``` + +As you can see, if a field name has a `json:""` or `yaml:""` tag set, the `key` argument to `KeyNamer` will have the value of that tag (if a field name has both, the value of `key` will respect [`PreferYAMLSchema`](#preferyamlschema)). + + +### Custom Type Definitions + +Sometimes it can be useful to have custom JSON Marshal and Unmarshal methods in your structs that automatically convert for example a string into an object. + +To override auto-generating an object type for your type, implement the `JSONSchema() *Type` method and whatever is defined will be provided in the schema definitions. + +Take the following simplified example of a `CompactDate` that only includes the Year and Month: + +```go +type CompactDate struct { + Year int + Month int +} + +func (d *CompactDate) UnmarshalJSON(data []byte) error { + if len(data) != 9 { + return errors.New("invalid compact date length") + } + var err error + d.Year, err = strconv.Atoi(string(data[1:5])) + if err != nil { + return err + } + d.Month, err = strconv.Atoi(string(data[7:8])) + if err != nil { + return err + } + return nil +} + +func (d *CompactDate) MarshalJSON() ([]byte, error) { + buf := new(bytes.Buffer) + buf.WriteByte('"') + buf.WriteString(fmt.Sprintf("%d-%02d", d.Year, d.Month)) + buf.WriteByte('"') + return buf.Bytes(), nil +} + +func (CompactDate) JSONSchema() *Type { + return &Type{ + Type: "string", + Title: "Compact Date", + Description: "Short date that only includes year and month", + Pattern: "^[0-9]{4}-[0-1][0-9]$", + } +} +``` + +The resulting schema generated for this struct would look like: + +```json +{ + "$schema": "http://json-schema.org/draft/2020-12/schema", + "$ref": "#/$defs/CompactDate", + "$defs": { + "CompactDate": { + "pattern": "^[0-9]{4}-[0-1][0-9]$", + "type": "string", + "title": "Compact Date", + "description": "Short date that only includes year and month" + } + } +} +``` diff --git a/vendor/github.com/invopop/jsonschema/comment_extractor.go b/vendor/github.com/invopop/jsonschema/comment_extractor.go new file mode 100644 index 0000000000..0088b412a2 --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/comment_extractor.go @@ -0,0 +1,90 @@ +package jsonschema + +import ( + "fmt" + "io/fs" + gopath "path" + "path/filepath" + "strings" + + "go/ast" + "go/doc" + "go/parser" + "go/token" +) + +// ExtractGoComments will read all the go files contained in the provided path, +// including sub-directories, in order to generate a dictionary of comments +// associated with Types and Fields. The results will be added to the `commentsMap` +// provided in the parameters and expected to be used for Schema "description" fields. +// +// The `go/parser` library is used to extract all the comments and unfortunately doesn't +// have a built-in way to determine the fully qualified name of a package. The `base` paremeter, +// the URL used to import that package, is thus required to be able to match reflected types. +// +// When parsing type comments, we use the `go/doc`'s Synopsis method to extract the first phrase +// only. Field comments, which tend to be much shorter, will include everything. +func ExtractGoComments(base, path string, commentMap map[string]string) error { + fset := token.NewFileSet() + dict := make(map[string][]*ast.Package) + err := filepath.Walk(path, func(path string, info fs.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() { + d, err := parser.ParseDir(fset, path, nil, parser.ParseComments) + if err != nil { + return err + } + for _, v := range d { + // paths may have multiple packages, like for tests + k := gopath.Join(base, path) + dict[k] = append(dict[k], v) + } + } + return nil + }) + if err != nil { + return err + } + + for pkg, p := range dict { + for _, f := range p { + gtxt := "" + typ := "" + ast.Inspect(f, func(n ast.Node) bool { + switch x := n.(type) { + case *ast.TypeSpec: + typ = x.Name.String() + if !ast.IsExported(typ) { + typ = "" + } else { + txt := x.Doc.Text() + if txt == "" && gtxt != "" { + txt = gtxt + gtxt = "" + } + txt = doc.Synopsis(txt) + commentMap[fmt.Sprintf("%s.%s", pkg, typ)] = strings.TrimSpace(txt) + } + case *ast.Field: + txt := x.Doc.Text() + if typ != "" && txt != "" { + for _, n := range x.Names { + if ast.IsExported(n.String()) { + k := fmt.Sprintf("%s.%s.%s", pkg, typ, n) + commentMap[k] = strings.TrimSpace(txt) + } + } + } + case *ast.GenDecl: + // remember for the next type + gtxt = x.Doc.Text() + } + return true + }) + } + } + + return nil +} diff --git a/vendor/github.com/invopop/jsonschema/go.mod b/vendor/github.com/invopop/jsonschema/go.mod new file mode 100644 index 0000000000..aefedd725f --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/go.mod @@ -0,0 +1,8 @@ +module github.com/invopop/jsonschema + +go 1.16 + +require ( + github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 + github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709 +) diff --git a/vendor/github.com/invopop/jsonschema/go.sum b/vendor/github.com/invopop/jsonschema/go.sum new file mode 100644 index 0000000000..5e8841f002 --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/go.sum @@ -0,0 +1,9 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709 h1:Ko2LQMrRU+Oy/+EDBwX7eZ2jp3C47eDBB8EIhKTun+I= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/vendor/github.com/invopop/jsonschema/id.go b/vendor/github.com/invopop/jsonschema/id.go new file mode 100644 index 0000000000..73fafb38d0 --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/id.go @@ -0,0 +1,76 @@ +package jsonschema + +import ( + "errors" + "fmt" + "net/url" + "strings" +) + +// ID represents a Schema ID type which should always be a URI. +// See draft-bhutton-json-schema-00 section 8.2.1 +type ID string + +// EmptyID is used to explicitly define an ID with no value. +const EmptyID ID = "" + +// Validate is used to check if the ID looks like a proper schema. +// This is done by parsing the ID as a URL and checking it has all the +// relevant parts. +func (id ID) Validate() error { + u, err := url.Parse(id.String()) + if err != nil { + return fmt.Errorf("invalid URL: %w", err) + } + if u.Hostname() == "" { + return errors.New("missing hostname") + } + if !strings.Contains(u.Hostname(), ".") { + return errors.New("hostname does not look valid") + } + if u.Path == "" { + return errors.New("path is expected") + } + if u.Scheme != "https" && u.Scheme != "http" { + return errors.New("unexpected schema") + } + return nil +} + +// Anchor sets the anchor part of the schema URI. +func (id ID) Anchor(name string) ID { + b := id.Base() + return ID(b.String() + "#" + name) +} + +// Def adds or replaces a definition identifier. +func (id ID) Def(name string) ID { + b := id.Base() + return ID(b.String() + "#/$defs/" + name) +} + +// Add appends the provided path to the id, and removes any +// anchor data that might be there. +func (id ID) Add(path string) ID { + b := id.Base() + if !strings.HasPrefix(path, "/") { + path = "/" + path + } + return ID(b.String() + path) +} + +// Base removes any anchor information from the schema +func (id ID) Base() ID { + s := id.String() + i := strings.LastIndex(s, "#") + if i != -1 { + s = s[0:i] + } + s = strings.TrimRight(s, "/") + return ID(s) +} + +// String provides string version of ID +func (id ID) String() string { + return string(id) +} diff --git a/vendor/github.com/invopop/jsonschema/reflect.go b/vendor/github.com/invopop/jsonschema/reflect.go new file mode 100644 index 0000000000..7c7a3497f3 --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/reflect.go @@ -0,0 +1,1049 @@ +// Package jsonschema uses reflection to generate JSON Schemas from Go types [1]. +// +// If json tags are present on struct fields, they will be used to infer +// property names and if a property is required (omitempty is present). +// +// [1] http://json-schema.org/latest/json-schema-validation.html +package jsonschema + +import ( + "bytes" + "encoding/json" + "net" + "net/url" + "reflect" + "strconv" + "strings" + "time" + + "github.com/iancoleman/orderedmap" +) + +// Version is the JSON Schema version. +var Version = "http://json-schema.org/draft/2020-12/schema" + +// Schema represents a JSON Schema object type. +// RFC draft-bhutton-json-schema-00 section 4.3 +type Schema struct { + // RFC draft-bhutton-json-schema-00 + Version string `json:"$schema,omitempty"` // section 8.1.1 + ID ID `json:"$id,omitempty"` // section 8.2.1 + Anchor string `json:"$anchor,omitempty"` // section 8.2.2 + Ref string `json:"$ref,omitempty"` // section 8.2.3.1 + DynamicRef string `json:"$dynamicRef,omitempty"` // section 8.2.3.2 + Definitions Definitions `json:"$defs,omitempty"` // section 8.2.4 + Comments string `json:"$comment,omitempty"` // section 8.3 + // RFC draft-bhutton-json-schema-00 section 10.2.1 (Sub-schemas with logic) + AllOf []*Schema `json:"allOf,omitempty"` // section 10.2.1.1 + AnyOf []*Schema `json:"anyOf,omitempty"` // section 10.2.1.2 + OneOf []*Schema `json:"oneOf,omitempty"` // section 10.2.1.3 + Not *Schema `json:"not,omitempty"` // section 10.2.1.4 + // RFC draft-bhutton-json-schema-00 section 10.2.2 (Apply sub-schemas conditionally) + If *Schema `json:"if,omitempty"` // section 10.2.2.1 + Then *Schema `json:"then,omitempty"` // section 10.2.2.2 + Else *Schema `json:"else,omitempty"` // section 10.2.2.3 + DependentSchemas map[string]*Schema `json:"dependentSchemas,omitempty"` // section 10.2.2.4 + // RFC draft-bhutton-json-schema-00 section 10.3.1 (arrays) + PrefixItems []*Schema `json:"prefixItems,omitempty"` // section 10.3.1.1 + Items *Schema `json:"items,omitempty"` // section 10.3.1.2 (replaces additionalItems) + Contains *Schema `json:"contains,omitempty"` // section 10.3.1.3 + // RFC draft-bhutton-json-schema-00 section 10.3.2 (sub-schemas) + Properties *orderedmap.OrderedMap `json:"properties,omitempty"` // section 10.3.2.1 + PatternProperties map[string]*Schema `json:"patternProperties,omitempty"` // section 10.3.2.2 + AdditionalProperties *Schema `json:"additionalProperties,omitempty"` // section 10.3.2.3 + PropertyNames *Schema `json:"propertyNames,omitempty"` // section 10.3.2.4 + // RFC draft-bhutton-json-schema-validation-00, section 6 + Type string `json:"type,omitempty"` // section 6.1.1 + Enum []interface{} `json:"enum,omitempty"` // section 6.1.2 + Const interface{} `json:"const,omitempty"` // section 6.1.3 + MultipleOf int `json:"multipleOf,omitempty"` // section 6.2.1 + Maximum int `json:"maximum,omitempty"` // section 6.2.2 + ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` // section 6.2.3 + Minimum int `json:"minimum,omitempty"` // section 6.2.4 + ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` // section 6.2.5 + MaxLength int `json:"maxLength,omitempty"` // section 6.3.1 + MinLength int `json:"minLength,omitempty"` // section 6.3.2 + Pattern string `json:"pattern,omitempty"` // section 6.3.3 + MaxItems int `json:"maxItems,omitempty"` // section 6.4.1 + MinItems int `json:"minItems,omitempty"` // section 6.4.2 + UniqueItems bool `json:"uniqueItems,omitempty"` // section 6.4.3 + MaxContains uint `json:"maxContains,omitempty"` // section 6.4.4 + MinContains uint `json:"minContains,omitempty"` // section 6.4.5 + MaxProperties int `json:"maxProperties,omitempty"` // section 6.5.1 + MinProperties int `json:"minProperties,omitempty"` // section 6.5.2 + Required []string `json:"required,omitempty"` // section 6.5.3 + DependentRequired map[string][]string `json:"dependentRequired,omitempty"` // section 6.5.4 + // RFC draft-bhutton-json-schema-validation-00, section 7 + Format string `json:"format,omitempty"` + // RFC draft-bhutton-json-schema-validation-00, section 8 + ContentEncoding string `json:"contentEncoding,omitempty"` // section 8.3 + ContentMediaType string `json:"contentMediaType,omitempty"` // section 8.4 + ContentSchema *Schema `json:"contentSchema,omitempty"` // section 8.5 + // RFC draft-bhutton-json-schema-validation-00, section 9 + Title string `json:"title,omitempty"` // section 9.1 + Description string `json:"description,omitempty"` // section 9.1 + Default interface{} `json:"default,omitempty"` // section 9.2 + Deprecated bool `json:"deprecated,omitempty"` // section 9.3 + ReadOnly bool `json:"readOnly,omitempty"` // section 9.4 + WriteOnly bool `json:"writeOnly,omitempty"` // section 9.4 + Examples []interface{} `json:"examples,omitempty"` // section 9.5 + + Extras map[string]interface{} `json:"-"` + + // Special boolean representation of the Schema - section 4.3.2 + boolean *bool +} + +var ( + // TrueSchema defines a schema with a true value + TrueSchema = &Schema{boolean: &[]bool{true}[0]} + // FalseSchema defines a schema with a false value + FalseSchema = &Schema{boolean: &[]bool{false}[0]} +) + +// customSchemaImpl is used to detect if the type provides it's own +// custom Schema Type definition to use instead. Very useful for situations +// where there are custom JSON Marshal and Unmarshal methods. +type customSchemaImpl interface { + JSONSchema() *Schema +} + +var customType = reflect.TypeOf((*customSchemaImpl)(nil)).Elem() + +// customSchemaGetFieldDocString +type customSchemaGetFieldDocString interface { + GetFieldDocString(fieldName string) string +} + +type customGetFieldDocString func(fieldName string) string + +var customStructGetFieldDocString = reflect.TypeOf((*customSchemaGetFieldDocString)(nil)).Elem() + +// Reflect reflects to Schema from a value using the default Reflector +func Reflect(v interface{}) *Schema { + return ReflectFromType(reflect.TypeOf(v)) +} + +// ReflectFromType generates root schema using the default Reflector +func ReflectFromType(t reflect.Type) *Schema { + r := &Reflector{} + return r.ReflectFromType(t) +} + +// A Reflector reflects values into a Schema. +type Reflector struct { + // BaseSchemaID defines the URI that will be used as a base to determine Schema + // IDs for models. For example, a base Schema ID of `https://invopop.com/schemas` + // when defined with a struct called `User{}`, will result in a schema with an + // ID set to `https://invopop.com/schemas/user`. + // + // If no `BaseSchemaID` is provided, we'll take the type's complete package path + // and use that as a base instead. Set `Anonymous` to try if you do not want to + // include a schema ID. + BaseSchemaID ID + + // Anonymous when true will hide the auto-generated Schema ID and provide what is + // known as an "anonymous schema". As a rule, this is not recommended. + Anonymous bool + + // AssignAnchor when true will use the original struct's name as an anchor inside + // every definition, including the root schema. These can be useful for having a + // reference to the original struct's name in CamelCase instead of the snake-case used + // by default for URI compatibility. + // + // Anchors do not appear to be widely used out in the wild, so at this time the + // anchors themselves will not be used inside generated schema. + AssignAnchor bool + + // AllowAdditionalProperties will cause the Reflector to generate a schema + // without additionalProperties set to 'false' for all struct types. This means + // the presence of additional keys in JSON objects will not cause validation + // to fail. Note said additional keys will simply be dropped when the + // validated JSON is unmarshaled. + AllowAdditionalProperties bool + + // RequiredFromJSONSchemaTags will cause the Reflector to generate a schema + // that requires any key tagged with `jsonschema:required`, overriding the + // default of requiring any key *not* tagged with `json:,omitempty`. + RequiredFromJSONSchemaTags bool + + // YAMLEmbeddedStructs will cause the Reflector to generate a schema that does + // not inline embedded structs. This should be enabled if the JSON schemas are + // used with yaml.Marshal/Unmarshal. + YAMLEmbeddedStructs bool + + // Prefer yaml: tags over json: tags to generate the schema even if json: tags + // are present + PreferYAMLSchema bool + + // Do not reference definitions. This will remove the top-level $defs map and + // instead cause the entire structure of types to be output in one tree. The + // list of type definitions (`$defs`) will not be included. + DoNotReference bool + + // ExpandedStruct when true will include the reflected type's definition in the + // root as opposed to a definition with a reference. Using a reference in the root + // is useful as it allows us to maintain the struct's original name, but it is + // not common practice. + ExpandedStruct bool + + // IgnoredTypes defines a slice of types that should be ignored in the schema, + // switching to just allowing additional properties instead. + IgnoredTypes []interface{} + + // Lookup allows a function to be defined that will provide a custom mapping of + // types to Schema IDs. This allows existing schema documents to be referenced + // by their ID instead of being embedded into the current schema definitions. + // Reflected types will never be pointers, only underlying elements. + Lookup func(reflect.Type) ID + + // Mapper is a function that can be used to map custom Go types to jsonschema schemas. + Mapper func(reflect.Type) *Schema + + // Namer allows customizing of type names. The default is to use the type's name + // provided by the reflect package. + Namer func(reflect.Type) string + + // KeyNamer allows customizing of key names. + // The default is to use the key's name as is, or the json (or yaml) tag if present. + // If a json or yaml tag is present, KeyNamer will receive the tag's name as an argument, not the original key name. + KeyNamer func(string) string + + // AdditionalFields allows adding structfields for a given type + AdditionalFields func(reflect.Type) []reflect.StructField + + // CommentMap is a dictionary of fully qualified go types and fields to comment + // strings that will be used if a description has not already been provided in + // the tags. Types and fields are added to the package path using "." as a + // separator. + // + // Type descriptions should be defined like: + // + // map[string]string{"github.com/invopop/jsonschema.Reflector": "A Reflector reflects values into a Schema."} + // + // And Fields defined as: + // + // map[string]string{"github.com/invopop/jsonschema.Reflector.DoNotReference": "Do not reference definitions."} + // + // See also: AddGoComments + CommentMap map[string]string +} + +// Reflect reflects to Schema from a value. +func (r *Reflector) Reflect(v interface{}) *Schema { + return r.ReflectFromType(reflect.TypeOf(v)) +} + +// ReflectFromType generates root schema +func (r *Reflector) ReflectFromType(t reflect.Type) *Schema { + if t.Kind() == reflect.Ptr { + t = t.Elem() // re-assign from pointer + } + + name := r.typeName(t) + + s := new(Schema) + definitions := Definitions{} + s.Definitions = definitions + bs := r.reflectTypeToSchemaWithID(definitions, t) + if r.ExpandedStruct { + *s = *definitions[name] + delete(definitions, name) + } else { + *s = *bs + } + + // Attempt to set the schema ID + if !r.Anonymous && s.ID == EmptyID { + baseSchemaID := r.BaseSchemaID + if baseSchemaID == EmptyID { + id := ID("https://" + t.PkgPath()) + if err := id.Validate(); err == nil { + // it's okay to silently ignore URL errors + baseSchemaID = id + } + } + if baseSchemaID != EmptyID { + s.ID = baseSchemaID.Add(ToSnakeCase(name)) + } + } + + s.Version = Version + if !r.DoNotReference { + s.Definitions = definitions + } + + return s +} + +// Definitions hold schema definitions. +// http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.26 +// RFC draft-wright-json-schema-validation-00, section 5.26 +type Definitions map[string]*Schema + +// Available Go defined types for JSON Schema Validation. +// RFC draft-wright-json-schema-validation-00, section 7.3 +var ( + timeType = reflect.TypeOf(time.Time{}) // date-time RFC section 7.3.1 + ipType = reflect.TypeOf(net.IP{}) // ipv4 and ipv6 RFC section 7.3.4, 7.3.5 + uriType = reflect.TypeOf(url.URL{}) // uri RFC section 7.3.6 +) + +// Byte slices will be encoded as base64 +var byteSliceType = reflect.TypeOf([]byte(nil)) + +// Except for json.RawMessage +var rawMessageType = reflect.TypeOf(json.RawMessage{}) + +// Go code generated from protobuf enum types should fulfil this interface. +type protoEnum interface { + EnumDescriptor() ([]byte, []int) +} + +var protoEnumType = reflect.TypeOf((*protoEnum)(nil)).Elem() + +// SetBaseSchemaID is a helper use to be able to set the reflectors base +// schema ID from a string as opposed to then ID instance. +func (r *Reflector) SetBaseSchemaID(id string) { + r.BaseSchemaID = ID(id) +} + +func (r *Reflector) refOrReflectTypeToSchema(definitions Definitions, t reflect.Type) *Schema { + id := r.lookupID(t) + if id != EmptyID { + return &Schema{ + Ref: id.String(), + } + } + + // Already added to definitions? + if _, ok := definitions[r.typeName(t)]; ok && !r.DoNotReference { + return r.refDefinition(definitions, t) + } + + return r.reflectTypeToSchemaWithID(definitions, t) +} + +func (r *Reflector) reflectTypeToSchemaWithID(defs Definitions, t reflect.Type) *Schema { + s := r.reflectTypeToSchema(defs, t) + if s != nil { + if r.Lookup != nil { + id := r.Lookup(t) + if id != EmptyID { + s.ID = id + } + } + } + return s +} + +func (r *Reflector) reflectTypeToSchema(definitions Definitions, t reflect.Type) *Schema { + if r.Mapper != nil { + if t := r.Mapper(t); t != nil { + return t + } + } + + if rt := r.reflectCustomSchema(definitions, t); rt != nil { + return rt + } + + // jsonpb will marshal protobuf enum options as either strings or integers. + // It will unmarshal either. + if t.Implements(protoEnumType) { + return &Schema{OneOf: []*Schema{ + {Type: "string"}, + {Type: "integer"}, + }} + } + + // Defined format types for JSON Schema Validation + // RFC draft-wright-json-schema-validation-00, section 7.3 + // TODO email RFC section 7.3.2, hostname RFC section 7.3.3, uriref RFC section 7.3.7 + if t == ipType { + // TODO differentiate ipv4 and ipv6 RFC section 7.3.4, 7.3.5 + return &Schema{Type: "string", Format: "ipv4"} // ipv4 RFC section 7.3.4 + } + + switch t.Kind() { + case reflect.Struct: + switch t { + case timeType: // date-time RFC section 7.3.1 + return &Schema{Type: "string", Format: "date-time"} + case uriType: // uri RFC section 7.3.6 + return &Schema{Type: "string", Format: "uri"} + default: + return r.reflectOrRefStruct(definitions, t) + } + + case reflect.Map: + switch t.Key().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + rt := &Schema{ + Type: "object", + PatternProperties: map[string]*Schema{ + "^[0-9]+$": r.refOrReflectTypeToSchema(definitions, t.Elem()), + }, + AdditionalProperties: FalseSchema, + } + return rt + } + + var rt *Schema + if t.Elem().Kind() == reflect.Interface { + rt = &Schema{ + Type: "object", + } + } else { + rt = &Schema{ + Type: "object", + PatternProperties: map[string]*Schema{ + ".*": r.refOrReflectTypeToSchema(definitions, t.Elem()), + }, + } + } + return rt + + case reflect.Slice, reflect.Array: + returnType := &Schema{} + if t == rawMessageType { + return &Schema{} + } + if t.Kind() == reflect.Array { + returnType.MinItems = t.Len() + returnType.MaxItems = returnType.MinItems + } + if t.Kind() == reflect.Slice && t.Elem() == byteSliceType.Elem() { + returnType.Type = "string" + // NOTE: ContentMediaType is not set here + returnType.ContentEncoding = "base64" + return returnType + } + returnType.Type = "array" + returnType.Items = r.refOrReflectTypeToSchema(definitions, t.Elem()) + return returnType + + case reflect.Interface: + return &Schema{} // empty + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return &Schema{Type: "integer"} + + case reflect.Float32, reflect.Float64: + return &Schema{Type: "number"} + + case reflect.Bool: + return &Schema{Type: "boolean"} + + case reflect.String: + return &Schema{Type: "string"} + + case reflect.Ptr: + return r.refOrReflectTypeToSchema(definitions, t.Elem()) + } + panic("unsupported type " + t.String()) +} + +func (r *Reflector) reflectCustomSchema(definitions Definitions, t reflect.Type) *Schema { + if t.Kind() == reflect.Ptr { + return r.reflectCustomSchema(definitions, t.Elem()) + } + + if t.Implements(customType) { + v := reflect.New(t) + o := v.Interface().(customSchemaImpl) + st := o.JSONSchema() + r.addDefinition(definitions, t, st) + if r.DoNotReference { + return st + } else { + return r.refDefinition(definitions, t) + } + } + + return nil +} + +func (r *Reflector) reflectOrRefStruct(definitions Definitions, t reflect.Type) *Schema { + st := new(Schema) + r.addDefinition(definitions, t, st) // makes sure we have a re-usable reference already + r.reflectStruct(definitions, t, st) + if r.DoNotReference { + return st + } else { + return r.refDefinition(definitions, t) + } +} + +// Reflects a struct to a JSON Schema type. +func (r *Reflector) reflectStruct(definitions Definitions, t reflect.Type, s *Schema) { + s.Type = "object" + s.Properties = orderedmap.New() + s.Description = r.lookupComment(t, "") + if r.AssignAnchor { + s.Anchor = t.Name() + } + if !r.AllowAdditionalProperties { + s.AdditionalProperties = FalseSchema + } + + ignored := false + for _, it := range r.IgnoredTypes { + if reflect.TypeOf(it) == t { + ignored = true + break + } + } + if !ignored { + r.reflectStructFields(s, definitions, t) + } +} + +func (r *Reflector) reflectStructFields(st *Schema, definitions Definitions, t reflect.Type) { + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + if t.Kind() != reflect.Struct { + return + } + + var getFieldDocString customGetFieldDocString + if t.Implements(customStructGetFieldDocString) { + v := reflect.New(t) + o := v.Interface().(customSchemaGetFieldDocString) + getFieldDocString = o.GetFieldDocString + } + + handleField := func(f reflect.StructField) { + name, shouldEmbed, required, nullable := r.reflectFieldName(f) + // if anonymous and exported type should be processed recursively + // current type should inherit properties of anonymous one + if name == "" { + if shouldEmbed { + r.reflectStructFields(st, definitions, f.Type) + } + return + } + + property := r.refOrReflectTypeToSchema(definitions, f.Type) + property.structKeywordsFromTags(f, st, name) + if property.Description == "" { + property.Description = r.lookupComment(t, f.Name) + } + if getFieldDocString != nil { + property.Description = getFieldDocString(f.Name) + } + + if nullable { + property = &Schema{ + OneOf: []*Schema{ + property, + { + Type: "null", + }, + }, + } + } + + st.Properties.Set(name, property) + if required { + st.Required = append(st.Required, name) + } + } + + for i := 0; i < t.NumField(); i++ { + f := t.Field(i) + handleField(f) + } + if r.AdditionalFields != nil { + if af := r.AdditionalFields(t); af != nil { + for _, sf := range af { + handleField(sf) + } + } + } +} + +func (r *Reflector) lookupComment(t reflect.Type, name string) string { + if r.CommentMap == nil { + return "" + } + + n := fullyQualifiedTypeName(t) + if name != "" { + n = n + "." + name + } + + return r.CommentMap[n] +} + +// addDefinition will append the provided schema. If needed, an ID and anchor will also be added. +func (r *Reflector) addDefinition(definitions Definitions, t reflect.Type, s *Schema) { + name := r.typeName(t) + definitions[name] = s +} + +// refDefinition will provide a schema with a reference to an existing definition. +func (r *Reflector) refDefinition(_ Definitions, t reflect.Type) *Schema { + name := r.typeName(t) + return &Schema{ + Ref: "#/$defs/" + name, + } +} + +func (r *Reflector) lookupID(t reflect.Type) ID { + if r.Lookup != nil { + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + return r.Lookup(t) + + } + return EmptyID +} + +func (t *Schema) structKeywordsFromTags(f reflect.StructField, parent *Schema, propertyName string) { + t.Description = f.Tag.Get("jsonschema_description") + + tags := splitOnUnescapedCommas(f.Tag.Get("jsonschema")) + t.genericKeywords(tags, parent, propertyName) + + switch t.Type { + case "string": + t.stringKeywords(tags) + case "number": + t.numbericKeywords(tags) + case "integer": + t.numbericKeywords(tags) + case "array": + t.arrayKeywords(tags) + } + extras := strings.Split(f.Tag.Get("jsonschema_extras"), ",") + t.extraKeywords(extras) +} + +// read struct tags for generic keyworks +func (t *Schema) genericKeywords(tags []string, parent *Schema, propertyName string) { + for _, tag := range tags { + nameValue := strings.Split(tag, "=") + if len(nameValue) == 2 { + name, val := nameValue[0], nameValue[1] + switch name { + case "title": + t.Title = val + case "description": + t.Description = val + case "type": + t.Type = val + case "anchor": + t.Anchor = val + case "oneof_required": + var typeFound *Schema + for i := range parent.OneOf { + if parent.OneOf[i].Title == nameValue[1] { + typeFound = parent.OneOf[i] + } + } + if typeFound == nil { + typeFound = &Schema{ + Title: nameValue[1], + Required: []string{}, + } + parent.OneOf = append(parent.OneOf, typeFound) + } + typeFound.Required = append(typeFound.Required, propertyName) + case "oneof_type": + if t.OneOf == nil { + t.OneOf = make([]*Schema, 0, 1) + } + t.Type = "" + types := strings.Split(nameValue[1], ";") + for _, ty := range types { + t.OneOf = append(t.OneOf, &Schema{ + Type: ty, + }) + } + case "enum": + switch t.Type { + case "string": + t.Enum = append(t.Enum, val) + case "integer": + i, _ := strconv.Atoi(val) + t.Enum = append(t.Enum, i) + case "number": + f, _ := strconv.ParseFloat(val, 64) + t.Enum = append(t.Enum, f) + } + } + } + } +} + +// read struct tags for string type keyworks +func (t *Schema) stringKeywords(tags []string) { + for _, tag := range tags { + nameValue := strings.Split(tag, "=") + if len(nameValue) == 2 { + name, val := nameValue[0], nameValue[1] + switch name { + case "minLength": + i, _ := strconv.Atoi(val) + t.MinLength = i + case "maxLength": + i, _ := strconv.Atoi(val) + t.MaxLength = i + case "pattern": + t.Pattern = val + case "format": + switch val { + case "date-time", "email", "hostname", "ipv4", "ipv6", "uri": + t.Format = val + break + } + case "readOnly": + i, _ := strconv.ParseBool(val) + t.ReadOnly = i + case "writeOnly": + i, _ := strconv.ParseBool(val) + t.WriteOnly = i + case "default": + t.Default = val + case "example": + t.Examples = append(t.Examples, val) + } + } + } +} + +// read struct tags for numberic type keyworks +func (t *Schema) numbericKeywords(tags []string) { + for _, tag := range tags { + nameValue := strings.Split(tag, "=") + if len(nameValue) == 2 { + name, val := nameValue[0], nameValue[1] + switch name { + case "multipleOf": + i, _ := strconv.Atoi(val) + t.MultipleOf = i + case "minimum": + i, _ := strconv.Atoi(val) + t.Minimum = i + case "maximum": + i, _ := strconv.Atoi(val) + t.Maximum = i + case "exclusiveMaximum": + b, _ := strconv.ParseBool(val) + t.ExclusiveMaximum = b + case "exclusiveMinimum": + b, _ := strconv.ParseBool(val) + t.ExclusiveMinimum = b + case "default": + i, _ := strconv.Atoi(val) + t.Default = i + case "example": + if i, err := strconv.Atoi(val); err == nil { + t.Examples = append(t.Examples, i) + } + } + } + } +} + +// read struct tags for object type keyworks +// func (t *Type) objectKeywords(tags []string) { +// for _, tag := range tags{ +// nameValue := strings.Split(tag, "=") +// name, val := nameValue[0], nameValue[1] +// switch name{ +// case "dependencies": +// t.Dependencies = val +// break; +// case "patternProperties": +// t.PatternProperties = val +// break; +// } +// } +// } + +// read struct tags for array type keyworks +func (t *Schema) arrayKeywords(tags []string) { + var defaultValues []interface{} + for _, tag := range tags { + nameValue := strings.Split(tag, "=") + if len(nameValue) == 2 { + name, val := nameValue[0], nameValue[1] + switch name { + case "minItems": + i, _ := strconv.Atoi(val) + t.MinItems = i + case "maxItems": + i, _ := strconv.Atoi(val) + t.MaxItems = i + case "uniqueItems": + t.UniqueItems = true + case "default": + defaultValues = append(defaultValues, val) + case "enum": + switch t.Items.Type { + case "string": + t.Items.Enum = append(t.Items.Enum, val) + case "integer": + i, _ := strconv.Atoi(val) + t.Items.Enum = append(t.Items.Enum, i) + case "number": + f, _ := strconv.ParseFloat(val, 64) + t.Items.Enum = append(t.Items.Enum, f) + } + } + } + } + if len(defaultValues) > 0 { + t.Default = defaultValues + } +} + +func (t *Schema) extraKeywords(tags []string) { + for _, tag := range tags { + nameValue := strings.Split(tag, "=") + if len(nameValue) == 2 { + t.setExtra(nameValue[0], nameValue[1]) + } + } +} + +func (t *Schema) setExtra(key, val string) { + if t.Extras == nil { + t.Extras = map[string]interface{}{} + } + if existingVal, ok := t.Extras[key]; ok { + switch existingVal := existingVal.(type) { + case string: + t.Extras[key] = []string{existingVal, val} + case []string: + t.Extras[key] = append(existingVal, val) + case int: + t.Extras[key], _ = strconv.Atoi(val) + } + } else { + switch key { + case "minimum": + t.Extras[key], _ = strconv.Atoi(val) + default: + t.Extras[key] = val + } + } +} + +func requiredFromJSONTags(tags []string) bool { + if ignoredByJSONTags(tags) { + return false + } + + for _, tag := range tags[1:] { + if tag == "omitempty" { + return false + } + } + return true +} + +func requiredFromJSONSchemaTags(tags []string) bool { + if ignoredByJSONSchemaTags(tags) { + return false + } + for _, tag := range tags { + if tag == "required" { + return true + } + } + return false +} + +func nullableFromJSONSchemaTags(tags []string) bool { + if ignoredByJSONSchemaTags(tags) { + return false + } + for _, tag := range tags { + if tag == "nullable" { + return true + } + } + return false +} + +func inlineYAMLTags(tags []string) bool { + for _, tag := range tags { + if tag == "inline" { + return true + } + } + return false +} + +func ignoredByJSONTags(tags []string) bool { + return tags[0] == "-" +} + +func ignoredByJSONSchemaTags(tags []string) bool { + return tags[0] == "-" +} + +func (r *Reflector) reflectFieldName(f reflect.StructField) (string, bool, bool, bool) { + jsonTags, exist := f.Tag.Lookup("json") + yamlTags, yamlExist := f.Tag.Lookup("yaml") + if !exist || r.PreferYAMLSchema { + jsonTags = yamlTags + exist = yamlExist + } + + jsonTagsList := strings.Split(jsonTags, ",") + yamlTagsList := strings.Split(yamlTags, ",") + + if ignoredByJSONTags(jsonTagsList) { + return "", false, false, false + } + + jsonSchemaTags := strings.Split(f.Tag.Get("jsonschema"), ",") + if ignoredByJSONSchemaTags(jsonSchemaTags) { + return "", false, false, false + } + + name := f.Name + required := requiredFromJSONTags(jsonTagsList) + + if r.RequiredFromJSONSchemaTags { + required = requiredFromJSONSchemaTags(jsonSchemaTags) + } + + nullable := nullableFromJSONSchemaTags(jsonSchemaTags) + + if jsonTagsList[0] != "" { + name = jsonTagsList[0] + } + + // field not anonymous and not export has no export name + if !f.Anonymous && f.PkgPath != "" { + name = "" + } + + embed := false + + // field anonymous but without json tag should be inherited by current type + if f.Anonymous && !exist { + if !r.YAMLEmbeddedStructs { + name = "" + embed = true + } else { + name = strings.ToLower(name) + } + } + + if yamlExist && inlineYAMLTags(yamlTagsList) { + name = "" + embed = true + } + + if r.KeyNamer != nil { + name = r.KeyNamer(name) + } + + return name, embed, required, nullable +} + +// UnmarshalJSON is used to parse a schema object or boolean. +func (t *Schema) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, []byte("true")) { + *t = *TrueSchema + return nil + } else if bytes.Equal(data, []byte("false")) { + *t = *FalseSchema + return nil + } + type Schema_ Schema + aux := &struct { + *Schema_ + }{ + Schema_: (*Schema_)(t), + } + return json.Unmarshal(data, aux) +} + +func (t *Schema) MarshalJSON() ([]byte, error) { + if t.boolean != nil { + if *t.boolean { + return []byte("true"), nil + } else { + return []byte("false"), nil + } + } + if reflect.DeepEqual(&Schema{}, t) { + // Don't bother returning empty schemas + return []byte("true"), nil + } + type Schema_ Schema + b, err := json.Marshal((*Schema_)(t)) + if err != nil { + return nil, err + } + if t.Extras == nil || len(t.Extras) == 0 { + return b, nil + } + m, err := json.Marshal(t.Extras) + if err != nil { + return nil, err + } + if len(b) == 2 { + return m, nil + } + b[len(b)-1] = ',' + return append(b, m[1:]...), nil +} + +func (r *Reflector) typeName(t reflect.Type) string { + if r.Namer != nil { + if name := r.Namer(t); name != "" { + return name + } + } + return t.Name() +} + +// Split on commas that are not preceded by `\`. +// This way, we prevent splitting regexes +func splitOnUnescapedCommas(tagString string) []string { + ret := make([]string, 0) + separated := strings.Split(tagString, ",") + ret = append(ret, separated[0]) + i := 0 + for _, nextTag := range separated[1:] { + if len(ret[i]) == 0 { + ret = append(ret, nextTag) + i++ + continue + } + + if ret[i][len(ret[i])-1] == '\\' { + ret[i] = ret[i][:len(ret[i])-1] + "," + nextTag + } else { + ret = append(ret, nextTag) + i++ + } + } + + return ret +} + +func fullyQualifiedTypeName(t reflect.Type) string { + return t.PkgPath() + "." + t.Name() +} + +// AddGoComments will update the reflectors comment map with all the comments +// found in the provided source directories. See the #ExtractGoComments method +// for more details. +func (r *Reflector) AddGoComments(base, path string) error { + if r.CommentMap == nil { + r.CommentMap = make(map[string]string) + } + return ExtractGoComments(base, path, r.CommentMap) +} diff --git a/vendor/github.com/invopop/jsonschema/utils.go b/vendor/github.com/invopop/jsonschema/utils.go new file mode 100644 index 0000000000..9813b11c2f --- /dev/null +++ b/vendor/github.com/invopop/jsonschema/utils.go @@ -0,0 +1,18 @@ +package jsonschema + +import ( + "regexp" + "strings" +) + +var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") +var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])") + +// ToSnakeCase converts the provided string into snake case using dashes. +// This is useful for Schema IDs and definitions to be coherent with +// common JSON Schema examples. +func ToSnakeCase(str string) string { + snake := matchFirstCap.ReplaceAllString(str, "${1}-${2}") + snake = matchAllCap.ReplaceAllString(snake, "${1}-${2}") + return strings.ToLower(snake) +} diff --git a/vendor/github.com/pkg/sftp/.gitignore b/vendor/github.com/pkg/sftp/.gitignore index e1ec837c3f..caf2dca22e 100644 --- a/vendor/github.com/pkg/sftp/.gitignore +++ b/vendor/github.com/pkg/sftp/.gitignore @@ -5,3 +5,6 @@ server_standalone/server_standalone examples/*/id_rsa examples/*/id_rsa.pub + +memprofile.out +memprofile.svg diff --git a/vendor/github.com/pkg/sftp/.travis.yml b/vendor/github.com/pkg/sftp/.travis.yml deleted file mode 100644 index 3c1e05e5fc..0000000000 --- a/vendor/github.com/pkg/sftp/.travis.yml +++ /dev/null @@ -1,40 +0,0 @@ -language: go -go_import_path: github.com/pkg/sftp - -# current and previous stable releases, plus tip -# remember to exclude previous and tip for macs below -go: - - 1.11.x - - 1.12.x - - tip - -os: - - linux - - osx - -env: - global: - - GO111MODULE=on - -matrix: - exclude: - - os: osx - go: 1.10.x - - os: osx - go: tip - -addons: - ssh_known_hosts: - - bitbucket.org - -install: - - go get -t -v ./... - - ssh-keygen -t rsa -q -P "" -f $HOME/.ssh/id_rsa - -script: - - go test -integration -v ./... - - go test -testserver -v ./... - - go test -integration -testserver -v ./... - - go test -race -integration -v ./... - - go test -race -testserver -v ./... - - go test -race -integration -testserver -v ./... diff --git a/vendor/github.com/pkg/sftp/Makefile b/vendor/github.com/pkg/sftp/Makefile new file mode 100644 index 0000000000..4d3a00799d --- /dev/null +++ b/vendor/github.com/pkg/sftp/Makefile @@ -0,0 +1,27 @@ +.PHONY: integration integration_w_race benchmark + +integration: + go test -integration -v ./... + go test -testserver -v ./... + go test -integration -testserver -v ./... + go test -integration -allocator -v ./... + go test -testserver -allocator -v ./... + go test -integration -testserver -allocator -v ./... + +integration_w_race: + go test -race -integration -v ./... + go test -race -testserver -v ./... + go test -race -integration -testserver -v ./... + go test -race -integration -allocator -v ./... + go test -race -testserver -allocator -v ./... + go test -race -integration -allocator -testserver -v ./... + +COUNT ?= 1 +BENCHMARK_PATTERN ?= "." + +benchmark: + go test -integration -run=NONE -bench=$(BENCHMARK_PATTERN) -benchmem -count=$(COUNT) + +benchmark_w_memprofile: + go test -integration -run=NONE -bench=$(BENCHMARK_PATTERN) -benchmem -count=$(COUNT) -memprofile memprofile.out + go tool pprof -svg -output=memprofile.svg memprofile.out diff --git a/vendor/github.com/pkg/sftp/README.md b/vendor/github.com/pkg/sftp/README.md index 1fb700c41a..5e78cd3968 100644 --- a/vendor/github.com/pkg/sftp/README.md +++ b/vendor/github.com/pkg/sftp/README.md @@ -5,25 +5,25 @@ The `sftp` package provides support for file system operations on remote ssh servers using the SFTP subsystem. It also implements an SFTP server for serving files from the filesystem. -[![UNIX Build Status](https://travis-ci.org/pkg/sftp.svg?branch=master)](https://travis-ci.org/pkg/sftp) [![GoDoc](http://godoc.org/github.com/pkg/sftp?status.svg)](http://godoc.org/github.com/pkg/sftp) +![CI Status](https://github.com/pkg/sftp/workflows/CI/badge.svg?branch=master&event=push) [![Go Reference](https://pkg.go.dev/badge/github.com/pkg/sftp.svg)](https://pkg.go.dev/github.com/pkg/sftp) usage and examples ------------------ -See [godoc.org/github.com/pkg/sftp](http://godoc.org/github.com/pkg/sftp) for +See [https://pkg.go.dev/github.com/pkg/sftp](https://pkg.go.dev/github.com/pkg/sftp) for examples and usage. The basic operation of the package mirrors the facilities of the [os](http://golang.org/pkg/os) package. The Walker interface for directory traversal is heavily inspired by Keith -Rarick's [fs](http://godoc.org/github.com/kr/fs) package. +Rarick's [fs](https://pkg.go.dev/github.com/kr/fs) package. roadmap ------- - * There is way too much duplication in the Client methods. If there was an - unmarshal(interface{}) method this would reduce a heap of the duplication. +* There is way too much duplication in the Client methods. If there was an + unmarshal(interface{}) method this would reduce a heap of the duplication. contributing ------------ diff --git a/vendor/github.com/pkg/sftp/allocator.go b/vendor/github.com/pkg/sftp/allocator.go new file mode 100644 index 0000000000..3e67e54335 --- /dev/null +++ b/vendor/github.com/pkg/sftp/allocator.go @@ -0,0 +1,96 @@ +package sftp + +import ( + "sync" +) + +type allocator struct { + sync.Mutex + available [][]byte + // map key is the request order + used map[uint32][][]byte +} + +func newAllocator() *allocator { + return &allocator{ + // micro optimization: initialize available pages with an initial capacity + available: make([][]byte, 0, SftpServerWorkerCount*2), + used: make(map[uint32][][]byte), + } +} + +// GetPage returns a previously allocated and unused []byte or create a new one. +// The slice have a fixed size = maxMsgLength, this value is suitable for both +// receiving new packets and reading the files to serve +func (a *allocator) GetPage(requestOrderID uint32) []byte { + a.Lock() + defer a.Unlock() + + var result []byte + + // get an available page and remove it from the available ones. + if len(a.available) > 0 { + truncLength := len(a.available) - 1 + result = a.available[truncLength] + + a.available[truncLength] = nil // clear out the internal pointer + a.available = a.available[:truncLength] // truncate the slice + } + + // no preallocated slice found, just allocate a new one + if result == nil { + result = make([]byte, maxMsgLength) + } + + // put result in used pages + a.used[requestOrderID] = append(a.used[requestOrderID], result) + + return result +} + +// ReleasePages marks unused all pages in use for the given requestID +func (a *allocator) ReleasePages(requestOrderID uint32) { + a.Lock() + defer a.Unlock() + + if used := a.used[requestOrderID]; len(used) > 0 { + a.available = append(a.available, used...) + } + delete(a.used, requestOrderID) +} + +// Free removes all the used and available pages. +// Call this method when the allocator is not needed anymore +func (a *allocator) Free() { + a.Lock() + defer a.Unlock() + + a.available = nil + a.used = make(map[uint32][][]byte) +} + +func (a *allocator) countUsedPages() int { + a.Lock() + defer a.Unlock() + + num := 0 + for _, p := range a.used { + num += len(p) + } + return num +} + +func (a *allocator) countAvailablePages() int { + a.Lock() + defer a.Unlock() + + return len(a.available) +} + +func (a *allocator) isRequestOrderIDUsed(requestOrderID uint32) bool { + a.Lock() + defer a.Unlock() + + _, ok := a.used[requestOrderID] + return ok +} diff --git a/vendor/github.com/pkg/sftp/attrs.go b/vendor/github.com/pkg/sftp/attrs.go index 335bcc284d..7020d3a6d0 100644 --- a/vendor/github.com/pkg/sftp/attrs.go +++ b/vendor/github.com/pkg/sftp/attrs.go @@ -5,16 +5,18 @@ package sftp import ( "os" - "syscall" "time" ) const ( - ssh_FILEXFER_ATTR_SIZE = 0x00000001 - ssh_FILEXFER_ATTR_UIDGID = 0x00000002 - ssh_FILEXFER_ATTR_PERMISSIONS = 0x00000004 - ssh_FILEXFER_ATTR_ACMODTIME = 0x00000008 - ssh_FILEXFER_ATTR_EXTENDED = 0x80000000 + sshFileXferAttrSize = 0x00000001 + sshFileXferAttrUIDGID = 0x00000002 + sshFileXferAttrPermissions = 0x00000004 + sshFileXferAttrACmodTime = 0x00000008 + sshFileXferAttrExtended = 0x80000000 + + sshFileXferAttrAll = sshFileXferAttrSize | sshFileXferAttrUIDGID | sshFileXferAttrPermissions | + sshFileXferAttrACmodTime | sshFileXferAttrExtended ) // fileInfo is an artificial type designed to satisfy os.FileInfo. @@ -77,9 +79,9 @@ func fileInfoFromStat(st *FileStat, name string) os.FileInfo { func fileStatFromInfo(fi os.FileInfo) (uint32, FileStat) { mtime := fi.ModTime().Unix() atime := mtime - var flags uint32 = ssh_FILEXFER_ATTR_SIZE | - ssh_FILEXFER_ATTR_PERMISSIONS | - ssh_FILEXFER_ATTR_ACMODTIME + var flags uint32 = sshFileXferAttrSize | + sshFileXferAttrPermissions | + sshFileXferAttrACmodTime fileStat := FileStat{ Size: uint64(fi.Size()), @@ -101,31 +103,31 @@ func unmarshalAttrs(b []byte) (*FileStat, []byte) { func getFileStat(flags uint32, b []byte) (*FileStat, []byte) { var fs FileStat - if flags&ssh_FILEXFER_ATTR_SIZE == ssh_FILEXFER_ATTR_SIZE { - fs.Size, b = unmarshalUint64(b) + if flags&sshFileXferAttrSize == sshFileXferAttrSize { + fs.Size, b, _ = unmarshalUint64Safe(b) } - if flags&ssh_FILEXFER_ATTR_UIDGID == ssh_FILEXFER_ATTR_UIDGID { - fs.UID, b = unmarshalUint32(b) + if flags&sshFileXferAttrUIDGID == sshFileXferAttrUIDGID { + fs.UID, b, _ = unmarshalUint32Safe(b) } - if flags&ssh_FILEXFER_ATTR_UIDGID == ssh_FILEXFER_ATTR_UIDGID { - fs.GID, b = unmarshalUint32(b) + if flags&sshFileXferAttrUIDGID == sshFileXferAttrUIDGID { + fs.GID, b, _ = unmarshalUint32Safe(b) } - if flags&ssh_FILEXFER_ATTR_PERMISSIONS == ssh_FILEXFER_ATTR_PERMISSIONS { - fs.Mode, b = unmarshalUint32(b) + if flags&sshFileXferAttrPermissions == sshFileXferAttrPermissions { + fs.Mode, b, _ = unmarshalUint32Safe(b) } - if flags&ssh_FILEXFER_ATTR_ACMODTIME == ssh_FILEXFER_ATTR_ACMODTIME { - fs.Atime, b = unmarshalUint32(b) - fs.Mtime, b = unmarshalUint32(b) + if flags&sshFileXferAttrACmodTime == sshFileXferAttrACmodTime { + fs.Atime, b, _ = unmarshalUint32Safe(b) + fs.Mtime, b, _ = unmarshalUint32Safe(b) } - if flags&ssh_FILEXFER_ATTR_EXTENDED == ssh_FILEXFER_ATTR_EXTENDED { + if flags&sshFileXferAttrExtended == sshFileXferAttrExtended { var count uint32 - count, b = unmarshalUint32(b) + count, b, _ = unmarshalUint32Safe(b) ext := make([]StatExtended, count) for i := uint32(0); i < count; i++ { var typ string var data string - typ, b = unmarshalString(b) - data, b = unmarshalString(b) + typ, b, _ = unmarshalStringSafe(b) + data, b, _ = unmarshalStringSafe(b) ext[i] = StatExtended{typ, data} } fs.Extended = ext @@ -152,92 +154,20 @@ func marshalFileInfo(b []byte, fi os.FileInfo) []byte { flags, fileStat := fileStatFromInfo(fi) b = marshalUint32(b, flags) - if flags&ssh_FILEXFER_ATTR_SIZE != 0 { + if flags&sshFileXferAttrSize != 0 { b = marshalUint64(b, fileStat.Size) } - if flags&ssh_FILEXFER_ATTR_UIDGID != 0 { + if flags&sshFileXferAttrUIDGID != 0 { b = marshalUint32(b, fileStat.UID) b = marshalUint32(b, fileStat.GID) } - if flags&ssh_FILEXFER_ATTR_PERMISSIONS != 0 { + if flags&sshFileXferAttrPermissions != 0 { b = marshalUint32(b, fileStat.Mode) } - if flags&ssh_FILEXFER_ATTR_ACMODTIME != 0 { + if flags&sshFileXferAttrACmodTime != 0 { b = marshalUint32(b, fileStat.Atime) b = marshalUint32(b, fileStat.Mtime) } return b } - -// toFileMode converts sftp filemode bits to the os.FileMode specification -func toFileMode(mode uint32) os.FileMode { - var fm = os.FileMode(mode & 0777) - switch mode & syscall.S_IFMT { - case syscall.S_IFBLK: - fm |= os.ModeDevice - case syscall.S_IFCHR: - fm |= os.ModeDevice | os.ModeCharDevice - case syscall.S_IFDIR: - fm |= os.ModeDir - case syscall.S_IFIFO: - fm |= os.ModeNamedPipe - case syscall.S_IFLNK: - fm |= os.ModeSymlink - case syscall.S_IFREG: - // nothing to do - case syscall.S_IFSOCK: - fm |= os.ModeSocket - } - if mode&syscall.S_ISGID != 0 { - fm |= os.ModeSetgid - } - if mode&syscall.S_ISUID != 0 { - fm |= os.ModeSetuid - } - if mode&syscall.S_ISVTX != 0 { - fm |= os.ModeSticky - } - return fm -} - -// fromFileMode converts from the os.FileMode specification to sftp filemode bits -func fromFileMode(mode os.FileMode) uint32 { - ret := uint32(0) - - if mode&os.ModeDevice != 0 { - if mode&os.ModeCharDevice != 0 { - ret |= syscall.S_IFCHR - } else { - ret |= syscall.S_IFBLK - } - } - if mode&os.ModeDir != 0 { - ret |= syscall.S_IFDIR - } - if mode&os.ModeSymlink != 0 { - ret |= syscall.S_IFLNK - } - if mode&os.ModeNamedPipe != 0 { - ret |= syscall.S_IFIFO - } - if mode&os.ModeSetgid != 0 { - ret |= syscall.S_ISGID - } - if mode&os.ModeSetuid != 0 { - ret |= syscall.S_ISUID - } - if mode&os.ModeSticky != 0 { - ret |= syscall.S_ISVTX - } - if mode&os.ModeSocket != 0 { - ret |= syscall.S_IFSOCK - } - - if mode&os.ModeType == 0 { - ret |= syscall.S_IFREG - } - ret |= uint32(mode & os.ModePerm) - - return ret -} diff --git a/vendor/github.com/pkg/sftp/attrs_stubs.go b/vendor/github.com/pkg/sftp/attrs_stubs.go index 81cf3eac2b..ba72e30fb1 100644 --- a/vendor/github.com/pkg/sftp/attrs_stubs.go +++ b/vendor/github.com/pkg/sftp/attrs_stubs.go @@ -1,4 +1,4 @@ -// +build !cgo,!plan9 windows android +// +build !cgo plan9 windows android package sftp diff --git a/vendor/github.com/pkg/sftp/attrs_unix.go b/vendor/github.com/pkg/sftp/attrs_unix.go index 95e7922e92..846b2086dd 100644 --- a/vendor/github.com/pkg/sftp/attrs_unix.go +++ b/vendor/github.com/pkg/sftp/attrs_unix.go @@ -10,7 +10,7 @@ import ( func fileStatFromInfoOs(fi os.FileInfo, flags *uint32, fileStat *FileStat) { if statt, ok := fi.Sys().(*syscall.Stat_t); ok { - *flags |= ssh_FILEXFER_ATTR_UIDGID + *flags |= sshFileXferAttrUIDGID fileStat.UID = statt.Uid fileStat.GID = statt.Gid } diff --git a/vendor/github.com/pkg/sftp/client.go b/vendor/github.com/pkg/sftp/client.go index 11a81b5e05..aa17a392fc 100644 --- a/vendor/github.com/pkg/sftp/client.go +++ b/vendor/github.com/pkg/sftp/client.go @@ -4,8 +4,10 @@ import ( "bytes" "encoding/binary" "io" + "math" "os" "path" + "sync" "sync/atomic" "syscall" "time" @@ -15,12 +17,18 @@ import ( "golang.org/x/crypto/ssh" ) -// InternalInconsistency indicates the packets sent and the data queued to be -// written to the file don't match up. It is an unusual error and usually is -// caused by bad behavior server side or connection issues. The error is -// limited in scope to the call where it happened, the client object is still -// OK to use as long as the connection is still open. -var InternalInconsistency = errors.New("internal inconsistency") +var ( + // ErrInternalInconsistency indicates the packets sent and the data queued to be + // written to the file don't match up. It is an unusual error and usually is + // caused by bad behavior server side or connection issues. The error is + // limited in scope to the call where it happened, the client object is still + // OK to use as long as the connection is still open. + ErrInternalInconsistency = errors.New("internal inconsistency") + // InternalInconsistency alias for ErrInternalInconsistency. + // + // Deprecated: please use ErrInternalInconsistency + InternalInconsistency = ErrInternalInconsistency +) // A ClientOption is a function which applies configuration to a Client. type ClientOption func(*Client) error @@ -35,10 +43,10 @@ type ClientOption func(*Client) error func MaxPacketChecked(size int) ClientOption { return func(c *Client) error { if size < 1 { - return errors.Errorf("size must be greater or equal to 1") + return errors.New("size must be greater or equal to 1") } if size > 32768 { - return errors.Errorf("sizes larger than 32KB might not work with all servers") + return errors.New("sizes larger than 32KB might not work with all servers") } c.maxPacket = size return nil @@ -57,7 +65,7 @@ func MaxPacketChecked(size int) ClientOption { func MaxPacketUnchecked(size int) ClientOption { return func(c *Client) error { if size < 1 { - return errors.Errorf("size must be greater or equal to 1") + return errors.New("size must be greater or equal to 1") } c.maxPacket = size return nil @@ -82,13 +90,91 @@ func MaxPacket(size int) ClientOption { func MaxConcurrentRequestsPerFile(n int) ClientOption { return func(c *Client) error { if n < 1 { - return errors.Errorf("n must be greater or equal to 1") + return errors.New("n must be greater or equal to 1") } c.maxConcurrentRequests = n return nil } } +// UseConcurrentWrites allows the Client to perform concurrent Writes. +// +// Using concurrency while doing writes, requires special consideration. +// A write to a later offset in a file after an error, +// could end up with a file length longer than what was successfully written. +// +// When using this option, if you receive an error during `io.Copy` or `io.WriteTo`, +// you may need to `Truncate` the target Writer to avoid “holes” in the data written. +func UseConcurrentWrites(value bool) ClientOption { + return func(c *Client) error { + c.useConcurrentWrites = value + return nil + } +} + +// UseConcurrentReads allows the Client to perform concurrent Reads. +// +// Concurrent reads are generally safe to use and not using them will degrade +// performance, so this option is enabled by default. +// +// When enabled, WriteTo will use Stat/Fstat to get the file size and determines +// how many concurrent workers to use. +// Some "read once" servers will delete the file if they receive a stat call on an +// open file and then the download will fail. +// Disabling concurrent reads you will be able to download files from these servers. +// If concurrent reads are disabled, the UseFstat option is ignored. +func UseConcurrentReads(value bool) ClientOption { + return func(c *Client) error { + c.disableConcurrentReads = !value + return nil + } +} + +// UseFstat sets whether to use Fstat or Stat when File.WriteTo is called +// (usually when copying files). +// Some servers limit the amount of open files and calling Stat after opening +// the file will throw an error From the server. Setting this flag will call +// Fstat instead of Stat which is suppose to be called on an open file handle. +// +// It has been found that that with IBM Sterling SFTP servers which have +// "extractability" level set to 1 which means only 1 file can be opened at +// any given time. +// +// If the server you are working with still has an issue with both Stat and +// Fstat calls you can always open a file and read it until the end. +// +// Another reason to read the file until its end and Fstat doesn't work is +// that in some servers, reading a full file will automatically delete the +// file as some of these mainframes map the file to a message in a queue. +// Once the file has been read it will get deleted. +func UseFstat(value bool) ClientOption { + return func(c *Client) error { + c.useFstat = value + return nil + } +} + +// Client represents an SFTP session on a *ssh.ClientConn SSH connection. +// Multiple Clients can be active on a single SSH connection, and a Client +// may be called concurrently from multiple Goroutines. +// +// Client implements the github.com/kr/fs.FileSystem interface. +type Client struct { + clientConn + + ext map[string]string // Extensions (name -> data). + + maxPacket int // max packet size read or written. + maxConcurrentRequests int + nextid uint32 + + // write concurrency is… error prone. + // Default behavior should be to not use it. + useConcurrentWrites bool + useFstat bool + disableConcurrentReads bool +} + // NewClient creates a new SFTP client on conn, using zero or more option // functions. func NewClient(conn *ssh.Client, opts ...ClientOption) (*Client, error) { @@ -124,13 +210,20 @@ func NewClientPipe(rd io.Reader, wr io.WriteCloser, opts ...ClientOption) (*Clie inflight: make(map[uint32]chan<- result), closed: make(chan struct{}), }, + + ext: make(map[string]string), + maxPacket: 1 << 15, maxConcurrentRequests: 64, } - if err := sftp.applyOptions(opts...); err != nil { - wr.Close() - return nil, err + + for _, opt := range opts { + if err := opt(sftp); err != nil { + wr.Close() + return nil, err + } } + if err := sftp.sendInit(); err != nil { wr.Close() return nil, err @@ -139,28 +232,21 @@ func NewClientPipe(rd io.Reader, wr io.WriteCloser, opts ...ClientOption) (*Clie wr.Close() return nil, err } + sftp.clientConn.wg.Add(1) go sftp.loop() - return sftp, nil -} - -// Client represents an SFTP session on a *ssh.ClientConn SSH connection. -// Multiple Clients can be active on a single SSH connection, and a Client -// may be called concurrently from multiple Goroutines. -// -// Client implements the github.com/kr/fs.FileSystem interface. -type Client struct { - clientConn - maxPacket int // max packet size read or written. - nextid uint32 - maxConcurrentRequests int + return sftp, nil } // Create creates the named file mode 0666 (before umask), truncating it if it // already exists. If successful, methods on the returned File can be used for // I/O; the associated file descriptor has mode O_RDWR. If you need more // control over the flags/mode used to open the file see client.OpenFile. +// +// Note that some SFTP servers (eg. AWS Transfer) do not support opening files +// read/write at the same time. For those services you will need to use +// `client.OpenFile(os.O_WRONLY|os.O_CREATE|os.O_TRUNC)`. func (c *Client) Create(path string) (*File, error) { return c.open(path, flags(os.O_RDWR|os.O_CREATE|os.O_TRUNC)) } @@ -168,7 +254,7 @@ func (c *Client) Create(path string) (*File, error) { const sftpProtocolVersion = 3 // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02 func (c *Client) sendInit() error { - return c.clientConn.conn.sendPacket(sshFxInitPacket{ + return c.clientConn.conn.sendPacket(&sshFxInitPacket{ Version: sftpProtocolVersion, // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02 }) } @@ -179,22 +265,43 @@ func (c *Client) nextID() uint32 { } func (c *Client) recvVersion() error { - typ, data, err := c.recvPacket() + typ, data, err := c.recvPacket(0) if err != nil { return err } - if typ != ssh_FXP_VERSION { - return &unexpectedPacketErr{ssh_FXP_VERSION, typ} + if typ != sshFxpVersion { + return &unexpectedPacketErr{sshFxpVersion, typ} } - version, _ := unmarshalUint32(data) + version, data, err := unmarshalUint32Safe(data) + if err != nil { + return err + } if version != sftpProtocolVersion { return &unexpectedVersionErr{sftpProtocolVersion, version} } + for len(data) > 0 { + var ext extensionPair + ext, data, err = unmarshalExtensionPair(data) + if err != nil { + return err + } + c.ext[ext.Name] = ext.Data + } + return nil } +// HasExtension checks whether the server supports a named extension. +// +// The first return value is the extension data reported by the server +// (typically a version number). +func (c *Client) HasExtension(name string) (string, bool) { + data, ok := c.ext[name] + return data, ok +} + // Walk returns a new Walker rooted at root. func (c *Client) Walk(root string) *fs.Walker { return fs.WalkFS(root, c) @@ -212,7 +319,7 @@ func (c *Client) ReadDir(p string) ([]os.FileInfo, error) { var done = false for !done { id := c.nextID() - typ, data, err1 := c.sendPacket(sshFxpReaddirPacket{ + typ, data, err1 := c.sendPacket(nil, &sshFxpReaddirPacket{ ID: id, Handle: handle, }) @@ -222,7 +329,7 @@ func (c *Client) ReadDir(p string) ([]os.FileInfo, error) { break } switch typ { - case ssh_FXP_NAME: + case sshFxpName: sid, data := unmarshalUint32(data) if sid != id { return nil, &unexpectedIDErr{id, sid} @@ -239,7 +346,7 @@ func (c *Client) ReadDir(p string) ([]os.FileInfo, error) { } attrs = append(attrs, fileInfoFromStat(attr, path.Base(filename))) } - case ssh_FXP_STATUS: + case sshFxpStatus: // TODO(dfc) scope warning! err = normaliseError(unmarshalStatus(id, data)) done = true @@ -255,7 +362,7 @@ func (c *Client) ReadDir(p string) ([]os.FileInfo, error) { func (c *Client) opendir(path string) (string, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpOpendirPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpOpendirPacket{ ID: id, Path: path, }) @@ -263,14 +370,14 @@ func (c *Client) opendir(path string) (string, error) { return "", err } switch typ { - case ssh_FXP_HANDLE: + case sshFxpHandle: sid, data := unmarshalUint32(data) if sid != id { return "", &unexpectedIDErr{id, sid} } handle, _ := unmarshalString(data) return handle, nil - case ssh_FXP_STATUS: + case sshFxpStatus: return "", normaliseError(unmarshalStatus(id, data)) default: return "", unimplementedPacketErr(typ) @@ -280,34 +387,18 @@ func (c *Client) opendir(path string) (string, error) { // Stat returns a FileInfo structure describing the file specified by path 'p'. // If 'p' is a symbolic link, the returned FileInfo structure describes the referent file. func (c *Client) Stat(p string) (os.FileInfo, error) { - id := c.nextID() - typ, data, err := c.sendPacket(sshFxpStatPacket{ - ID: id, - Path: p, - }) + fs, err := c.stat(p) if err != nil { return nil, err } - switch typ { - case ssh_FXP_ATTRS: - sid, data := unmarshalUint32(data) - if sid != id { - return nil, &unexpectedIDErr{id, sid} - } - attr, _ := unmarshalAttrs(data) - return fileInfoFromStat(attr, path.Base(p)), nil - case ssh_FXP_STATUS: - return nil, normaliseError(unmarshalStatus(id, data)) - default: - return nil, unimplementedPacketErr(typ) - } + return fileInfoFromStat(fs, path.Base(p)), nil } // Lstat returns a FileInfo structure describing the file specified by path 'p'. // If 'p' is a symbolic link, the returned FileInfo structure describes the symbolic link. func (c *Client) Lstat(p string) (os.FileInfo, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpLstatPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpLstatPacket{ ID: id, Path: p, }) @@ -315,14 +406,14 @@ func (c *Client) Lstat(p string) (os.FileInfo, error) { return nil, err } switch typ { - case ssh_FXP_ATTRS: + case sshFxpAttrs: sid, data := unmarshalUint32(data) if sid != id { return nil, &unexpectedIDErr{id, sid} } attr, _ := unmarshalAttrs(data) return fileInfoFromStat(attr, path.Base(p)), nil - case ssh_FXP_STATUS: + case sshFxpStatus: return nil, normaliseError(unmarshalStatus(id, data)) default: return nil, unimplementedPacketErr(typ) @@ -332,7 +423,7 @@ func (c *Client) Lstat(p string) (os.FileInfo, error) { // ReadLink reads the target of a symbolic link. func (c *Client) ReadLink(p string) (string, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpReadlinkPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpReadlinkPacket{ ID: id, Path: p, }) @@ -340,7 +431,7 @@ func (c *Client) ReadLink(p string) (string, error) { return "", err } switch typ { - case ssh_FXP_NAME: + case sshFxpName: sid, data := unmarshalUint32(data) if sid != id { return "", &unexpectedIDErr{id, sid} @@ -351,17 +442,36 @@ func (c *Client) ReadLink(p string) (string, error) { } filename, _ := unmarshalString(data) // ignore dummy attributes return filename, nil - case ssh_FXP_STATUS: + case sshFxpStatus: return "", normaliseError(unmarshalStatus(id, data)) default: return "", unimplementedPacketErr(typ) } } +// Link creates a hard link at 'newname', pointing at the same inode as 'oldname' +func (c *Client) Link(oldname, newname string) error { + id := c.nextID() + typ, data, err := c.sendPacket(nil, &sshFxpHardlinkPacket{ + ID: id, + Oldpath: oldname, + Newpath: newname, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + // Symlink creates a symbolic link at 'newname', pointing at target 'oldname' func (c *Client) Symlink(oldname, newname string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpSymlinkPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpSymlinkPacket{ ID: id, Linkpath: newname, Targetpath: oldname, @@ -370,7 +480,26 @@ func (c *Client) Symlink(oldname, newname string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +func (c *Client) setfstat(handle string, flags uint32, attrs interface{}) error { + id := c.nextID() + typ, data, err := c.sendPacket(nil, &sshFxpFsetstatPacket{ + ID: id, + Handle: handle, + Flags: flags, + Attrs: attrs, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -380,7 +509,7 @@ func (c *Client) Symlink(oldname, newname string) error { // setstat is a convience wrapper to allow for changing of various parts of the file descriptor. func (c *Client) setstat(path string, flags uint32, attrs interface{}) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpSetstatPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpSetstatPacket{ ID: id, Path: path, Flags: flags, @@ -390,7 +519,7 @@ func (c *Client) setstat(path string, flags uint32, attrs interface{}) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -404,7 +533,7 @@ func (c *Client) Chtimes(path string, atime time.Time, mtime time.Time) error { Mtime uint32 } attrs := times{uint32(atime.Unix()), uint32(mtime.Unix())} - return c.setstat(path, ssh_FILEXFER_ATTR_ACMODTIME, attrs) + return c.setstat(path, sshFileXferAttrACmodTime, attrs) } // Chown changes the user and group owners of the named file. @@ -414,12 +543,16 @@ func (c *Client) Chown(path string, uid, gid int) error { GID uint32 } attrs := owner{uint32(uid), uint32(gid)} - return c.setstat(path, ssh_FILEXFER_ATTR_UIDGID, attrs) + return c.setstat(path, sshFileXferAttrUIDGID, attrs) } // Chmod changes the permissions of the named file. +// +// Chmod does not apply a umask, because even retrieving the umask is not +// possible in a portable way without causing a race condition. Callers +// should mask off umask bits, if desired. func (c *Client) Chmod(path string, mode os.FileMode) error { - return c.setstat(path, ssh_FILEXFER_ATTR_PERMISSIONS, uint32(mode)) + return c.setstat(path, sshFileXferAttrPermissions, toChmodPerm(mode)) } // Truncate sets the size of the named file. Although it may be safely assumed @@ -427,7 +560,7 @@ func (c *Client) Chmod(path string, mode os.FileMode) error { // the SFTP protocol does not specify what behavior the server should do when setting // size greater than the current size. func (c *Client) Truncate(path string, size int64) error { - return c.setstat(path, ssh_FILEXFER_ATTR_SIZE, uint64(size)) + return c.setstat(path, sshFileXferAttrSize, uint64(size)) } // Open opens the named file for reading. If successful, methods on the @@ -446,7 +579,7 @@ func (c *Client) OpenFile(path string, f int) (*File, error) { func (c *Client) open(path string, pflags uint32) (*File, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpOpenPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpOpenPacket{ ID: id, Path: path, Pflags: pflags, @@ -455,14 +588,14 @@ func (c *Client) open(path string, pflags uint32) (*File, error) { return nil, err } switch typ { - case ssh_FXP_HANDLE: + case sshFxpHandle: sid, data := unmarshalUint32(data) if sid != id { return nil, &unexpectedIDErr{id, sid} } handle, _ := unmarshalString(data) return &File{c: c, path: path, handle: handle}, nil - case ssh_FXP_STATUS: + case sshFxpStatus: return nil, normaliseError(unmarshalStatus(id, data)) default: return nil, unimplementedPacketErr(typ) @@ -474,7 +607,7 @@ func (c *Client) open(path string, pflags uint32) (*File, error) { // immediately after this request has been sent. func (c *Client) close(handle string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpClosePacket{ + typ, data, err := c.sendPacket(nil, &sshFxpClosePacket{ ID: id, Handle: handle, }) @@ -482,16 +615,40 @@ func (c *Client) close(handle string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) } } +func (c *Client) stat(path string) (*FileStat, error) { + id := c.nextID() + typ, data, err := c.sendPacket(nil, &sshFxpStatPacket{ + ID: id, + Path: path, + }) + if err != nil { + return nil, err + } + switch typ { + case sshFxpAttrs: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + attr, _ := unmarshalAttrs(data) + return attr, nil + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + default: + return nil, unimplementedPacketErr(typ) + } +} + func (c *Client) fstat(handle string) (*FileStat, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpFstatPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpFstatPacket{ ID: id, Handle: handle, }) @@ -499,14 +656,14 @@ func (c *Client) fstat(handle string) (*FileStat, error) { return nil, err } switch typ { - case ssh_FXP_ATTRS: + case sshFxpAttrs: sid, data := unmarshalUint32(data) if sid != id { return nil, &unexpectedIDErr{id, sid} } attr, _ := unmarshalAttrs(data) return attr, nil - case ssh_FXP_STATUS: + case sshFxpStatus: return nil, normaliseError(unmarshalStatus(id, data)) default: return nil, unimplementedPacketErr(typ) @@ -520,7 +677,7 @@ func (c *Client) fstat(handle string) (*FileStat, error) { func (c *Client) StatVFS(path string) (*StatVFS, error) { // send the StatVFS packet to the server id := c.nextID() - typ, data, err := c.sendPacket(sshFxpStatvfsPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpStatvfsPacket{ ID: id, Path: path, }) @@ -530,7 +687,7 @@ func (c *Client) StatVFS(path string) (*StatVFS, error) { switch typ { // server responded with valid data - case ssh_FXP_EXTENDED_REPLY: + case sshFxpExtendedReply: var response StatVFS err = binary.Read(bytes.NewReader(data), binary.BigEndian, &response) if err != nil { @@ -540,8 +697,8 @@ func (c *Client) StatVFS(path string) (*StatVFS, error) { return &response, nil // the resquest failed - case ssh_FXP_STATUS: - return nil, errors.New(fxp(ssh_FXP_STATUS).String()) + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) default: return nil, unimplementedPacketErr(typ) @@ -558,20 +715,24 @@ func (c *Client) Join(elem ...string) string { return path.Join(elem...) } // is not empty. func (c *Client) Remove(path string) error { err := c.removeFile(path) + // some servers, *cough* osx *cough*, return EPERM, not ENODIR. + // serv-u returns ssh_FX_FILE_IS_A_DIRECTORY + // EPERM is converted to os.ErrPermission so it is not a StatusError if err, ok := err.(*StatusError); ok { switch err.Code { - // some servers, *cough* osx *cough*, return EPERM, not ENODIR. - // serv-u returns ssh_FX_FILE_IS_A_DIRECTORY - case ssh_FX_PERMISSION_DENIED, ssh_FX_FAILURE, ssh_FX_FILE_IS_A_DIRECTORY: + case sshFxFailure, sshFxFileIsADirectory: return c.RemoveDirectory(path) } } + if os.IsPermission(err) { + return c.RemoveDirectory(path) + } return err } func (c *Client) removeFile(path string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpRemovePacket{ + typ, data, err := c.sendPacket(nil, &sshFxpRemovePacket{ ID: id, Filename: path, }) @@ -579,7 +740,7 @@ func (c *Client) removeFile(path string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -589,7 +750,7 @@ func (c *Client) removeFile(path string) error { // RemoveDirectory removes a directory path. func (c *Client) RemoveDirectory(path string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpRmdirPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpRmdirPacket{ ID: id, Path: path, }) @@ -597,7 +758,7 @@ func (c *Client) RemoveDirectory(path string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -607,7 +768,7 @@ func (c *Client) RemoveDirectory(path string) error { // Rename renames a file. func (c *Client) Rename(oldname, newname string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpRenamePacket{ + typ, data, err := c.sendPacket(nil, &sshFxpRenamePacket{ ID: id, Oldpath: oldname, Newpath: newname, @@ -616,7 +777,7 @@ func (c *Client) Rename(oldname, newname string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -627,7 +788,7 @@ func (c *Client) Rename(oldname, newname string) error { // which will replace newname if it already exists. func (c *Client) PosixRename(oldname, newname string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpPosixRenamePacket{ + typ, data, err := c.sendPacket(nil, &sshFxpPosixRenamePacket{ ID: id, Oldpath: oldname, Newpath: newname, @@ -636,16 +797,20 @@ func (c *Client) PosixRename(oldname, newname string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) } } -func (c *Client) realpath(path string) (string, error) { +// RealPath can be used to have the server canonicalize any given path name to an absolute path. +// +// This is useful for converting path names containing ".." components, +// or relative pathnames without a leading slash into absolute paths. +func (c *Client) RealPath(path string) (string, error) { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpRealpathPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpRealpathPacket{ ID: id, Path: path, }) @@ -653,7 +818,7 @@ func (c *Client) realpath(path string) (string, error) { return "", err } switch typ { - case ssh_FXP_NAME: + case sshFxpName: sid, data := unmarshalUint32(data) if sid != id { return "", &unexpectedIDErr{id, sid} @@ -664,7 +829,7 @@ func (c *Client) realpath(path string) (string, error) { } filename, _ := unmarshalString(data) // ignore attributes return filename, nil - case ssh_FXP_STATUS: + case sshFxpStatus: return "", normaliseError(unmarshalStatus(id, data)) default: return "", unimplementedPacketErr(typ) @@ -674,7 +839,7 @@ func (c *Client) realpath(path string) (string, error) { // Getwd returns the current working directory of the server. Operations // involving relative paths will be based at this location. func (c *Client) Getwd() (string, error) { - return c.realpath(".") + return c.RealPath(".") } // Mkdir creates the specified directory. An error will be returned if a file or @@ -682,7 +847,7 @@ func (c *Client) Getwd() (string, error) { // parent folder does not exist (the method cannot create complete paths). func (c *Client) Mkdir(path string) error { id := c.nextID() - typ, data, err := c.sendPacket(sshFxpMkdirPacket{ + typ, data, err := c.sendPacket(nil, &sshFxpMkdirPacket{ ID: id, Path: path, }) @@ -690,7 +855,7 @@ func (c *Client) Mkdir(path string) error { return err } switch typ { - case ssh_FXP_STATUS: + case sshFxpStatus: return normaliseError(unmarshalStatus(id, data)) default: return unimplementedPacketErr(typ) @@ -714,12 +879,12 @@ func (c *Client) MkdirAll(path string) error { // Slow path: make sure parent exists and then call Mkdir for path. i := len(path) - for i > 0 && os.IsPathSeparator(path[i-1]) { // Skip trailing path separator. + for i > 0 && path[i-1] == '/' { // Skip trailing path separator. i-- } j := i - for j > 0 && !os.IsPathSeparator(path[j-1]) { // Scan backward over element. + for j > 0 && path[j-1] != '/' { // Scan backward over element. j-- } @@ -745,23 +910,14 @@ func (c *Client) MkdirAll(path string) error { return nil } -// applyOptions applies options functions to the Client. -// If an error is encountered, option processing ceases. -func (c *Client) applyOptions(opts ...ClientOption) error { - for _, f := range opts { - if err := f(c); err != nil { - return err - } - } - return nil -} - // File represents a remote file. type File struct { c *Client path string handle string - offset uint64 // current offset within remote file + + mu sync.Mutex + offset int64 // current offset within remote file } // Close closes the File, rendering it unusable for I/O. It returns an @@ -785,234 +941,415 @@ func (f *File) Name() string { // than calling Read multiple times. io.Copy will do this // automatically. func (f *File) Read(b []byte) (int, error) { - // Split the read into multiple maxPacket sized concurrent reads - // bounded by maxConcurrentRequests. This allows reads with a suitably - // large buffer to transfer data at a much faster rate due to - // overlapping round trip times. - inFlight := 0 - desiredInFlight := 1 - offset := f.offset - // maxConcurrentRequests buffer to deal with broadcastErr() floods - // also must have a buffer of max value of (desiredInFlight - inFlight) - ch := make(chan result, f.c.maxConcurrentRequests+1) - type inflightRead struct { - b []byte - offset uint64 - } - reqs := map[uint32]inflightRead{} - type offsetErr struct { - offset uint64 - err error - } - var firstErr offsetErr - - sendReq := func(b []byte, offset uint64) { - reqID := f.c.nextID() - f.c.dispatchRequest(ch, sshFxpReadPacket{ - ID: reqID, + f.mu.Lock() + defer f.mu.Unlock() + + n, err := f.ReadAt(b, f.offset) + f.offset += int64(n) + return n, err +} + +// readChunkAt attempts to read the whole entire length of the buffer from the file starting at the offset. +// It will continue progressively reading into the buffer until it fills the whole buffer, or an error occurs. +func (f *File) readChunkAt(ch chan result, b []byte, off int64) (n int, err error) { + for err == nil && n < len(b) { + id := f.c.nextID() + typ, data, err := f.c.sendPacket(ch, &sshFxpReadPacket{ + ID: id, Handle: f.handle, - Offset: offset, - Len: uint32(len(b)), + Offset: uint64(off) + uint64(n), + Len: uint32(len(b) - n), }) - inFlight++ - reqs[reqID] = inflightRead{b: b, offset: offset} - } - - var read int - for len(b) > 0 || inFlight > 0 { - for inFlight < desiredInFlight && len(b) > 0 && firstErr.err == nil { - l := min(len(b), f.c.maxPacket) - rb := b[:l] - sendReq(rb, offset) - offset += uint64(l) - b = b[l:] + if err != nil { + return n, err } - if inFlight == 0 { - break + switch typ { + case sshFxpStatus: + return n, normaliseError(unmarshalStatus(id, data)) + + case sshFxpData: + sid, data := unmarshalUint32(data) + if id != sid { + return n, &unexpectedIDErr{id, sid} + } + + l, data := unmarshalUint32(data) + n += copy(b[n:], data[:l]) + + default: + return n, unimplementedPacketErr(typ) + } + } + + return +} + +func (f *File) readAtSequential(b []byte, off int64) (read int, err error) { + for read < len(b) { + rb := b[read:] + if len(rb) > f.c.maxPacket { + rb = rb[:f.c.maxPacket] } - res := <-ch - inFlight-- - if res.err != nil { - firstErr = offsetErr{offset: 0, err: res.err} - continue + n, err := f.readChunkAt(nil, rb, off+int64(read)) + if n < 0 { + panic("sftp.File: returned negative count from readChunkAt") } - reqID, data := unmarshalUint32(res.data) - req, ok := reqs[reqID] - if !ok { - firstErr = offsetErr{offset: 0, err: errors.Errorf("sid: %v not found", reqID)} - continue + if n > 0 { + read += n } - delete(reqs, reqID) - switch res.typ { - case ssh_FXP_STATUS: - if firstErr.err == nil || req.offset < firstErr.offset { - firstErr = offsetErr{ - offset: req.offset, - err: normaliseError(unmarshalStatus(reqID, res.data)), - } + if err != nil { + if errors.Is(err, io.EOF) { + return read, nil // return nil explicitly. } - case ssh_FXP_DATA: - l, data := unmarshalUint32(data) - n := copy(req.b, data[:l]) - read += n - if n < len(req.b) { - sendReq(req.b[l:], req.offset+uint64(l)) + return read, err + } + } + return read, nil +} + +// ReadAt reads up to len(b) byte from the File at a given offset `off`. It returns +// the number of bytes read and an error, if any. ReadAt follows io.ReaderAt semantics, +// so the file offset is not altered during the read. +func (f *File) ReadAt(b []byte, off int64) (int, error) { + if len(b) <= f.c.maxPacket { + // This should be able to be serviced with 1/2 requests. + // So, just do it directly. + return f.readChunkAt(nil, b, off) + } + + if f.c.disableConcurrentReads { + return f.readAtSequential(b, off) + } + + // Split the read into multiple maxPacket-sized concurrent reads bounded by maxConcurrentRequests. + // This allows writes with a suitably large buffer to transfer data at a much faster rate + // by overlapping round trip times. + + cancel := make(chan struct{}) + + type work struct { + b []byte + off int64 + } + workCh := make(chan work) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + b := b + offset := off + chunkSize := f.c.maxPacket + + for len(b) > 0 { + rb := b + if len(rb) > chunkSize { + rb = rb[:chunkSize] } - if desiredInFlight < f.c.maxConcurrentRequests { - desiredInFlight++ + + select { + case workCh <- work{rb, offset}: + case <-cancel: + return } + + offset += int64(len(rb)) + b = b[len(rb):] + } + }() + + type rErr struct { + off int64 + err error + } + errCh := make(chan rErr) + + concurrency := len(b)/f.c.maxPacket + 1 + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and then performs the Read into its buffer from its respective offset. + go func() { + defer wg.Done() + + ch := make(chan result, 1) // reusable channel per mapper. + + for packet := range workCh { + n, err := f.readChunkAt(ch, packet.b, packet.off) + if err != nil { + // return the offset as the start + how much we read before the error. + errCh <- rErr{packet.off + int64(n), err} + return + } + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: collect all the results into a relevant return: the earliest offset to return an error. + firstErr := rErr{math.MaxInt64, nil} + for rErr := range errCh { + if rErr.off <= firstErr.off { + firstErr = rErr + } + + select { + case <-cancel: default: - firstErr = offsetErr{offset: 0, err: unimplementedPacketErr(res.typ)} + // stop any more work from being distributed. (Just in case.) + close(cancel) } } - // If the error is anything other than EOF, then there - // may be gaps in the data copied to the buffer so it's - // best to return 0 so the caller can't make any - // incorrect assumptions about the state of the buffer. - if firstErr.err != nil && firstErr.err != io.EOF { - read = 0 + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off > our starting offset. + return int(firstErr.off - off), firstErr.err + } + + // As per spec for io.ReaderAt, we return nil error if and only if we read everything. + return len(b), nil +} + +// writeToSequential implements WriteTo, but works sequentially with no parallelism. +func (f *File) writeToSequential(w io.Writer) (written int64, err error) { + b := make([]byte, f.c.maxPacket) + ch := make(chan result, 1) // reusable channel + + for { + n, err := f.readChunkAt(ch, b, f.offset) + if n < 0 { + panic("sftp.File: returned negative count from readChunkAt") + } + + if n > 0 { + f.offset += int64(n) + + m, err2 := w.Write(b[:n]) + written += int64(m) + + if err == nil { + err = err2 + } + } + + if err != nil { + if err == io.EOF { + return written, nil // return nil explicitly. + } + + return written, err + } } - f.offset += uint64(read) - return read, firstErr.err } -// WriteTo writes the file to w. The return value is the number of bytes -// written. Any error encountered during the write is also returned. +// WriteTo writes the file to the given Writer. +// The return value is the number of bytes written. +// Any error encountered during the write is also returned. // -// This method is preferred over calling Read multiple times to -// maximise throughput for transferring the entire file (especially -// over high latency links). -func (f *File) WriteTo(w io.Writer) (int64, error) { - fi, err := f.c.Stat(f.path) +// This method is preferred over calling Read multiple times +// to maximise throughput for transferring the entire file, +// especially over high latency links. +func (f *File) WriteTo(w io.Writer) (written int64, err error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.c.disableConcurrentReads { + return f.writeToSequential(w) + } + + // For concurrency, we want to guess how many concurrent workers we should use. + var fileStat *FileStat + if f.c.useFstat { + fileStat, err = f.c.fstat(f.handle) + } else { + fileStat, err = f.c.stat(f.path) + } if err != nil { return 0, err } - inFlight := 0 - desiredInFlight := 1 - offset := f.offset - writeOffset := offset - fileSize := uint64(fi.Size()) - // see comment on same line in Read() above - ch := make(chan result, f.c.maxConcurrentRequests+1) - type inflightRead struct { - b []byte - offset uint64 - } - reqs := map[uint32]inflightRead{} - pendingWrites := map[uint64][]byte{} - type offsetErr struct { - offset uint64 - err error - } - var firstErr offsetErr - - sendReq := func(b []byte, offset uint64) { - reqID := f.c.nextID() - f.c.dispatchRequest(ch, sshFxpReadPacket{ - ID: reqID, - Handle: f.handle, - Offset: offset, - Len: uint32(len(b)), - }) - inFlight++ - reqs[reqID] = inflightRead{b: b, offset: offset} - } - - var copied int64 - for firstErr.err == nil || inFlight > 0 { - if firstErr.err == nil { - for inFlight+len(pendingWrites) < desiredInFlight { - b := make([]byte, f.c.maxPacket) - sendReq(b, offset) - offset += uint64(f.c.maxPacket) - if offset > fileSize { - desiredInFlight = 1 - } + + fileSize := fileStat.Size + if fileSize <= uint64(f.c.maxPacket) || !isRegular(fileStat.Mode) { + // only regular files are guaranteed to return (full read) xor (partial read, next error) + return f.writeToSequential(w) + } + + concurrency64 := fileSize/uint64(f.c.maxPacket) + 1 // a bad guess, but better than no guess + if concurrency64 > uint64(f.c.maxConcurrentRequests) || concurrency64 < 1 { + concurrency64 = uint64(f.c.maxConcurrentRequests) + } + // Now that concurrency64 is saturated to an int value, we know this assignment cannot possibly overflow. + concurrency := int(concurrency64) + + chunkSize := f.c.maxPacket + pool := newBufPool(concurrency, chunkSize) + resPool := newResChanPool(concurrency) + + cancel := make(chan struct{}) + var wg sync.WaitGroup + defer func() { + // Once the writing Reduce phase has ended, all the feed work needs to unconditionally stop. + close(cancel) + + // We want to wait until all outstanding goroutines with an `f` or `f.c` reference have completed. + // Just to be sure we don’t orphan any goroutines any hanging references. + wg.Wait() + }() + + type writeWork struct { + b []byte + off int64 + err error + + next chan writeWork + } + writeCh := make(chan writeWork) + + type readWork struct { + id uint32 + res chan result + off int64 + + cur, next chan writeWork + } + readCh := make(chan readWork) + + // Slice: hand out chunks of work on demand, with a `cur` and `next` channel built-in for sequencing. + go func() { + defer close(readCh) + + off := f.offset + + cur := writeCh + for { + id := f.c.nextID() + res := resPool.Get() + + next := make(chan writeWork) + readWork := readWork{ + id: id, + res: res, + off: off, + + cur: cur, + next: next, } - } - if inFlight == 0 { - if firstErr.err == nil && len(pendingWrites) > 0 { - return copied, InternalInconsistency + f.c.dispatchRequest(res, &sshFxpReadPacket{ + ID: id, + Handle: f.handle, + Offset: uint64(off), + Len: uint32(chunkSize), + }) + + select { + case readCh <- readWork: + case <-cancel: + return } - break - } - res := <-ch - inFlight-- - if res.err != nil { - firstErr = offsetErr{offset: 0, err: res.err} - continue - } - reqID, data := unmarshalUint32(res.data) - req, ok := reqs[reqID] - if !ok { - firstErr = offsetErr{offset: 0, err: errors.Errorf("sid: %v not found", reqID)} - continue + + off += int64(chunkSize) + cur = next } - delete(reqs, reqID) - switch res.typ { - case ssh_FXP_STATUS: - if firstErr.err == nil || req.offset < firstErr.offset { - firstErr = offsetErr{offset: req.offset, err: normaliseError(unmarshalStatus(reqID, res.data))} - } - case ssh_FXP_DATA: - l, data := unmarshalUint32(data) - if req.offset == writeOffset { - nbytes, err := w.Write(data) - copied += int64(nbytes) - if err != nil { - // We will never receive another DATA with offset==writeOffset, so - // the loop will drain inFlight and then exit. - firstErr = offsetErr{offset: req.offset + uint64(nbytes), err: err} - break + }() + + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets readWork, and does the Read into a buffer at the given offset. + go func() { + defer wg.Done() + + for readWork := range readCh { + var b []byte + var n int + + s := <-readWork.res + resPool.Put(readWork.res) + + err := s.err + if err == nil { + switch s.typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(readWork.id, s.data)) + + case sshFxpData: + sid, data := unmarshalUint32(s.data) + if readWork.id != sid { + err = &unexpectedIDErr{readWork.id, sid} + + } else { + l, data := unmarshalUint32(data) + b = pool.Get()[:l] + n = copy(b, data[:l]) + b = b[:n] + } + + default: + err = unimplementedPacketErr(s.typ) + } } - if nbytes < int(l) { - firstErr = offsetErr{offset: req.offset + uint64(nbytes), err: io.ErrShortWrite} - break + + writeWork := writeWork{ + b: b, + off: readWork.off, + err: err, + + next: readWork.next, } - switch { - case offset > fileSize: - desiredInFlight = 1 - case desiredInFlight < f.c.maxConcurrentRequests: - desiredInFlight++ + + select { + case readWork.cur <- writeWork: + case <-cancel: + return } - writeOffset += uint64(nbytes) - for { - pendingData, ok := pendingWrites[writeOffset] - if !ok { - break - } - // Give go a chance to free the memory. - delete(pendingWrites, writeOffset) - nbytes, err := w.Write(pendingData) - // Do not move writeOffset on error so subsequent iterations won't trigger - // any writes. - if err != nil { - firstErr = offsetErr{offset: writeOffset + uint64(nbytes), err: err} - break - } - if nbytes < len(pendingData) { - firstErr = offsetErr{offset: writeOffset + uint64(nbytes), err: io.ErrShortWrite} - break - } - writeOffset += uint64(nbytes) + + if err != nil { + return } - } else { - // Don't write the data yet because - // this response came in out of order - // and we need to wait for responses - // for earlier segments of the file. - pendingWrites[req.offset] = data } - default: - firstErr = offsetErr{offset: 0, err: unimplementedPacketErr(res.typ)} - } + }() } - if firstErr.err != io.EOF { - return copied, firstErr.err + + // Reduce: serialize the results from the reads into sequential writes. + cur := writeCh + for { + packet, ok := <-cur + if !ok { + return written, errors.New("sftp.File.WriteTo: unexpectedly closed channel") + } + + // Because writes are serialized, this will always be the last successfully read byte. + f.offset = packet.off + int64(len(packet.b)) + + if len(packet.b) > 0 { + n, err := w.Write(packet.b) + written += int64(n) + if err != nil { + return written, err + } + } + + if packet.err != nil { + if packet.err == io.EOF { + return written, nil + } + + return written, packet.err + } + + pool.Put(packet.b) + cur = packet.next } - return copied, nil } // Stat returns the FileInfo structure describing file. If there is an @@ -1034,157 +1371,410 @@ func (f *File) Stat() (os.FileInfo, error) { // than calling Write multiple times. io.Copy will do this // automatically. func (f *File) Write(b []byte) (int, error) { + f.mu.Lock() + defer f.mu.Unlock() + + n, err := f.WriteAt(b, f.offset) + f.offset += int64(n) + return n, err +} + +func (f *File) writeChunkAt(ch chan result, b []byte, off int64) (int, error) { + typ, data, err := f.c.sendPacket(ch, &sshFxpWritePacket{ + ID: f.c.nextID(), + Handle: f.handle, + Offset: uint64(off), + Length: uint32(len(b)), + Data: b, + }) + if err != nil { + return 0, err + } + + switch typ { + case sshFxpStatus: + id, _ := unmarshalUint32(data) + err := normaliseError(unmarshalStatus(id, data)) + if err != nil { + return 0, err + } + + default: + return 0, unimplementedPacketErr(typ) + } + + return len(b), nil +} + +// writeAtConcurrent implements WriterAt, but works concurrently rather than sequentially. +func (f *File) writeAtConcurrent(b []byte, off int64) (int, error) { // Split the write into multiple maxPacket sized concurrent writes // bounded by maxConcurrentRequests. This allows writes with a suitably // large buffer to transfer data at a much faster rate due to // overlapping round trip times. - inFlight := 0 - desiredInFlight := 1 - offset := f.offset - // see comment on same line in Read() above - ch := make(chan result, f.c.maxConcurrentRequests+1) - var firstErr error - written := len(b) - for len(b) > 0 || inFlight > 0 { - for inFlight < desiredInFlight && len(b) > 0 && firstErr == nil { - l := min(len(b), f.c.maxPacket) - rb := b[:l] - f.c.dispatchRequest(ch, sshFxpWritePacket{ - ID: f.c.nextID(), - Handle: f.handle, - Offset: offset, - Length: uint32(len(rb)), - Data: rb, - }) - inFlight++ - offset += uint64(l) - b = b[l:] + + cancel := make(chan struct{}) + + type work struct { + b []byte + off int64 + } + workCh := make(chan work) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + var read int + chunkSize := f.c.maxPacket + + for read < len(b) { + wb := b[read:] + if len(wb) > chunkSize { + wb = wb[:chunkSize] + } + + select { + case workCh <- work{wb, off + int64(read)}: + case <-cancel: + return + } + + read += len(wb) } + }() - if inFlight == 0 { - break + type wErr struct { + off int64 + err error + } + errCh := make(chan wErr) + + concurrency := len(b)/f.c.maxPacket + 1 + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and does the Write from each buffer to its respective offset. + go func() { + defer wg.Done() + + ch := make(chan result, 1) // reusable channel per mapper. + + for packet := range workCh { + n, err := f.writeChunkAt(ch, packet.b, packet.off) + if err != nil { + // return the offset as the start + how much we wrote before the error. + errCh <- wErr{packet.off + int64(n), err} + } + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: collect all the results into a relevant return: the earliest offset to return an error. + firstErr := wErr{math.MaxInt64, nil} + for wErr := range errCh { + if wErr.off <= firstErr.off { + firstErr = wErr } - res := <-ch - inFlight-- - if res.err != nil { - firstErr = res.err - continue + + select { + case <-cancel: + default: + // stop any more work from being distributed. (Just in case.) + close(cancel) } - switch res.typ { - case ssh_FXP_STATUS: - id, _ := unmarshalUint32(res.data) - err := normaliseError(unmarshalStatus(id, res.data)) - if err != nil && firstErr == nil { - firstErr = err - break + } + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off >= our starting offset. + return int(firstErr.off - off), firstErr.err + } + + return len(b), nil +} + +// WriteAt writess up to len(b) byte to the File at a given offset `off`. It returns +// the number of bytes written and an error, if any. WriteAt follows io.WriterAt semantics, +// so the file offset is not altered during the write. +func (f *File) WriteAt(b []byte, off int64) (written int, err error) { + if len(b) <= f.c.maxPacket { + // We can do this in one write. + return f.writeChunkAt(nil, b, off) + } + + if f.c.useConcurrentWrites { + return f.writeAtConcurrent(b, off) + } + + ch := make(chan result, 1) // reusable channel + + chunkSize := f.c.maxPacket + + for written < len(b) { + wb := b[written:] + if len(wb) > chunkSize { + wb = wb[:chunkSize] + } + + n, err := f.writeChunkAt(ch, wb, off+int64(written)) + if n > 0 { + written += n + } + + if err != nil { + return written, err + } + } + + return len(b), nil +} + +// ReadFromWithConcurrency implements ReaderFrom, +// but uses the given concurrency to issue multiple requests at the same time. +// +// Giving a concurrency of less than one will default to the Client’s max concurrency. +// +// Otherwise, the given concurrency will be capped by the Client's max concurrency. +func (f *File) ReadFromWithConcurrency(r io.Reader, concurrency int) (read int64, err error) { + // Split the write into multiple maxPacket sized concurrent writes. + // This allows writes with a suitably large reader + // to transfer data at a much faster rate due to overlapping round trip times. + + cancel := make(chan struct{}) + + type work struct { + b []byte + n int + off int64 + } + workCh := make(chan work) + + type rwErr struct { + off int64 + err error + } + errCh := make(chan rwErr) + + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + pool := newBufPool(concurrency, f.c.maxPacket) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + off := f.offset + + for { + b := pool.Get() + + n, err := r.Read(b) + if n > 0 { + read += int64(n) + + select { + case workCh <- work{b, n, off}: + // We need the pool.Put(b) to put the whole slice, not just trunced. + case <-cancel: + return + } + + off += int64(n) } - if desiredInFlight < f.c.maxConcurrentRequests { - desiredInFlight++ + + if err != nil { + if err != io.EOF { + errCh <- rwErr{off, err} + } + return } + } + }() + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and does the Write from each buffer to its respective offset. + go func() { + defer wg.Done() + + ch := make(chan result, 1) // reusable channel per mapper. + + for packet := range workCh { + n, err := f.writeChunkAt(ch, packet.b[:packet.n], packet.off) + if err != nil { + // return the offset as the start + how much we wrote before the error. + errCh <- rwErr{packet.off + int64(n), err} + } + pool.Put(packet.b) + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: Collect all the results into a relevant return: the earliest offset to return an error. + firstErr := rwErr{math.MaxInt64, nil} + for rwErr := range errCh { + if rwErr.off <= firstErr.off { + firstErr = rwErr + } + + select { + case <-cancel: default: - firstErr = unimplementedPacketErr(res.typ) + // stop any more work from being distributed. + close(cancel) } } - // If error is non-nil, then there may be gaps in the data written to - // the file so it's best to return 0 so the caller can't make any - // incorrect assumptions about the state of the file. - if firstErr != nil { - written = 0 + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off is a valid offset. + // + // firstErr.off will then be the lesser of: + // * the offset of the first error from writing, + // * the last successfully read offset. + // + // This could be less than the last succesfully written offset, + // which is the whole reason for the UseConcurrentWrites() ClientOption. + // + // Callers are responsible for truncating any SFTP files to a safe length. + f.offset = firstErr.off + + // ReadFrom is defined to return the read bytes, regardless of any writer errors. + return read, firstErr.err } - f.offset += uint64(written) - return written, firstErr + + f.offset += read + return read, nil } // ReadFrom reads data from r until EOF and writes it to the file. The return // value is the number of bytes read. Any error except io.EOF encountered // during the read is also returned. // -// This method is preferred over calling Write multiple times to -// maximise throughput for transferring the entire file (especially -// over high latency links). +// This method is preferred over calling Write multiple times +// to maximise throughput for transferring the entire file, +// especially over high-latency links. func (f *File) ReadFrom(r io.Reader) (int64, error) { - inFlight := 0 - desiredInFlight := 1 - offset := f.offset - // see comment on same line in Read() above - ch := make(chan result, f.c.maxConcurrentRequests+1) - var firstErr error - read := int64(0) - b := make([]byte, f.c.maxPacket) - for inFlight > 0 || firstErr == nil { - for inFlight < desiredInFlight && firstErr == nil { - n, err := r.Read(b) - if err != nil { - firstErr = err + f.mu.Lock() + defer f.mu.Unlock() + + if f.c.useConcurrentWrites { + var remain int64 + switch r := r.(type) { + case interface{ Len() int }: + remain = int64(r.Len()) + + case interface{ Size() int64 }: + remain = r.Size() + + case *io.LimitedReader: + remain = r.N + + case interface{ Stat() (os.FileInfo, error) }: + info, err := r.Stat() + if err == nil { + remain = info.Size() } - f.c.dispatchRequest(ch, sshFxpWritePacket{ - ID: f.c.nextID(), - Handle: f.handle, - Offset: offset, - Length: uint32(n), - Data: b[:n], - }) - inFlight++ - offset += uint64(n) - read += int64(n) } - if inFlight == 0 { - break + if remain < 0 { + // We can strongly assert that we want default max concurrency here. + return f.ReadFromWithConcurrency(r, f.c.maxConcurrentRequests) + } + + if remain > int64(f.c.maxPacket) { + // Otherwise, only use concurrency, if it would be at least two packets. + + // This is the best reasonable guess we can make. + concurrency64 := remain/int64(f.c.maxPacket) + 1 + + // We need to cap this value to an `int` size value to avoid overflow on 32-bit machines. + // So, we may as well pre-cap it to `f.c.maxConcurrentRequests`. + if concurrency64 > int64(f.c.maxConcurrentRequests) { + concurrency64 = int64(f.c.maxConcurrentRequests) + } + + return f.ReadFromWithConcurrency(r, int(concurrency64)) } - res := <-ch - inFlight-- - if res.err != nil { - firstErr = res.err - continue + } + + ch := make(chan result, 1) // reusable channel + + b := make([]byte, f.c.maxPacket) + + var read int64 + for { + n, err := r.Read(b) + if n < 0 { + panic("sftp.File: reader returned negative count from Read") } - switch res.typ { - case ssh_FXP_STATUS: - id, _ := unmarshalUint32(res.data) - err := normaliseError(unmarshalStatus(id, res.data)) - if err != nil && firstErr == nil { - firstErr = err - break + + if n > 0 { + read += int64(n) + + m, err2 := f.writeChunkAt(ch, b[:n], f.offset) + f.offset += int64(m) + + if err == nil { + err = err2 } - if desiredInFlight < f.c.maxConcurrentRequests { - desiredInFlight++ + } + + if err != nil { + if err == io.EOF { + return read, nil // return nil explicitly. } - default: - firstErr = unimplementedPacketErr(res.typ) + + return read, err } } - if firstErr == io.EOF { - firstErr = nil - } - // If error is non-nil, then there may be gaps in the data written to - // the file so it's best to return 0 so the caller can't make any - // incorrect assumptions about the state of the file. - if firstErr != nil { - read = 0 - } - f.offset += uint64(read) - return read, firstErr } // Seek implements io.Seeker by setting the client offset for the next Read or // Write. It returns the next offset read. Seeking before or after the end of // the file is undefined. Seeking relative to the end calls Stat. func (f *File) Seek(offset int64, whence int) (int64, error) { + f.mu.Lock() + defer f.mu.Unlock() + switch whence { case io.SeekStart: - f.offset = uint64(offset) case io.SeekCurrent: - f.offset = uint64(int64(f.offset) + offset) + offset += f.offset case io.SeekEnd: fi, err := f.Stat() if err != nil { - return int64(f.offset), err + return f.offset, err } - f.offset = uint64(fi.Size() + offset) + offset += fi.Size() default: - return int64(f.offset), unimplementedSeekWhence(whence) + return f.offset, unimplementedSeekWhence(whence) + } + + if offset < 0 { + return f.offset, os.ErrInvalid } - return int64(f.offset), nil + + f.offset = offset + return f.offset, nil } // Chown changes the uid/gid of the current file. @@ -1193,16 +1783,39 @@ func (f *File) Chown(uid, gid int) error { } // Chmod changes the permissions of the current file. +// +// See Client.Chmod for details. func (f *File) Chmod(mode os.FileMode) error { - return f.c.Chmod(f.path, mode) + return f.c.setfstat(f.handle, sshFileXferAttrPermissions, toChmodPerm(mode)) +} + +// Sync requests a flush of the contents of a File to stable storage. +// +// Sync requires the server to support the fsync@openssh.com extension. +func (f *File) Sync() error { + id := f.c.nextID() + typ, data, err := f.c.sendPacket(nil, &sshFxpFsyncPacket{ + ID: id, + Handle: f.handle, + }) + + switch { + case err != nil: + return err + case typ == sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return &unexpectedPacketErr{want: sshFxpStatus, got: typ} + } } // Truncate sets the size of the current file. Although it may be safely assumed // that if the size is less than its current size it will be truncated to fit, // the SFTP protocol does not specify what behavior the server should do when setting // size greater than the current size. +// We send a SSH_FXP_FSETSTAT here since we have a file handle func (f *File) Truncate(size int64) error { - return f.c.Truncate(f.path, size) + return f.c.setfstat(f.handle, sshFileXferAttrSize, uint64(size)) } func min(a, b int) int { @@ -1218,11 +1831,13 @@ func normaliseError(err error) error { switch err := err.(type) { case *StatusError: switch err.Code { - case ssh_FX_EOF: + case sshFxEOF: return io.EOF - case ssh_FX_NO_SUCH_FILE: + case sshFxNoSuchFile: return os.ErrNotExist - case ssh_FX_OK: + case sshFxPermissionDenied: + return os.ErrPermission + case sshFxOk: return nil default: return err @@ -1260,24 +1875,46 @@ func flags(f int) uint32 { var out uint32 switch f & os.O_WRONLY { case os.O_WRONLY: - out |= ssh_FXF_WRITE + out |= sshFxfWrite case os.O_RDONLY: - out |= ssh_FXF_READ + out |= sshFxfRead } if f&os.O_RDWR == os.O_RDWR { - out |= ssh_FXF_READ | ssh_FXF_WRITE + out |= sshFxfRead | sshFxfWrite } if f&os.O_APPEND == os.O_APPEND { - out |= ssh_FXF_APPEND + out |= sshFxfAppend } if f&os.O_CREATE == os.O_CREATE { - out |= ssh_FXF_CREAT + out |= sshFxfCreat } if f&os.O_TRUNC == os.O_TRUNC { - out |= ssh_FXF_TRUNC + out |= sshFxfTrunc } if f&os.O_EXCL == os.O_EXCL { - out |= ssh_FXF_EXCL + out |= sshFxfExcl } return out } + +// toChmodPerm converts Go permission bits to POSIX permission bits. +// +// This differs from fromFileMode in that we preserve the POSIX versions of +// setuid, setgid and sticky in m, because we've historically supported those +// bits, and we mask off any non-permission bits. +func toChmodPerm(m os.FileMode) (perm uint32) { + const mask = os.ModePerm | s_ISUID | s_ISGID | s_ISVTX + perm = uint32(m & mask) + + if m&os.ModeSetuid != 0 { + perm |= s_ISUID + } + if m&os.ModeSetgid != 0 { + perm |= s_ISGID + } + if m&os.ModeSticky != 0 { + perm |= s_ISVTX + } + + return perm +} diff --git a/vendor/github.com/pkg/sftp/conn.go b/vendor/github.com/pkg/sftp/conn.go index 62e585e82b..dcca260338 100644 --- a/vendor/github.com/pkg/sftp/conn.go +++ b/vendor/github.com/pkg/sftp/conn.go @@ -13,27 +13,34 @@ import ( type conn struct { io.Reader io.WriteCloser + // this is the same allocator used in packet manager + alloc *allocator sync.Mutex // used to serialise writes to sendPacket - // sendPacketTest is needed to replicate packet issues in testing - sendPacketTest func(w io.Writer, m encoding.BinaryMarshaler) error } -func (c *conn) recvPacket() (uint8, []byte, error) { - return recvPacket(c) +// the orderID is used in server mode if the allocator is enabled. +// For the client mode just pass 0 +func (c *conn) recvPacket(orderID uint32) (uint8, []byte, error) { + return recvPacket(c, c.alloc, orderID) } func (c *conn) sendPacket(m encoding.BinaryMarshaler) error { c.Lock() defer c.Unlock() - if c.sendPacketTest != nil { - return c.sendPacketTest(c, m) - } + return sendPacket(c, m) } +func (c *conn) Close() error { + c.Lock() + defer c.Unlock() + return c.WriteCloser.Close() +} + type clientConn struct { conn - wg sync.WaitGroup + wg sync.WaitGroup + sync.Mutex // protects inflight inflight map[uint32]chan<- result // outstanding requests @@ -66,31 +73,56 @@ func (c *clientConn) loop() { // recv continuously reads from the server and forwards responses to the // appropriate channel. func (c *clientConn) recv() error { - defer func() { - c.conn.Lock() - c.conn.Close() - c.conn.Unlock() - }() + defer c.conn.Close() + for { - typ, data, err := c.recvPacket() + typ, data, err := c.recvPacket(0) if err != nil { return err } - sid, _ := unmarshalUint32(data) - c.Lock() - ch, ok := c.inflight[sid] - delete(c.inflight, sid) - c.Unlock() + sid, _, err := unmarshalUint32Safe(data) + if err != nil { + return err + } + + ch, ok := c.getChannel(sid) if !ok { // This is an unexpected occurrence. Send the error // back to all listeners so that they terminate // gracefully. - return errors.Errorf("sid: %v not fond", sid) + return errors.Errorf("sid not found: %d", sid) } + ch <- result{typ: typ, data: data} } } +func (c *clientConn) putChannel(ch chan<- result, sid uint32) bool { + c.Lock() + defer c.Unlock() + + select { + case <-c.closed: + // already closed with broadcastErr, return error on chan. + ch <- result{err: ErrSSHFxConnectionLost} + return false + default: + } + + c.inflight[sid] = ch + return true +} + +func (c *clientConn) getChannel(sid uint32) (chan<- result, bool) { + c.Lock() + defer c.Unlock() + + ch, ok := c.inflight[sid] + delete(c.inflight, sid) + + return ch, ok +} + // result captures the result of receiving the a packet from the server type result struct { typ byte @@ -103,36 +135,48 @@ type idmarshaler interface { encoding.BinaryMarshaler } -func (c *clientConn) sendPacket(p idmarshaler) (byte, []byte, error) { - ch := make(chan result, 2) +func (c *clientConn) sendPacket(ch chan result, p idmarshaler) (byte, []byte, error) { + if cap(ch) < 1 { + ch = make(chan result, 1) + } + c.dispatchRequest(ch, p) s := <-ch return s.typ, s.data, s.err } +// dispatchRequest should ideally only be called by race-detection tests outside of this file, +// where you have to ensure two packets are in flight sequentially after each other. func (c *clientConn) dispatchRequest(ch chan<- result, p idmarshaler) { - c.Lock() - c.inflight[p.id()] = ch - c.Unlock() + sid := p.id() + + if !c.putChannel(ch, sid) { + // already closed. + return + } + if err := c.conn.sendPacket(p); err != nil { - c.Lock() - delete(c.inflight, p.id()) - c.Unlock() - ch <- result{err: err} + if ch, ok := c.getChannel(sid); ok { + ch <- result{err: err} + } } } // broadcastErr sends an error to all goroutines waiting for a response. func (c *clientConn) broadcastErr(err error) { c.Lock() - listeners := make([]chan<- result, 0, len(c.inflight)) - for _, ch := range c.inflight { - listeners = append(listeners, ch) - } - c.Unlock() - for _, ch := range listeners { - ch <- result{err: err} + defer c.Unlock() + + bcastRes := result{err: ErrSSHFxConnectionLost} + for sid, ch := range c.inflight { + ch <- bcastRes + + // Replace the chan in inflight, + // we have hijacked this chan, + // and this guarantees always-only-once sending. + c.inflight[sid] = make(chan<- result, 1) } + c.err = err close(c.closed) } @@ -141,6 +185,6 @@ type serverConn struct { conn } -func (s *serverConn) sendError(p ider, err error) error { - return s.sendPacket(statusFromError(p, err)) +func (s *serverConn) sendError(id uint32, err error) error { + return s.sendPacket(statusFromError(id, err)) } diff --git a/vendor/github.com/pkg/sftp/fuzz.go b/vendor/github.com/pkg/sftp/fuzz.go new file mode 100644 index 0000000000..169aebc284 --- /dev/null +++ b/vendor/github.com/pkg/sftp/fuzz.go @@ -0,0 +1,22 @@ +// +build gofuzz + +package sftp + +import "bytes" + +type sinkfuzz struct{} + +func (*sinkfuzz) Close() error { return nil } +func (*sinkfuzz) Write(p []byte) (int, error) { return len(p), nil } + +var devnull = &sinkfuzz{} + +// To run: go-fuzz-build && go-fuzz +func Fuzz(data []byte) int { + c, err := NewClientPipe(bytes.NewReader(data), devnull) + if err != nil { + return 0 + } + c.Close() + return 1 +} diff --git a/vendor/github.com/pkg/sftp/go.mod b/vendor/github.com/pkg/sftp/go.mod index 77784cd25c..edaba76afe 100644 --- a/vendor/github.com/pkg/sftp/go.mod +++ b/vendor/github.com/pkg/sftp/go.mod @@ -1,10 +1,11 @@ module github.com/pkg/sftp -go 1.12 +go 1.15 require ( github.com/kr/fs v0.1.0 - github.com/pkg/errors v0.8.1 - github.com/stretchr/testify v1.4.0 - golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 + github.com/pkg/errors v0.9.1 + github.com/stretchr/testify v1.7.0 + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b + golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7 // indirect ) diff --git a/vendor/github.com/pkg/sftp/go.sum b/vendor/github.com/pkg/sftp/go.sum index 0904ba5afd..dc0831d6b1 100644 --- a/vendor/github.com/pkg/sftp/go.sum +++ b/vendor/github.com/pkg/sftp/go.sum @@ -2,22 +2,24 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7 h1:iGu644GcxtEcrInvDsQRCwJjtCIOlT2V7IRt6ah2Whw= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vendor/github.com/pkg/sftp/match.go b/vendor/github.com/pkg/sftp/match.go index e2f2ba409e..875006afdb 100644 --- a/vendor/github.com/pkg/sftp/match.go +++ b/vendor/github.com/pkg/sftp/match.go @@ -3,198 +3,39 @@ package sftp import ( "path" "strings" - "unicode/utf8" ) // ErrBadPattern indicates a globbing pattern was malformed. var ErrBadPattern = path.ErrBadPattern -// Unix separator -const separator = "/" - -// Match reports whether name matches the shell file name pattern. -// The pattern syntax is: -// -// pattern: -// { term } -// term: -// '*' matches any sequence of non-Separator characters -// '?' matches any single non-Separator character -// '[' [ '^' ] { character-range } ']' -// character class (must be non-empty) -// c matches character c (c != '*', '?', '\\', '[') -// '\\' c matches character c -// -// character-range: -// c matches character c (c != '\\', '-', ']') -// '\\' c matches character c -// lo '-' hi matches character c for lo <= c <= hi -// -// Match requires pattern to match all of name, not just a substring. -// The only possible returned error is ErrBadPattern, when pattern -// is malformed. -// +// Match reports whether name matches the shell pattern. // +// This is an alias for path.Match from the standard library, +// offered so that callers need not import the path package. +// For details, see https://golang.org/pkg/path/#Match. func Match(pattern, name string) (matched bool, err error) { return path.Match(pattern, name) } // detect if byte(char) is path separator func isPathSeparator(c byte) bool { - return string(c) == "/" -} - -// scanChunk gets the next segment of pattern, which is a non-star string -// possibly preceded by a star. -func scanChunk(pattern string) (star bool, chunk, rest string) { - for len(pattern) > 0 && pattern[0] == '*' { - pattern = pattern[1:] - star = true - } - inrange := false - var i int -Scan: - for i = 0; i < len(pattern); i++ { - switch pattern[i] { - case '\\': - - // error check handled in matchChunk: bad pattern. - if i+1 < len(pattern) { - i++ - } - case '[': - inrange = true - case ']': - inrange = false - case '*': - if !inrange { - break Scan - } - } - } - return star, pattern[0:i], pattern[i:] + return c == '/' } -// matchChunk checks whether chunk matches the beginning of s. -// If so, it returns the remainder of s (after the match). -// Chunk is all single-character operators: literals, char classes, and ?. -func matchChunk(chunk, s string) (rest string, ok bool, err error) { - for len(chunk) > 0 { - if len(s) == 0 { - return - } - switch chunk[0] { - case '[': - // character class - r, n := utf8.DecodeRuneInString(s) - s = s[n:] - chunk = chunk[1:] - // We can't end right after '[', we're expecting at least - // a closing bracket and possibly a caret. - if len(chunk) == 0 { - err = ErrBadPattern - return - } - // possibly negated - negated := chunk[0] == '^' - if negated { - chunk = chunk[1:] - } - // parse all ranges - match := false - nrange := 0 - for { - if len(chunk) > 0 && chunk[0] == ']' && nrange > 0 { - chunk = chunk[1:] - break - } - var lo, hi rune - if lo, chunk, err = getEsc(chunk); err != nil { - return - } - hi = lo - if chunk[0] == '-' { - if hi, chunk, err = getEsc(chunk[1:]); err != nil { - return - } - } - if lo <= r && r <= hi { - match = true - } - nrange++ - } - if match == negated { - return - } - - case '?': - if isPathSeparator(s[0]) { - return - } - _, n := utf8.DecodeRuneInString(s) - s = s[n:] - chunk = chunk[1:] - - case '\\': - chunk = chunk[1:] - if len(chunk) == 0 { - err = ErrBadPattern - return - } - fallthrough - - default: - if chunk[0] != s[0] { - return - } - s = s[1:] - chunk = chunk[1:] - } - } - return s, true, nil -} - -// getEsc gets a possibly-escaped character from chunk, for a character class. -func getEsc(chunk string) (r rune, nchunk string, err error) { - if len(chunk) == 0 || chunk[0] == '-' || chunk[0] == ']' { - err = ErrBadPattern - return - } - if chunk[0] == '\\' { - chunk = chunk[1:] - if len(chunk) == 0 { - err = ErrBadPattern - return - } - } - r, n := utf8.DecodeRuneInString(chunk) - if r == utf8.RuneError && n == 1 { - err = ErrBadPattern - } - nchunk = chunk[n:] - if len(nchunk) == 0 { - err = ErrBadPattern - } - return -} - -// Split splits path immediately following the final Separator, +// Split splits the path p immediately following the final slash, // separating it into a directory and file name component. -// If there is no Separator in path, Split returns an empty dir -// and file set to path. -// The returned values have the property that path = dir+file. -func Split(path string) (dir, file string) { - i := len(path) - 1 - for i >= 0 && !isPathSeparator(path[i]) { - i-- - } - return path[:i+1], path[i+1:] +// +// This is an alias for path.Split from the standard library, +// offered so that callers need not import the path package. +// For details, see https://golang.org/pkg/path/#Split. +func Split(p string) (dir, file string) { + return path.Split(p) } // Glob returns the names of all files matching pattern or nil // if there is no matching file. The syntax of patterns is the same // as in Match. The pattern may describe hierarchical names such as -// /usr/*/bin/ed (assuming the Separator is '/'). +// /usr/*/bin/ed. // // Glob ignores file system errors such as I/O errors reading directories. // The only possible returned error is ErrBadPattern, when pattern @@ -241,8 +82,7 @@ func cleanGlobPath(path string) string { switch path { case "": return "." - case string(separator): - // do nothing to the path + case "/": return path default: return path[0 : len(path)-1] // chop off trailing separator @@ -280,9 +120,12 @@ func (c *Client) glob(dir, pattern string, matches []string) (m []string, e erro return } -// Join joins any number of path elements into a single path, adding -// a Separator if necessary. -// all empty strings are ignored. +// Join joins any number of path elements into a single path, separating +// them with slashes. +// +// This is an alias for path.Join from the standard library, +// offered so that callers need not import the path package. +// For details, see https://golang.org/pkg/path/#Join. func Join(elem ...string) string { return path.Join(elem...) } @@ -290,6 +133,5 @@ func Join(elem ...string) string { // hasMeta reports whether path contains any of the magic characters // recognized by Match. func hasMeta(path string) bool { - // TODO(niemeyer): Should other magic characters be added here? - return strings.ContainsAny(path, "*?[") + return strings.ContainsAny(path, "\\*?[") } diff --git a/vendor/github.com/pkg/sftp/packet-manager.go b/vendor/github.com/pkg/sftp/packet-manager.go index 2f3be10a62..c740c4c8c9 100644 --- a/vendor/github.com/pkg/sftp/packet-manager.go +++ b/vendor/github.com/pkg/sftp/packet-manager.go @@ -18,6 +18,8 @@ type packetManager struct { sender packetSender // connection object working *sync.WaitGroup packetCount uint32 + // it is not nil if the allocator is enabled + alloc *allocator } type packetSender interface { @@ -39,21 +41,29 @@ func newPktMgr(sender packetSender) *packetManager { } //// packet ordering -func (s *packetManager) newOrderId() uint32 { +func (s *packetManager) newOrderID() uint32 { s.packetCount++ return s.packetCount } +// returns the next orderID without incrementing it. +// This is used before receiving a new packet, with the allocator enabled, to associate +// the slice allocated for the received packet with the orderID that will be used to mark +// the allocated slices for reuse once the request is served +func (s *packetManager) getNextOrderID() uint32 { + return s.packetCount + 1 +} + type orderedRequest struct { requestPacket orderid uint32 } func (s *packetManager) newOrderedRequest(p requestPacket) orderedRequest { - return orderedRequest{requestPacket: p, orderid: s.newOrderId()} + return orderedRequest{requestPacket: p, orderid: s.newOrderID()} } -func (p orderedRequest) orderId() uint32 { return p.orderid } -func (p orderedRequest) setOrderId(oid uint32) { p.orderid = oid } +func (p orderedRequest) orderID() uint32 { return p.orderid } +func (p orderedRequest) setOrderID(oid uint32) { p.orderid = oid } type orderedResponse struct { responsePacket @@ -64,18 +74,18 @@ func (s *packetManager) newOrderedResponse(p responsePacket, id uint32, ) orderedResponse { return orderedResponse{responsePacket: p, orderid: id} } -func (p orderedResponse) orderId() uint32 { return p.orderid } -func (p orderedResponse) setOrderId(oid uint32) { p.orderid = oid } +func (p orderedResponse) orderID() uint32 { return p.orderid } +func (p orderedResponse) setOrderID(oid uint32) { p.orderid = oid } type orderedPacket interface { id() uint32 - orderId() uint32 + orderID() uint32 } type orderedPackets []orderedPacket func (o orderedPackets) Sort() { sort.Slice(o, func(i, j int) bool { - return o[i].orderId() < o[j].orderId() + return o[i].orderID() < o[j].orderID() }) } @@ -104,7 +114,6 @@ func (s *packetManager) close() { // maximizing throughput of file transfers. func (s *packetManager) workerChan(runWorker func(chan orderedRequest), ) chan orderedRequest { - // multiple workers for faster read/writes rwChan := make(chan orderedRequest, SftpServerWorkerCount) for i := 0; i < SftpServerWorkerCount; i++ { @@ -145,11 +154,11 @@ func (s *packetManager) controller() { for { select { case pkt := <-s.requests: - debug("incoming id (oid): %v (%v)", pkt.id(), pkt.orderId()) + debug("incoming id (oid): %v (%v)", pkt.id(), pkt.orderID()) s.incoming = append(s.incoming, pkt) s.incoming.Sort() case pkt := <-s.responses: - debug("outgoing id (oid): %v (%v)", pkt.id(), pkt.orderId()) + debug("outgoing id (oid): %v (%v)", pkt.id(), pkt.orderID()) s.outgoing = append(s.outgoing, pkt) s.outgoing.Sort() case <-s.fini: @@ -171,9 +180,13 @@ func (s *packetManager) maybeSendPackets() { in := s.incoming[0] // debug("incoming: %v", ids(s.incoming)) // debug("outgoing: %v", ids(s.outgoing)) - if in.orderId() == out.orderId() { + if in.orderID() == out.orderID() { debug("Sending packet: %v", out.id()) s.sender.sendPacket(out.(encoding.BinaryMarshaler)) + if s.alloc != nil { + // mark for reuse the slices allocated for this request + s.alloc.ReleasePages(in.orderID()) + } // pop off heads copy(s.incoming, s.incoming[1:]) // shift left s.incoming[len(s.incoming)-1] = nil // clear last diff --git a/vendor/github.com/pkg/sftp/packet-typing.go b/vendor/github.com/pkg/sftp/packet-typing.go index bcff9bf339..da5c2bc687 100644 --- a/vendor/github.com/pkg/sftp/packet-typing.go +++ b/vendor/github.com/pkg/sftp/packet-typing.go @@ -34,93 +34,95 @@ type notReadOnly interface { //// define types by adding methods // hasPath -func (p sshFxpLstatPacket) getPath() string { return p.Path } -func (p sshFxpStatPacket) getPath() string { return p.Path } -func (p sshFxpRmdirPacket) getPath() string { return p.Path } -func (p sshFxpReadlinkPacket) getPath() string { return p.Path } -func (p sshFxpRealpathPacket) getPath() string { return p.Path } -func (p sshFxpMkdirPacket) getPath() string { return p.Path } -func (p sshFxpSetstatPacket) getPath() string { return p.Path } -func (p sshFxpStatvfsPacket) getPath() string { return p.Path } -func (p sshFxpRemovePacket) getPath() string { return p.Filename } -func (p sshFxpRenamePacket) getPath() string { return p.Oldpath } -func (p sshFxpSymlinkPacket) getPath() string { return p.Targetpath } -func (p sshFxpOpendirPacket) getPath() string { return p.Path } -func (p sshFxpOpenPacket) getPath() string { return p.Path } +func (p *sshFxpLstatPacket) getPath() string { return p.Path } +func (p *sshFxpStatPacket) getPath() string { return p.Path } +func (p *sshFxpRmdirPacket) getPath() string { return p.Path } +func (p *sshFxpReadlinkPacket) getPath() string { return p.Path } +func (p *sshFxpRealpathPacket) getPath() string { return p.Path } +func (p *sshFxpMkdirPacket) getPath() string { return p.Path } +func (p *sshFxpSetstatPacket) getPath() string { return p.Path } +func (p *sshFxpStatvfsPacket) getPath() string { return p.Path } +func (p *sshFxpRemovePacket) getPath() string { return p.Filename } +func (p *sshFxpRenamePacket) getPath() string { return p.Oldpath } +func (p *sshFxpSymlinkPacket) getPath() string { return p.Targetpath } +func (p *sshFxpOpendirPacket) getPath() string { return p.Path } +func (p *sshFxpOpenPacket) getPath() string { return p.Path } -func (p sshFxpExtendedPacketPosixRename) getPath() string { return p.Oldpath } +func (p *sshFxpExtendedPacketPosixRename) getPath() string { return p.Oldpath } +func (p *sshFxpExtendedPacketHardlink) getPath() string { return p.Oldpath } -// hasHandle -func (p sshFxpFstatPacket) getHandle() string { return p.Handle } -func (p sshFxpFsetstatPacket) getHandle() string { return p.Handle } -func (p sshFxpReadPacket) getHandle() string { return p.Handle } -func (p sshFxpWritePacket) getHandle() string { return p.Handle } -func (p sshFxpReaddirPacket) getHandle() string { return p.Handle } -func (p sshFxpClosePacket) getHandle() string { return p.Handle } +// getHandle +func (p *sshFxpFstatPacket) getHandle() string { return p.Handle } +func (p *sshFxpFsetstatPacket) getHandle() string { return p.Handle } +func (p *sshFxpReadPacket) getHandle() string { return p.Handle } +func (p *sshFxpWritePacket) getHandle() string { return p.Handle } +func (p *sshFxpReaddirPacket) getHandle() string { return p.Handle } +func (p *sshFxpClosePacket) getHandle() string { return p.Handle } // notReadOnly -func (p sshFxpWritePacket) notReadOnly() {} -func (p sshFxpSetstatPacket) notReadOnly() {} -func (p sshFxpFsetstatPacket) notReadOnly() {} -func (p sshFxpRemovePacket) notReadOnly() {} -func (p sshFxpMkdirPacket) notReadOnly() {} -func (p sshFxpRmdirPacket) notReadOnly() {} -func (p sshFxpRenamePacket) notReadOnly() {} -func (p sshFxpSymlinkPacket) notReadOnly() {} -func (p sshFxpExtendedPacketPosixRename) notReadOnly() {} +func (p *sshFxpWritePacket) notReadOnly() {} +func (p *sshFxpSetstatPacket) notReadOnly() {} +func (p *sshFxpFsetstatPacket) notReadOnly() {} +func (p *sshFxpRemovePacket) notReadOnly() {} +func (p *sshFxpMkdirPacket) notReadOnly() {} +func (p *sshFxpRmdirPacket) notReadOnly() {} +func (p *sshFxpRenamePacket) notReadOnly() {} +func (p *sshFxpSymlinkPacket) notReadOnly() {} +func (p *sshFxpExtendedPacketPosixRename) notReadOnly() {} +func (p *sshFxpExtendedPacketHardlink) notReadOnly() {} // some packets with ID are missing id() -func (p sshFxpDataPacket) id() uint32 { return p.ID } -func (p sshFxpStatusPacket) id() uint32 { return p.ID } -func (p sshFxpStatResponse) id() uint32 { return p.ID } -func (p sshFxpNamePacket) id() uint32 { return p.ID } -func (p sshFxpHandlePacket) id() uint32 { return p.ID } -func (p StatVFS) id() uint32 { return p.ID } -func (p sshFxVersionPacket) id() uint32 { return 0 } +func (p *sshFxpDataPacket) id() uint32 { return p.ID } +func (p *sshFxpStatusPacket) id() uint32 { return p.ID } +func (p *sshFxpStatResponse) id() uint32 { return p.ID } +func (p *sshFxpNamePacket) id() uint32 { return p.ID } +func (p *sshFxpHandlePacket) id() uint32 { return p.ID } +func (p *StatVFS) id() uint32 { return p.ID } +func (p *sshFxVersionPacket) id() uint32 { return 0 } // take raw incoming packet data and build packet objects func makePacket(p rxPacket) (requestPacket, error) { var pkt requestPacket switch p.pktType { - case ssh_FXP_INIT: + case sshFxpInit: pkt = &sshFxInitPacket{} - case ssh_FXP_LSTAT: + case sshFxpLstat: pkt = &sshFxpLstatPacket{} - case ssh_FXP_OPEN: + case sshFxpOpen: pkt = &sshFxpOpenPacket{} - case ssh_FXP_CLOSE: + case sshFxpClose: pkt = &sshFxpClosePacket{} - case ssh_FXP_READ: + case sshFxpRead: pkt = &sshFxpReadPacket{} - case ssh_FXP_WRITE: + case sshFxpWrite: pkt = &sshFxpWritePacket{} - case ssh_FXP_FSTAT: + case sshFxpFstat: pkt = &sshFxpFstatPacket{} - case ssh_FXP_SETSTAT: + case sshFxpSetstat: pkt = &sshFxpSetstatPacket{} - case ssh_FXP_FSETSTAT: + case sshFxpFsetstat: pkt = &sshFxpFsetstatPacket{} - case ssh_FXP_OPENDIR: + case sshFxpOpendir: pkt = &sshFxpOpendirPacket{} - case ssh_FXP_READDIR: + case sshFxpReaddir: pkt = &sshFxpReaddirPacket{} - case ssh_FXP_REMOVE: + case sshFxpRemove: pkt = &sshFxpRemovePacket{} - case ssh_FXP_MKDIR: + case sshFxpMkdir: pkt = &sshFxpMkdirPacket{} - case ssh_FXP_RMDIR: + case sshFxpRmdir: pkt = &sshFxpRmdirPacket{} - case ssh_FXP_REALPATH: + case sshFxpRealpath: pkt = &sshFxpRealpathPacket{} - case ssh_FXP_STAT: + case sshFxpStat: pkt = &sshFxpStatPacket{} - case ssh_FXP_RENAME: + case sshFxpRename: pkt = &sshFxpRenamePacket{} - case ssh_FXP_READLINK: + case sshFxpReadlink: pkt = &sshFxpReadlinkPacket{} - case ssh_FXP_SYMLINK: + case sshFxpSymlink: pkt = &sshFxpSymlinkPacket{} - case ssh_FXP_EXTENDED: + case sshFxpExtended: pkt = &sshFxpExtendedPacket{} default: return nil, errors.Errorf("unhandled packet type: %s", p.pktType) diff --git a/vendor/github.com/pkg/sftp/packet.go b/vendor/github.com/pkg/sftp/packet.go index c5c32fc23d..faf5ffd834 100644 --- a/vendor/github.com/pkg/sftp/packet.go +++ b/vendor/github.com/pkg/sftp/packet.go @@ -13,11 +13,13 @@ import ( ) var ( + errLongPacket = errors.New("packet too long") errShortPacket = errors.New("packet too short") errUnknownExtendedPacket = errors.New("unknown extended packet") ) const ( + maxMsgLength = 256 * 1024 debugDumpTxPacket = false debugDumpRxPacket = false debugDumpTxPacketBytes = false @@ -55,12 +57,12 @@ func marshal(b []byte, v interface{}) []byte { switch d := reflect.ValueOf(v); d.Kind() { case reflect.Struct: for i, n := 0, d.NumField(); i < n; i++ { - b = append(marshal(b, d.Field(i).Interface())) + b = marshal(b, d.Field(i).Interface()) } return b case reflect.Slice: for i, n := 0, d.Len(); i < n; i++ { - b = append(marshal(b, d.Index(i).Interface())) + b = marshal(b, d.Index(i).Interface()) } return b default: @@ -114,46 +116,80 @@ func unmarshalStringSafe(b []byte) (string, []byte, error) { return string(b[:n]), b[n:], nil } +type packetMarshaler interface { + marshalPacket() (header, payload []byte, err error) +} + +func marshalPacket(m encoding.BinaryMarshaler) (header, payload []byte, err error) { + if m, ok := m.(packetMarshaler); ok { + return m.marshalPacket() + } + + header, err = m.MarshalBinary() + return +} + // sendPacket marshals p according to RFC 4234. func sendPacket(w io.Writer, m encoding.BinaryMarshaler) error { - bb, err := m.MarshalBinary() + header, payload, err := marshalPacket(m) if err != nil { - return errors.Errorf("binary marshaller failed: %v", err) + return errors.Wrap(err, "binary marshaller failed") } + + length := len(header) + len(payload) - 4 // subtract the uint32(length) from the start if debugDumpTxPacketBytes { - debug("send packet: %s %d bytes %x", fxp(bb[0]), len(bb), bb[1:]) + debug("send packet: %s %d bytes %x%x", fxp(header[4]), length, header[5:], payload) } else if debugDumpTxPacket { - debug("send packet: %s %d bytes", fxp(bb[0]), len(bb)) + debug("send packet: %s %d bytes", fxp(header[4]), length) } - // Slide packet down 4 bytes to make room for length header. - packet := append(bb, make([]byte, 4)...) // optimistically assume bb has capacity - copy(packet[4:], bb) - binary.BigEndian.PutUint32(packet[:4], uint32(len(bb))) - _, err = w.Write(packet) - if err != nil { - return errors.Errorf("failed to send packet: %v", err) + binary.BigEndian.PutUint32(header[:4], uint32(length)) + + if _, err := w.Write(header); err != nil { + return errors.Wrap(err, "failed to send packet") } + + if len(payload) > 0 { + if _, err := w.Write(payload); err != nil { + return errors.Wrap(err, "failed to send packet payload") + } + } + return nil } -func recvPacket(r io.Reader) (uint8, []byte, error) { - var b = []byte{0, 0, 0, 0} - if _, err := io.ReadFull(r, b); err != nil { +func recvPacket(r io.Reader, alloc *allocator, orderID uint32) (uint8, []byte, error) { + var b []byte + if alloc != nil { + b = alloc.GetPage(orderID) + } else { + b = make([]byte, 4) + } + if _, err := io.ReadFull(r, b[:4]); err != nil { return 0, nil, err } - l, _ := unmarshalUint32(b) - b = make([]byte, l) - if _, err := io.ReadFull(r, b); err != nil { - debug("recv packet %d bytes: err %v", l, err) + length, _ := unmarshalUint32(b) + if length > maxMsgLength { + debug("recv packet %d bytes too long", length) + return 0, nil, errLongPacket + } + if length == 0 { + debug("recv packet of 0 bytes too short") + return 0, nil, errShortPacket + } + if alloc == nil { + b = make([]byte, length) + } + if _, err := io.ReadFull(r, b[:length]); err != nil { + debug("recv packet %d bytes: err %v", length, err) return 0, nil, err } if debugDumpRxPacketBytes { - debug("recv packet: %s %d bytes %x", fxp(b[0]), l, b[1:]) + debug("recv packet: %s %d bytes %x", fxp(b[0]), length, b[1:length]) } else if debugDumpRxPacket { - debug("recv packet: %s %d bytes", fxp(b[0]), l) + debug("recv packet: %s %d bytes", fxp(b[0]), length) } - return b[0], b[1:], nil + return b[0], b[1:length], nil } type extensionPair struct { @@ -182,19 +218,21 @@ type sshFxInitPacket struct { Extensions []extensionPair } -func (p sshFxInitPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 // byte + uint32 +func (p *sshFxInitPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version) for _, e := range p.Extensions { l += 4 + len(e.Name) + 4 + len(e.Data) } - b := make([]byte, 0, l) - b = append(b, ssh_FXP_INIT) + b := make([]byte, 4, l) + b = append(b, sshFxpInit) b = marshalUint32(b, p.Version) + for _, e := range p.Extensions { b = marshalString(b, e.Name) b = marshalString(b, e.Data) } + return b, nil } @@ -216,35 +254,40 @@ func (p *sshFxInitPacket) UnmarshalBinary(b []byte) error { type sshFxVersionPacket struct { Version uint32 - Extensions []struct { - Name, Data string - } + Extensions []sshExtensionPair +} + +type sshExtensionPair struct { + Name, Data string } -func (p sshFxVersionPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 // byte + uint32 +func (p *sshFxVersionPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version) for _, e := range p.Extensions { l += 4 + len(e.Name) + 4 + len(e.Data) } - b := make([]byte, 0, l) - b = append(b, ssh_FXP_VERSION) + b := make([]byte, 4, l) + b = append(b, sshFxpVersion) b = marshalUint32(b, p.Version) + for _, e := range p.Extensions { b = marshalString(b, e.Name) b = marshalString(b, e.Data) } + return b, nil } -func marshalIDString(packetType byte, id uint32, str string) ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func marshalIDStringPacket(packetType byte, id uint32, str string) ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(str) - b := make([]byte, 0, l) + b := make([]byte, 4, l) b = append(b, packetType) b = marshalUint32(b, id) b = marshalString(b, str) + return b, nil } @@ -263,10 +306,10 @@ type sshFxpReaddirPacket struct { Handle string } -func (p sshFxpReaddirPacket) id() uint32 { return p.ID } +func (p *sshFxpReaddirPacket) id() uint32 { return p.ID } -func (p sshFxpReaddirPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_READDIR, p.ID, p.Handle) +func (p *sshFxpReaddirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpReaddir, p.ID, p.Handle) } func (p *sshFxpReaddirPacket) UnmarshalBinary(b []byte) error { @@ -278,10 +321,10 @@ type sshFxpOpendirPacket struct { Path string } -func (p sshFxpOpendirPacket) id() uint32 { return p.ID } +func (p *sshFxpOpendirPacket) id() uint32 { return p.ID } -func (p sshFxpOpendirPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_OPENDIR, p.ID, p.Path) +func (p *sshFxpOpendirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpOpendir, p.ID, p.Path) } func (p *sshFxpOpendirPacket) UnmarshalBinary(b []byte) error { @@ -293,10 +336,10 @@ type sshFxpLstatPacket struct { Path string } -func (p sshFxpLstatPacket) id() uint32 { return p.ID } +func (p *sshFxpLstatPacket) id() uint32 { return p.ID } -func (p sshFxpLstatPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_LSTAT, p.ID, p.Path) +func (p *sshFxpLstatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpLstat, p.ID, p.Path) } func (p *sshFxpLstatPacket) UnmarshalBinary(b []byte) error { @@ -308,10 +351,10 @@ type sshFxpStatPacket struct { Path string } -func (p sshFxpStatPacket) id() uint32 { return p.ID } +func (p *sshFxpStatPacket) id() uint32 { return p.ID } -func (p sshFxpStatPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_STAT, p.ID, p.Path) +func (p *sshFxpStatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpStat, p.ID, p.Path) } func (p *sshFxpStatPacket) UnmarshalBinary(b []byte) error { @@ -323,10 +366,10 @@ type sshFxpFstatPacket struct { Handle string } -func (p sshFxpFstatPacket) id() uint32 { return p.ID } +func (p *sshFxpFstatPacket) id() uint32 { return p.ID } -func (p sshFxpFstatPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_FSTAT, p.ID, p.Handle) +func (p *sshFxpFstatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpFstat, p.ID, p.Handle) } func (p *sshFxpFstatPacket) UnmarshalBinary(b []byte) error { @@ -338,10 +381,10 @@ type sshFxpClosePacket struct { Handle string } -func (p sshFxpClosePacket) id() uint32 { return p.ID } +func (p *sshFxpClosePacket) id() uint32 { return p.ID } -func (p sshFxpClosePacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_CLOSE, p.ID, p.Handle) +func (p *sshFxpClosePacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpClose, p.ID, p.Handle) } func (p *sshFxpClosePacket) UnmarshalBinary(b []byte) error { @@ -353,10 +396,10 @@ type sshFxpRemovePacket struct { Filename string } -func (p sshFxpRemovePacket) id() uint32 { return p.ID } +func (p *sshFxpRemovePacket) id() uint32 { return p.ID } -func (p sshFxpRemovePacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_REMOVE, p.ID, p.Filename) +func (p *sshFxpRemovePacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRemove, p.ID, p.Filename) } func (p *sshFxpRemovePacket) UnmarshalBinary(b []byte) error { @@ -368,10 +411,10 @@ type sshFxpRmdirPacket struct { Path string } -func (p sshFxpRmdirPacket) id() uint32 { return p.ID } +func (p *sshFxpRmdirPacket) id() uint32 { return p.ID } -func (p sshFxpRmdirPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_RMDIR, p.ID, p.Path) +func (p *sshFxpRmdirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRmdir, p.ID, p.Path) } func (p *sshFxpRmdirPacket) UnmarshalBinary(b []byte) error { @@ -384,18 +427,19 @@ type sshFxpSymlinkPacket struct { Linkpath string } -func (p sshFxpSymlinkPacket) id() uint32 { return p.ID } +func (p *sshFxpSymlinkPacket) id() uint32 { return p.ID } -func (p sshFxpSymlinkPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpSymlinkPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Targetpath) + 4 + len(p.Linkpath) - b := make([]byte, 0, l) - b = append(b, ssh_FXP_SYMLINK) + b := make([]byte, 4, l) + b = append(b, sshFxpSymlink) b = marshalUint32(b, p.ID) b = marshalString(b, p.Targetpath) b = marshalString(b, p.Linkpath) + return b, nil } @@ -411,15 +455,40 @@ func (p *sshFxpSymlinkPacket) UnmarshalBinary(b []byte) error { return nil } +type sshFxpHardlinkPacket struct { + ID uint32 + Oldpath string + Newpath string +} + +func (p *sshFxpHardlinkPacket) id() uint32 { return p.ID } + +func (p *sshFxpHardlinkPacket) MarshalBinary() ([]byte, error) { + const ext = "hardlink@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Oldpath) + + 4 + len(p.Newpath) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Oldpath) + b = marshalString(b, p.Newpath) + + return b, nil +} + type sshFxpReadlinkPacket struct { ID uint32 Path string } -func (p sshFxpReadlinkPacket) id() uint32 { return p.ID } +func (p *sshFxpReadlinkPacket) id() uint32 { return p.ID } -func (p sshFxpReadlinkPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_READLINK, p.ID, p.Path) +func (p *sshFxpReadlinkPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpReadlink, p.ID, p.Path) } func (p *sshFxpReadlinkPacket) UnmarshalBinary(b []byte) error { @@ -431,10 +500,10 @@ type sshFxpRealpathPacket struct { Path string } -func (p sshFxpRealpathPacket) id() uint32 { return p.ID } +func (p *sshFxpRealpathPacket) id() uint32 { return p.ID } -func (p sshFxpRealpathPacket) MarshalBinary() ([]byte, error) { - return marshalIDString(ssh_FXP_REALPATH, p.ID, p.Path) +func (p *sshFxpRealpathPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRealpath, p.ID, p.Path) } func (p *sshFxpRealpathPacket) UnmarshalBinary(b []byte) error { @@ -447,8 +516,8 @@ type sshFxpNameAttr struct { Attrs []interface{} } -func (p sshFxpNameAttr) MarshalBinary() ([]byte, error) { - b := []byte{} +func (p *sshFxpNameAttr) MarshalBinary() ([]byte, error) { + var b []byte b = marshalString(b, p.Name) b = marshalString(b, p.LongName) for _, attr := range p.Attrs { @@ -459,23 +528,34 @@ func (p sshFxpNameAttr) MarshalBinary() ([]byte, error) { type sshFxpNamePacket struct { ID uint32 - NameAttrs []sshFxpNameAttr + NameAttrs []*sshFxpNameAttr } -func (p sshFxpNamePacket) MarshalBinary() ([]byte, error) { - b := []byte{} - b = append(b, ssh_FXP_NAME) +func (p *sshFxpNamePacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpName) b = marshalUint32(b, p.ID) b = marshalUint32(b, uint32(len(p.NameAttrs))) + + var payload []byte for _, na := range p.NameAttrs { ab, err := na.MarshalBinary() if err != nil { - return nil, err + return nil, nil, err } - b = append(b, ab...) + payload = append(payload, ab...) } - return b, nil + + return b, payload, nil +} + +func (p *sshFxpNamePacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err } type sshFxpOpenPacket struct { @@ -485,19 +565,20 @@ type sshFxpOpenPacket struct { Flags uint32 // ignored } -func (p sshFxpOpenPacket) id() uint32 { return p.ID } +func (p *sshFxpOpenPacket) id() uint32 { return p.ID } -func (p sshFxpOpenPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + +func (p *sshFxpOpenPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Path) + 4 + 4 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_OPEN) + b := make([]byte, 4, l) + b = append(b, sshFxpOpen) b = marshalUint32(b, p.ID) b = marshalString(b, p.Path) b = marshalUint32(b, p.Pflags) b = marshalUint32(b, p.Flags) + return b, nil } @@ -517,24 +598,25 @@ func (p *sshFxpOpenPacket) UnmarshalBinary(b []byte) error { type sshFxpReadPacket struct { ID uint32 - Handle string - Offset uint64 Len uint32 + Offset uint64 + Handle string } -func (p sshFxpReadPacket) id() uint32 { return p.ID } +func (p *sshFxpReadPacket) id() uint32 { return p.ID } -func (p sshFxpReadPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpReadPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Handle) + 8 + 4 // uint64 + uint32 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_READ) + b := make([]byte, 4, l) + b = append(b, sshFxpRead) b = marshalUint32(b, p.ID) b = marshalString(b, p.Handle) b = marshalUint64(b, p.Offset) b = marshalUint32(b, p.Len) + return b, nil } @@ -552,24 +634,40 @@ func (p *sshFxpReadPacket) UnmarshalBinary(b []byte) error { return nil } +// We need allocate bigger slices with extra capacity to avoid a re-allocation in sshFxpDataPacket.MarshalBinary +// So, we need: uint32(length) + byte(type) + uint32(id) + uint32(data_length) +const dataHeaderLen = 4 + 1 + 4 + 4 + +func (p *sshFxpReadPacket) getDataSlice(alloc *allocator, orderID uint32) []byte { + dataLen := clamp(p.Len, maxTxPacket) + if alloc != nil { + // GetPage returns a slice with capacity = maxMsgLength this is enough to avoid new allocations in + // sshFxpDataPacket.MarshalBinary + return alloc.GetPage(orderID)[:dataLen] + } + // allocate with extra space for the header + return make([]byte, dataLen, dataLen+dataHeaderLen) +} + type sshFxpRenamePacket struct { ID uint32 Oldpath string Newpath string } -func (p sshFxpRenamePacket) id() uint32 { return p.ID } +func (p *sshFxpRenamePacket) id() uint32 { return p.ID } -func (p sshFxpRenamePacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpRenamePacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Oldpath) + 4 + len(p.Newpath) - b := make([]byte, 0, l) - b = append(b, ssh_FXP_RENAME) + b := make([]byte, 4, l) + b = append(b, sshFxpRename) b = marshalUint32(b, p.ID) b = marshalString(b, p.Oldpath) b = marshalString(b, p.Newpath) + return b, nil } @@ -591,48 +689,54 @@ type sshFxpPosixRenamePacket struct { Newpath string } -func (p sshFxpPosixRenamePacket) id() uint32 { return p.ID } +func (p *sshFxpPosixRenamePacket) id() uint32 { return p.ID } -func (p sshFxpPosixRenamePacket) MarshalBinary() ([]byte, error) { +func (p *sshFxpPosixRenamePacket) MarshalBinary() ([]byte, error) { const ext = "posix-rename@openssh.com" - l := 1 + 4 + // type(byte) + uint32 + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(ext) + 4 + len(p.Oldpath) + 4 + len(p.Newpath) - b := make([]byte, 0, l) - b = append(b, ssh_FXP_EXTENDED) + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) b = marshalUint32(b, p.ID) b = marshalString(b, ext) b = marshalString(b, p.Oldpath) b = marshalString(b, p.Newpath) + return b, nil } type sshFxpWritePacket struct { ID uint32 - Handle string - Offset uint64 Length uint32 + Offset uint64 + Handle string Data []byte } -func (p sshFxpWritePacket) id() uint32 { return p.ID } +func (p *sshFxpWritePacket) id() uint32 { return p.ID } -func (p sshFxpWritePacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpWritePacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Handle) + - 8 + 4 + // uint64 + uint32 - len(p.Data) + 8 + // uint64 + 4 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_WRITE) + b := make([]byte, 4, l) + b = append(b, sshFxpWrite) b = marshalUint32(b, p.ID) b = marshalString(b, p.Handle) b = marshalUint64(b, p.Offset) b = marshalUint32(b, p.Length) - b = append(b, p.Data...) - return b, nil + + return b, p.Data, nil +} + +func (p *sshFxpWritePacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err } func (p *sshFxpWritePacket) UnmarshalBinary(b []byte) error { @@ -649,28 +753,29 @@ func (p *sshFxpWritePacket) UnmarshalBinary(b []byte) error { return errShortPacket } - p.Data = append([]byte{}, b[:p.Length]...) + p.Data = b[:p.Length] return nil } type sshFxpMkdirPacket struct { ID uint32 - Path string Flags uint32 // ignored + Path string } -func (p sshFxpMkdirPacket) id() uint32 { return p.ID } +func (p *sshFxpMkdirPacket) id() uint32 { return p.ID } -func (p sshFxpMkdirPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpMkdirPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Path) + 4 // uint32 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_MKDIR) + b := make([]byte, 4, l) + b = append(b, sshFxpMkdir) b = marshalUint32(b, p.ID) b = marshalString(b, p.Path) b = marshalUint32(b, p.Flags) + return b, nil } @@ -688,47 +793,61 @@ func (p *sshFxpMkdirPacket) UnmarshalBinary(b []byte) error { type sshFxpSetstatPacket struct { ID uint32 - Path string Flags uint32 + Path string Attrs interface{} } type sshFxpFsetstatPacket struct { ID uint32 - Handle string Flags uint32 + Handle string Attrs interface{} } -func (p sshFxpSetstatPacket) id() uint32 { return p.ID } -func (p sshFxpFsetstatPacket) id() uint32 { return p.ID } +func (p *sshFxpSetstatPacket) id() uint32 { return p.ID } +func (p *sshFxpFsetstatPacket) id() uint32 { return p.ID } -func (p sshFxpSetstatPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpSetstatPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Path) + - 4 // uint32 + uint64 + 4 // uint32 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_SETSTAT) + b := make([]byte, 4, l) + b = append(b, sshFxpSetstat) b = marshalUint32(b, p.ID) b = marshalString(b, p.Path) b = marshalUint32(b, p.Flags) - b = marshal(b, p.Attrs) - return b, nil + + payload := marshal(nil, p.Attrs) + + return b, payload, nil +} + +func (p *sshFxpSetstatPacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err } -func (p sshFxpFsetstatPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 +func (p *sshFxpFsetstatPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) 4 + len(p.Handle) + - 4 // uint32 + uint64 + 4 // uint32 - b := make([]byte, 0, l) - b = append(b, ssh_FXP_FSETSTAT) + b := make([]byte, 4, l) + b = append(b, sshFxpFsetstat) b = marshalUint32(b, p.ID) b = marshalString(b, p.Handle) b = marshalUint32(b, p.Flags) - b = marshal(b, p.Attrs) - return b, nil + + payload := marshal(nil, p.Attrs) + + return b, payload, nil +} + +func (p *sshFxpFsetstatPacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err } func (p *sshFxpSetstatPacket) UnmarshalBinary(b []byte) error { @@ -762,10 +881,15 @@ type sshFxpHandlePacket struct { Handle string } -func (p sshFxpHandlePacket) MarshalBinary() ([]byte, error) { - b := []byte{ssh_FXP_HANDLE} +func (p *sshFxpHandlePacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Handle) + + b := make([]byte, 4, l) + b = append(b, sshFxpHandle) b = marshalUint32(b, p.ID) b = marshalString(b, p.Handle) + return b, nil } @@ -774,10 +898,17 @@ type sshFxpStatusPacket struct { StatusError } -func (p sshFxpStatusPacket) MarshalBinary() ([]byte, error) { - b := []byte{ssh_FXP_STATUS} +func (p *sshFxpStatusPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + 4 + len(p.StatusError.msg) + + 4 + len(p.StatusError.lang) + + b := make([]byte, 4, l) + b = append(b, sshFxpStatus) b = marshalUint32(b, p.ID) b = marshalStatus(b, p.StatusError) + return b, nil } @@ -787,11 +918,30 @@ type sshFxpDataPacket struct { Data []byte } -func (p sshFxpDataPacket) MarshalBinary() ([]byte, error) { - b := []byte{ssh_FXP_DATA} +func (p *sshFxpDataPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpData) b = marshalUint32(b, p.ID) b = marshalUint32(b, p.Length) - b = append(b, p.Data[:p.Length]...) + + return b, p.Data, nil +} + +// MarshalBinary encodes the receiver into a binary form and returns the result. +// To avoid a new allocation the Data slice must have a capacity >= Length + 9 +// +// This is hand-coded rather than just append(header, payload...), +// in order to try and reuse the r.Data backing store in the packet. +func (p *sshFxpDataPacket) MarshalBinary() ([]byte, error) { + b := append(p.Data, make([]byte, dataHeaderLen)...) + copy(b[dataHeaderLen:], p.Data[:p.Length]) + // b[0:4] will be overwritten with the length in sendPacket + b[4] = sshFxpData + binary.BigEndian.PutUint32(b[5:9], p.ID) + binary.BigEndian.PutUint32(b[9:13], p.Length) return b, nil } @@ -805,8 +955,7 @@ func (p *sshFxpDataPacket) UnmarshalBinary(b []byte) error { return errShortPacket } - p.Data = make([]byte, p.Length) - copy(p.Data, b) + p.Data = b[:p.Length] return nil } @@ -815,18 +964,20 @@ type sshFxpStatvfsPacket struct { Path string } -func (p sshFxpStatvfsPacket) id() uint32 { return p.ID } +func (p *sshFxpStatvfsPacket) id() uint32 { return p.ID } -func (p sshFxpStatvfsPacket) MarshalBinary() ([]byte, error) { - l := 1 + 4 + // type(byte) + uint32 - len(p.Path) + - len("statvfs@openssh.com") +func (p *sshFxpStatvfsPacket) MarshalBinary() ([]byte, error) { + const ext = "statvfs@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Path) - b := make([]byte, 0, l) - b = append(b, ssh_FXP_EXTENDED) + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) b = marshalUint32(b, p.ID) - b = marshalString(b, "statvfs@openssh.com") + b = marshalString(b, ext) b = marshalString(b, p.Path) + return b, nil } @@ -856,12 +1007,41 @@ func (p *StatVFS) FreeSpace() uint64 { return p.Frsize * p.Bfree } -// Convert to ssh_FXP_EXTENDED_REPLY packet binary format -func (p *StatVFS) MarshalBinary() ([]byte, error) { +// marshalPacket converts to ssh_FXP_EXTENDED_REPLY packet binary format +func (p *StatVFS) marshalPacket() ([]byte, []byte, error) { + header := []byte{0, 0, 0, 0, sshFxpExtendedReply} + var buf bytes.Buffer - buf.Write([]byte{ssh_FXP_EXTENDED_REPLY}) err := binary.Write(&buf, binary.BigEndian, p) - return buf.Bytes(), err + + return header, buf.Bytes(), err +} + +func (p *StatVFS) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +type sshFxpFsyncPacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpFsyncPacket) id() uint32 { return p.ID } + +func (p *sshFxpFsyncPacket) MarshalBinary() ([]byte, error) { + const ext = "fsync@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Handle) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Handle) + + return b, nil } type sshFxpExtendedPacket struct { @@ -873,17 +1053,17 @@ type sshFxpExtendedPacket struct { } } -func (p sshFxpExtendedPacket) id() uint32 { return p.ID } -func (p sshFxpExtendedPacket) readonly() bool { +func (p *sshFxpExtendedPacket) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacket) readonly() bool { if p.SpecificPacket == nil { return true } return p.SpecificPacket.readonly() } -func (p sshFxpExtendedPacket) respond(svr *Server) responsePacket { +func (p *sshFxpExtendedPacket) respond(svr *Server) responsePacket { if p.SpecificPacket == nil { - return statusFromError(p, nil) + return statusFromError(p.ID, nil) } return p.SpecificPacket.respond(svr) } @@ -903,6 +1083,8 @@ func (p *sshFxpExtendedPacket) UnmarshalBinary(b []byte) error { p.SpecificPacket = &sshFxpExtendedPacketStatVFS{} case "posix-rename@openssh.com": p.SpecificPacket = &sshFxpExtendedPacketPosixRename{} + case "hardlink@openssh.com": + p.SpecificPacket = &sshFxpExtendedPacketHardlink{} default: return errors.Wrapf(errUnknownExtendedPacket, "packet type %v", p.SpecificPacket) } @@ -916,8 +1098,8 @@ type sshFxpExtendedPacketStatVFS struct { Path string } -func (p sshFxpExtendedPacketStatVFS) id() uint32 { return p.ID } -func (p sshFxpExtendedPacketStatVFS) readonly() bool { return true } +func (p *sshFxpExtendedPacketStatVFS) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketStatVFS) readonly() bool { return true } func (p *sshFxpExtendedPacketStatVFS) UnmarshalBinary(b []byte) error { var err error if p.ID, b, err = unmarshalUint32Safe(b); err != nil { @@ -937,8 +1119,8 @@ type sshFxpExtendedPacketPosixRename struct { Newpath string } -func (p sshFxpExtendedPacketPosixRename) id() uint32 { return p.ID } -func (p sshFxpExtendedPacketPosixRename) readonly() bool { return false } +func (p *sshFxpExtendedPacketPosixRename) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketPosixRename) readonly() bool { return false } func (p *sshFxpExtendedPacketPosixRename) UnmarshalBinary(b []byte) error { var err error if p.ID, b, err = unmarshalUint32Safe(b); err != nil { @@ -953,7 +1135,36 @@ func (p *sshFxpExtendedPacketPosixRename) UnmarshalBinary(b []byte) error { return nil } -func (p sshFxpExtendedPacketPosixRename) respond(s *Server) responsePacket { +func (p *sshFxpExtendedPacketPosixRename) respond(s *Server) responsePacket { err := os.Rename(p.Oldpath, p.Newpath) - return statusFromError(p, err) + return statusFromError(p.ID, err) +} + +type sshFxpExtendedPacketHardlink struct { + ID uint32 + ExtendedRequest string + Oldpath string + Newpath string +} + +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL +func (p *sshFxpExtendedPacketHardlink) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketHardlink) readonly() bool { return true } +func (p *sshFxpExtendedPacketHardlink) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +func (p *sshFxpExtendedPacketHardlink) respond(s *Server) responsePacket { + err := os.Link(p.Oldpath, p.Newpath) + return statusFromError(p.ID, err) } diff --git a/vendor/github.com/pkg/sftp/pool.go b/vendor/github.com/pkg/sftp/pool.go new file mode 100644 index 0000000000..563f64bdd4 --- /dev/null +++ b/vendor/github.com/pkg/sftp/pool.go @@ -0,0 +1,80 @@ +package sftp + +// bufPool provides a pool of byte-slices to be reused in various parts of the package. +// It is safe to use concurrently through a pointer. +type bufPool struct { + ch chan []byte + blen int +} + +func newBufPool(depth, bufLen int) *bufPool { + return &bufPool{ + ch: make(chan []byte, depth), + blen: bufLen, + } +} + +func (p *bufPool) Get() []byte { + if p == nil { + // functional default: no reuse. + return make([]byte, p.blen) + } + + for { + select { + case b := <-p.ch: + if cap(b) < p.blen { + // just in case: throw away any buffer with insufficient capacity. + continue + } + + return b[:p.blen] + + default: + return make([]byte, p.blen) + } + } +} + +func (p *bufPool) Put(b []byte) { + if p == nil { + // functional default: no reuse. + return + } + + if cap(b) < p.blen || cap(b) > p.blen*2 { + // DO NOT reuse buffers with insufficient capacity. + // This could cause panics when resizing to p.blen. + + // DO NOT reuse buffers with excessive capacity. + // This could cause memory leaks. + return + } + + select { + case p.ch <- b: + default: + } +} + +type resChanPool chan chan result + +func newResChanPool(depth int) resChanPool { + return make(chan chan result, depth) +} + +func (p resChanPool) Get() chan result { + select { + case ch := <-p: + return ch + default: + return make(chan result, 1) + } +} + +func (p resChanPool) Put(ch chan result) { + select { + case p <- ch: + default: + } +} diff --git a/vendor/github.com/pkg/sftp/request-attrs.go b/vendor/github.com/pkg/sftp/request-attrs.go index 31b1eaa666..7c2e5c1223 100644 --- a/vendor/github.com/pkg/sftp/request-attrs.go +++ b/vendor/github.com/pkg/sftp/request-attrs.go @@ -5,7 +5,7 @@ package sftp // request and AttrFlags() and Attributes() when working with SetStat requests. import "os" -// File Open and Write Flags. Correlate directly with with os.OpenFile flags +// FileOpenFlags defines Open and Write Flags. Correlate directly with with os.OpenFile flags // (https://golang.org/pkg/os/#pkg-constants). type FileOpenFlags struct { Read, Write, Append, Creat, Trunc, Excl bool @@ -13,12 +13,12 @@ type FileOpenFlags struct { func newFileOpenFlags(flags uint32) FileOpenFlags { return FileOpenFlags{ - Read: flags&ssh_FXF_READ != 0, - Write: flags&ssh_FXF_WRITE != 0, - Append: flags&ssh_FXF_APPEND != 0, - Creat: flags&ssh_FXF_CREAT != 0, - Trunc: flags&ssh_FXF_TRUNC != 0, - Excl: flags&ssh_FXF_EXCL != 0, + Read: flags&sshFxfRead != 0, + Write: flags&sshFxfWrite != 0, + Append: flags&sshFxfAppend != 0, + Creat: flags&sshFxfCreat != 0, + Trunc: flags&sshFxfTrunc != 0, + Excl: flags&sshFxfExcl != 0, } } @@ -28,7 +28,7 @@ func (r *Request) Pflags() FileOpenFlags { return newFileOpenFlags(r.Flags) } -// Flags that indicate whether SFTP file attributes were passed. When a flag is +// FileAttrFlags that indicate whether SFTP file attributes were passed. When a flag is // true the corresponding attribute should be available from the FileStat // object returned by Attributes method. Used with SetStat. type FileAttrFlags struct { @@ -37,14 +37,14 @@ type FileAttrFlags struct { func newFileAttrFlags(flags uint32) FileAttrFlags { return FileAttrFlags{ - Size: (flags & ssh_FILEXFER_ATTR_SIZE) != 0, - UidGid: (flags & ssh_FILEXFER_ATTR_UIDGID) != 0, - Permissions: (flags & ssh_FILEXFER_ATTR_PERMISSIONS) != 0, - Acmodtime: (flags & ssh_FILEXFER_ATTR_ACMODTIME) != 0, + Size: (flags & sshFileXferAttrSize) != 0, + UidGid: (flags & sshFileXferAttrUIDGID) != 0, + Permissions: (flags & sshFileXferAttrPermissions) != 0, + Acmodtime: (flags & sshFileXferAttrACmodTime) != 0, } } -// FileAttrFlags returns a FileAttrFlags boolean struct based on the +// AttrFlags returns a FileAttrFlags boolean struct based on the // bitmap/uint32 file attribute flags from the SFTP packaet. func (r *Request) AttrFlags() FileAttrFlags { return newFileAttrFlags(r.Flags) @@ -55,7 +55,7 @@ func (a FileStat) FileMode() os.FileMode { return os.FileMode(a.Mode) } -// Attributres parses file attributes byte blob and return them in a +// Attributes parses file attributes byte blob and return them in a // FileStat object. func (r *Request) Attributes() *FileStat { fs, _ := getFileStat(r.Flags, r.Attrs) diff --git a/vendor/github.com/pkg/sftp/request-errors.go b/vendor/github.com/pkg/sftp/request-errors.go index 00451e74d7..6505b5c74f 100644 --- a/vendor/github.com/pkg/sftp/request-errors.go +++ b/vendor/github.com/pkg/sftp/request-errors.go @@ -1,42 +1,54 @@ package sftp +type fxerr uint32 + // Error types that match the SFTP's SSH_FXP_STATUS codes. Gives you more // direct control of the errors being sent vs. letting the library work them // out from the standard os/io errors. +const ( + ErrSSHFxOk = fxerr(sshFxOk) + ErrSSHFxEOF = fxerr(sshFxEOF) + ErrSSHFxNoSuchFile = fxerr(sshFxNoSuchFile) + ErrSSHFxPermissionDenied = fxerr(sshFxPermissionDenied) + ErrSSHFxFailure = fxerr(sshFxFailure) + ErrSSHFxBadMessage = fxerr(sshFxBadMessage) + ErrSSHFxNoConnection = fxerr(sshFxNoConnection) + ErrSSHFxConnectionLost = fxerr(sshFxConnectionLost) + ErrSSHFxOpUnsupported = fxerr(sshFxOPUnsupported) +) -type fxerr uint32 - +// Deprecated error types, these are aliases for the new ones, please use the new ones directly const ( - ErrSshFxOk = fxerr(ssh_FX_OK) - ErrSshFxEof = fxerr(ssh_FX_EOF) - ErrSshFxNoSuchFile = fxerr(ssh_FX_NO_SUCH_FILE) - ErrSshFxPermissionDenied = fxerr(ssh_FX_PERMISSION_DENIED) - ErrSshFxFailure = fxerr(ssh_FX_FAILURE) - ErrSshFxBadMessage = fxerr(ssh_FX_BAD_MESSAGE) - ErrSshFxNoConnection = fxerr(ssh_FX_NO_CONNECTION) - ErrSshFxConnectionLost = fxerr(ssh_FX_CONNECTION_LOST) - ErrSshFxOpUnsupported = fxerr(ssh_FX_OP_UNSUPPORTED) + ErrSshFxOk = ErrSSHFxOk + ErrSshFxEof = ErrSSHFxEOF + ErrSshFxNoSuchFile = ErrSSHFxNoSuchFile + ErrSshFxPermissionDenied = ErrSSHFxPermissionDenied + ErrSshFxFailure = ErrSSHFxFailure + ErrSshFxBadMessage = ErrSSHFxBadMessage + ErrSshFxNoConnection = ErrSSHFxNoConnection + ErrSshFxConnectionLost = ErrSSHFxConnectionLost + ErrSshFxOpUnsupported = ErrSSHFxOpUnsupported ) func (e fxerr) Error() string { switch e { - case ErrSshFxOk: + case ErrSSHFxOk: return "OK" - case ErrSshFxEof: + case ErrSSHFxEOF: return "EOF" - case ErrSshFxNoSuchFile: - return "No Such File" - case ErrSshFxPermissionDenied: - return "Permission Denied" - case ErrSshFxBadMessage: - return "Bad Message" - case ErrSshFxNoConnection: - return "No Connection" - case ErrSshFxConnectionLost: - return "Connection Lost" - case ErrSshFxOpUnsupported: - return "Operation Unsupported" + case ErrSSHFxNoSuchFile: + return "no such file" + case ErrSSHFxPermissionDenied: + return "permission denied" + case ErrSSHFxBadMessage: + return "bad message" + case ErrSSHFxNoConnection: + return "no connection" + case ErrSSHFxConnectionLost: + return "connection lost" + case ErrSSHFxOpUnsupported: + return "operation unsupported" default: - return "Failure" + return "failure" } } diff --git a/vendor/github.com/pkg/sftp/request-example.go b/vendor/github.com/pkg/sftp/request-example.go index e5abd18429..ba22bcd0f8 100644 --- a/vendor/github.com/pkg/sftp/request-example.go +++ b/vendor/github.com/pkg/sftp/request-example.go @@ -5,67 +5,139 @@ package sftp // works as a very simple filesystem with simple flat key-value lookup system. import ( - "bytes" - "fmt" + "errors" "io" "os" - "path/filepath" + "path" "sort" + "strings" "sync" "syscall" "time" ) +const maxSymlinkFollows = 5 + +var errTooManySymlinks = errors.New("too many symbolic links") + // InMemHandler returns a Hanlders object with the test handlers. func InMemHandler() Handlers { root := &root{ - files: make(map[string]*memFile), + rootFile: &memFile{name: "/", modtime: time.Now(), isdir: true}, + files: make(map[string]*memFile), } - root.memFile = newMemFile("/", true) return Handlers{root, root, root, root} } // Example Handlers func (fs *root) Fileread(r *Request) (io.ReaderAt, error) { + flags := r.Pflags() + if !flags.Read { + // sanity check + return nil, os.ErrInvalid + } + + return fs.OpenFile(r) +} + +func (fs *root) Filewrite(r *Request) (io.WriterAt, error) { + flags := r.Pflags() + if !flags.Write { + // sanity check + return nil, os.ErrInvalid + } + + return fs.OpenFile(r) +} + +func (fs *root) OpenFile(r *Request) (WriterAtReaderAt, error) { if fs.mockErr != nil { return nil, fs.mockErr } _ = r.WithContext(r.Context()) // initialize context for deadlock testing - fs.filesLock.Lock() - defer fs.filesLock.Unlock() - file, err := fs.fetch(r.Filepath) + + fs.mu.Lock() + defer fs.mu.Unlock() + + return fs.openfile(r.Filepath, r.Flags) +} + +func (fs *root) putfile(pathname string, file *memFile) error { + pathname, err := fs.canonName(pathname) if err != nil { - return nil, err + return err } - if file.symlink != "" { - file, err = fs.fetch(file.symlink) - if err != nil { - return nil, err - } + + if !strings.HasPrefix(pathname, "/") { + return os.ErrInvalid } - return file.ReaderAt() -} -func (fs *root) Filewrite(r *Request) (io.WriterAt, error) { - if fs.mockErr != nil { - return nil, fs.mockErr + if _, err := fs.lfetch(pathname); err != os.ErrNotExist { + return os.ErrExist } - _ = r.WithContext(r.Context()) // initialize context for deadlock testing - fs.filesLock.Lock() - defer fs.filesLock.Unlock() - file, err := fs.fetch(r.Filepath) + + file.name = pathname + fs.files[pathname] = file + + return nil +} + +func (fs *root) openfile(pathname string, flags uint32) (*memFile, error) { + pflags := newFileOpenFlags(flags) + + file, err := fs.fetch(pathname) if err == os.ErrNotExist { - dir, err := fs.fetch(filepath.Dir(r.Filepath)) - if err != nil { + if !pflags.Creat { + return nil, os.ErrNotExist + } + + var count int + // You can create files through dangling symlinks. + link, err := fs.lfetch(pathname) + for err == nil && link.symlink != "" { + if pflags.Excl { + // unless you also passed in O_EXCL + return nil, os.ErrInvalid + } + + if count++; count > maxSymlinkFollows { + return nil, errTooManySymlinks + } + + pathname = link.symlink + link, err = fs.lfetch(pathname) + } + + file := &memFile{ + modtime: time.Now(), + } + + if err := fs.putfile(pathname, file); err != nil { return nil, err } - if !dir.isdir { - return nil, os.ErrInvalid + + return file, nil + } + + if err != nil { + return nil, err + } + + if pflags.Creat && pflags.Excl { + return nil, os.ErrExist + } + + if file.IsDir() { + return nil, os.ErrInvalid + } + + if pflags.Trunc { + if err := file.Truncate(0); err != nil { + return nil, err } - file = newMemFile(r.Filepath, false) - fs.files[r.Filepath] = file } - return file.WriterAt() + + return file, nil } func (fs *root) Filecmd(r *Request) error { @@ -73,44 +145,211 @@ func (fs *root) Filecmd(r *Request) error { return fs.mockErr } _ = r.WithContext(r.Context()) // initialize context for deadlock testing - fs.filesLock.Lock() - defer fs.filesLock.Unlock() + + fs.mu.Lock() + defer fs.mu.Unlock() + switch r.Method { case "Setstat": - return nil - case "Rename": - file, err := fs.fetch(r.Filepath) + file, err := fs.openfile(r.Filepath, sshFxfWrite) if err != nil { return err } - if _, ok := fs.files[r.Target]; ok { - return &os.LinkError{Op: "rename", Old: r.Filepath, New: r.Target, - Err: fmt.Errorf("dest file exists")} + + if r.AttrFlags().Size { + return file.Truncate(int64(r.Attributes().Size)) } - file.name = r.Target - fs.files[r.Target] = file - delete(fs.files, r.Filepath) - case "Rmdir", "Remove": - _, err := fs.fetch(filepath.Dir(r.Filepath)) - if err != nil { - return err + + return nil + + case "Rename": + // SFTP-v2: "It is an error if there already exists a file with the name specified by newpath." + // This varies from the POSIX specification, which allows limited replacement of target files. + if fs.exists(r.Target) { + return os.ErrExist } - delete(fs.files, r.Filepath) + + return fs.rename(r.Filepath, r.Target) + + case "Rmdir": + return fs.rmdir(r.Filepath) + + case "Remove": + // IEEE 1003.1 remove explicitly can unlink files and remove empty directories. + // We use instead here the semantics of unlink, which is allowed to be restricted against directories. + return fs.unlink(r.Filepath) + case "Mkdir": - _, err := fs.fetch(filepath.Dir(r.Filepath)) - if err != nil { - return err - } - fs.files[r.Filepath] = newMemFile(r.Filepath, true) + return fs.mkdir(r.Filepath) + + case "Link": + return fs.link(r.Filepath, r.Target) + case "Symlink": - _, err := fs.fetch(r.Filepath) - if err != nil { - return err + // NOTE: r.Filepath is the target, and r.Target is the linkpath. + return fs.symlink(r.Filepath, r.Target) + } + + return errors.New("unsupported") +} + +func (fs *root) rename(oldpath, newpath string) error { + file, err := fs.lfetch(oldpath) + if err != nil { + return err + } + + newpath, err = fs.canonName(newpath) + if err != nil { + return err + } + + if !strings.HasPrefix(newpath, "/") { + return os.ErrInvalid + } + + target, err := fs.lfetch(newpath) + if err != os.ErrNotExist { + if target == file { + // IEEE 1003.1: if oldpath and newpath are the same directory entry, + // then return no error, and perform no further action. + return nil + } + + switch { + case file.IsDir(): + // IEEE 1003.1: if oldpath is a directory, and newpath exists, + // then newpath must be a directory, and empty. + // It is to be removed prior to rename. + if err := fs.rmdir(newpath); err != nil { + return err + } + + case target.IsDir(): + // IEEE 1003.1: if oldpath is not a directory, and newpath exists, + // then newpath may not be a directory. + return syscall.EISDIR + } + } + + fs.files[newpath] = file + + if file.IsDir() { + dirprefix := file.name + "/" + + for name, file := range fs.files { + if strings.HasPrefix(name, dirprefix) { + newname := path.Join(newpath, strings.TrimPrefix(name, dirprefix)) + + fs.files[newname] = file + file.name = newname + delete(fs.files, name) + } } - link := newMemFile(r.Target, false) - link.symlink = r.Filepath - fs.files[r.Target] = link } + + file.name = newpath + delete(fs.files, oldpath) + + return nil +} + +func (fs *root) PosixRename(r *Request) error { + if fs.mockErr != nil { + return fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + return fs.rename(r.Filepath, r.Target) +} + +func (fs *root) StatVFS(r *Request) (*StatVFS, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + + return getStatVFSForPath(r.Filepath) +} + +func (fs *root) mkdir(pathname string) error { + dir := &memFile{ + modtime: time.Now(), + isdir: true, + } + + return fs.putfile(pathname, dir) +} + +func (fs *root) rmdir(pathname string) error { + // IEEE 1003.1: If pathname is a symlink, then rmdir should fail with ENOTDIR. + dir, err := fs.lfetch(pathname) + if err != nil { + return err + } + + if !dir.IsDir() { + return syscall.ENOTDIR + } + + // use the dir‘s internal name not the pathname we passed in. + // the dir.name is always the canonical name of a directory. + pathname = dir.name + + for name := range fs.files { + if path.Dir(name) == pathname { + return errors.New("directory not empty") + } + } + + delete(fs.files, pathname) + + return nil +} + +func (fs *root) link(oldpath, newpath string) error { + file, err := fs.lfetch(oldpath) + if err != nil { + return err + } + + if file.IsDir() { + return errors.New("hard link not allowed for directory") + } + + return fs.putfile(newpath, file) +} + +// symlink() creates a symbolic link named `linkpath` which contains the string `target`. +// NOTE! This would be called with `symlink(req.Filepath, req.Target)` due to different semantics. +func (fs *root) symlink(target, linkpath string) error { + link := &memFile{ + modtime: time.Now(), + symlink: target, + } + + return fs.putfile(linkpath, link) +} + +func (fs *root) unlink(pathname string) error { + // does not follow symlinks! + file, err := fs.lfetch(pathname) + if err != nil { + return err + } + + if file.IsDir() { + // IEEE 1003.1: implementations may opt out of allowing the unlinking of directories. + // SFTP-v2: SSH_FXP_REMOVE may not remove directories. + return os.ErrInvalid + } + + // DO NOT use the file’s internal name. + // because of hard-links files cannot have a single canonical name. + delete(fs.files, pathname) + return nil } @@ -134,51 +373,113 @@ func (fs *root) Filelist(r *Request) (ListerAt, error) { return nil, fs.mockErr } _ = r.WithContext(r.Context()) // initialize context for deadlock testing - fs.filesLock.Lock() - defer fs.filesLock.Unlock() - file, err := fs.fetch(r.Filepath) - if err != nil { - return nil, err - } + fs.mu.Lock() + defer fs.mu.Unlock() switch r.Method { case "List": - if !file.IsDir() { - return nil, syscall.ENOTDIR - } - ordered_names := []string{} - for fn, _ := range fs.files { - if filepath.Dir(fn) == r.Filepath { - ordered_names = append(ordered_names, fn) - } - } - sort.Strings(ordered_names) - list := make([]os.FileInfo, len(ordered_names)) - for i, fn := range ordered_names { - list[i] = fs.files[fn] + files, err := fs.readdir(r.Filepath) + if err != nil { + return nil, err } - return listerat(list), nil + return listerat(files), nil + case "Stat": - return listerat([]os.FileInfo{file}), nil + file, err := fs.fetch(r.Filepath) + if err != nil { + return nil, err + } + return listerat{file}, nil + case "Readlink": - if file.symlink != "" { - file, err = fs.fetch(file.symlink) - if err != nil { - return nil, err - } + symlink, err := fs.readlink(r.Filepath) + if err != nil { + return nil, err + } + + // SFTP-v2: The server will respond with a SSH_FXP_NAME packet containing only + // one name and a dummy attributes value. + return listerat{ + &memFile{ + name: symlink, + err: os.ErrNotExist, // prevent accidental use as a reader/writer. + }, + }, nil + } + + return nil, errors.New("unsupported") +} + +func (fs *root) readdir(pathname string) ([]os.FileInfo, error) { + dir, err := fs.fetch(pathname) + if err != nil { + return nil, err + } + + if !dir.IsDir() { + return nil, syscall.ENOTDIR + } + + var files []os.FileInfo + + for name, file := range fs.files { + if path.Dir(name) == dir.name { + files = append(files, file) } - return listerat([]os.FileInfo{file}), nil } - return nil, nil + + sort.Slice(files, func(i, j int) bool { return files[i].Name() < files[j].Name() }) + + return files, nil +} + +func (fs *root) readlink(pathname string) (string, error) { + file, err := fs.lfetch(pathname) + if err != nil { + return "", err + } + + if file.symlink == "" { + return "", os.ErrInvalid + } + + return file.symlink, nil +} + +// implements LstatFileLister interface +func (fs *root) Lstat(r *Request) (ListerAt, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + file, err := fs.lfetch(r.Filepath) + if err != nil { + return nil, err + } + return listerat{file}, nil +} + +// implements RealpathFileLister interface +func (fs *root) Realpath(p string) string { + if fs.startDirectory == "" || fs.startDirectory == "/" { + return cleanPath(p) + } + return cleanPathWithBase(fs.startDirectory, p) } // In memory file-system-y thing that the Hanlders live on type root struct { - *memFile - files map[string]*memFile - filesLock sync.Mutex - mockErr error + rootFile *memFile + mockErr error + startDirectory string + + mu sync.Mutex + files map[string]*memFile } // Set a mocked error that the next handler call will return. @@ -187,48 +488,107 @@ func (fs *root) returnErr(err error) { fs.mockErr = err } -func (fs *root) fetch(path string) (*memFile, error) { +func (fs *root) lfetch(path string) (*memFile, error) { if path == "/" { - return fs.memFile, nil + return fs.rootFile, nil } - if file, ok := fs.files[path]; ok { - return file, nil + + file, ok := fs.files[path] + if file == nil { + if ok { + delete(fs.files, path) + } + + return nil, os.ErrNotExist + } + + return file, nil +} + +// canonName returns the “canonical” name of a file, that is: +// if the directory of the pathname is a symlink, it follows that symlink to the valid directory name. +// this is relatively easy, since `dir.name` will be the only valid canonical path for a directory. +func (fs *root) canonName(pathname string) (string, error) { + dirname, filename := path.Dir(pathname), path.Base(pathname) + + dir, err := fs.fetch(dirname) + if err != nil { + return "", err + } + + if !dir.IsDir() { + return "", syscall.ENOTDIR + } + + return path.Join(dir.name, filename), nil +} + +func (fs *root) exists(path string) bool { + path, err := fs.canonName(path) + if err != nil { + return false + } + + _, err = fs.lfetch(path) + + return err != os.ErrNotExist +} + +func (fs *root) fetch(path string) (*memFile, error) { + file, err := fs.lfetch(path) + if err != nil { + return nil, err + } + + var count int + for file.symlink != "" { + if count++; count > maxSymlinkFollows { + return nil, errTooManySymlinks + } + + file, err = fs.lfetch(file.symlink) + if err != nil { + return nil, err + } } - return nil, os.ErrNotExist + + return file, nil } -// Implements os.FileInfo, Reader and Writer interfaces. +// Implements os.FileInfo, io.ReaderAt and io.WriterAt interfaces. // These are the 3 interfaces necessary for the Handlers. +// Implements the optional interface TransferError. type memFile struct { - name string - modtime time.Time - symlink string - isdir bool - content []byte - contentLock sync.RWMutex -} - -// factory to make sure modtime is set -func newMemFile(name string, isdir bool) *memFile { - return &memFile{ - name: name, - modtime: time.Now(), - isdir: isdir, - } + name string + modtime time.Time + symlink string + isdir bool + + mu sync.RWMutex + content []byte + err error } +// These are helper functions, they must be called while holding the memFile.mu mutex +func (f *memFile) size() int64 { return int64(len(f.content)) } +func (f *memFile) grow(n int64) { f.content = append(f.content, make([]byte, n)...) } + // Have memFile fulfill os.FileInfo interface -func (f *memFile) Name() string { return filepath.Base(f.name) } -func (f *memFile) Size() int64 { return int64(len(f.content)) } +func (f *memFile) Name() string { return path.Base(f.name) } +func (f *memFile) Size() int64 { + f.mu.Lock() + defer f.mu.Unlock() + + return f.size() +} func (f *memFile) Mode() os.FileMode { - ret := os.FileMode(0644) if f.isdir { - ret = os.FileMode(0755) | os.ModeDir + return os.FileMode(0755) | os.ModeDir } if f.symlink != "" { - ret = os.FileMode(0777) | os.ModeSymlink + return os.FileMode(0777) | os.ModeSymlink } - return ret + return os.FileMode(0644) } func (f *memFile) ModTime() time.Time { return f.modtime } func (f *memFile) IsDir() bool { return f.isdir } @@ -236,32 +596,71 @@ func (f *memFile) Sys() interface{} { return fakeFileInfoSys() } -// Read/Write -func (f *memFile) ReaderAt() (io.ReaderAt, error) { - if f.isdir { - return nil, os.ErrInvalid +func (f *memFile) ReadAt(b []byte, off int64) (int, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return 0, f.err } - return bytes.NewReader(f.content), nil -} -func (f *memFile) WriterAt() (io.WriterAt, error) { - if f.isdir { - return nil, os.ErrInvalid + if off < 0 { + return 0, errors.New("memFile.ReadAt: negative offset") } - return f, nil + + if off >= f.size() { + return 0, io.EOF + } + + n := copy(b, f.content[off:]) + if n < len(b) { + return n, io.EOF + } + + return n, nil } -func (f *memFile) WriteAt(p []byte, off int64) (int, error) { + +func (f *memFile) WriteAt(b []byte, off int64) (int, error) { // fmt.Println(string(p), off) // mimic write delays, should be optional - time.Sleep(time.Microsecond * time.Duration(len(p))) - f.contentLock.Lock() - defer f.contentLock.Unlock() - plen := len(p) + int(off) - if plen >= len(f.content) { - nc := make([]byte, plen) - copy(nc, f.content) - f.content = nc - } - copy(f.content[off:], p) - return len(p), nil + time.Sleep(time.Microsecond * time.Duration(len(b))) + + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return 0, f.err + } + + grow := int64(len(b)) + off - f.size() + if grow > 0 { + f.grow(grow) + } + + return copy(f.content[off:], b), nil +} + +func (f *memFile) Truncate(size int64) error { + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return f.err + } + + grow := size - f.size() + if grow <= 0 { + f.content = f.content[:size] + } else { + f.grow(grow) + } + + return nil +} + +func (f *memFile) TransferError(err error) { + f.mu.Lock() + defer f.mu.Unlock() + + f.err = err } diff --git a/vendor/github.com/pkg/sftp/request-interfaces.go b/vendor/github.com/pkg/sftp/request-interfaces.go index f69cedc5c8..41e33273b8 100644 --- a/vendor/github.com/pkg/sftp/request-interfaces.go +++ b/vendor/github.com/pkg/sftp/request-interfaces.go @@ -5,6 +5,13 @@ import ( "os" ) +// WriterAtReaderAt defines the interface to return when a file is to +// be opened for reading and writing +type WriterAtReaderAt interface { + io.WriterAt + io.ReaderAt +} + // Interfaces are differentiated based on required returned values. // All input arguments are to be pulled from Request (the only arg). @@ -25,18 +32,45 @@ type FileReader interface { // The request server code will call Close() on the returned io.WriterAt // ojbect if an io.Closer type assertion succeeds. // Note in cases of an error, the error text will be sent to the client. +// Note when receiving an Append flag it is important to not open files using +// O_APPEND if you plan to use WriteAt, as they conflict. // Called for Methods: Put, Open type FileWriter interface { Filewrite(*Request) (io.WriterAt, error) } +// OpenFileWriter is a FileWriter that implements the generic OpenFile method. +// You need to implement this optional interface if you want to be able +// to read and write from/to the same handle. +// Called for Methods: Open +type OpenFileWriter interface { + FileWriter + OpenFile(*Request) (WriterAtReaderAt, error) +} + // FileCmder should return an error // Note in cases of an error, the error text will be sent to the client. -// Called for Methods: Setstat, Rename, Rmdir, Mkdir, Symlink, Remove +// Called for Methods: Setstat, Rename, Rmdir, Mkdir, Link, Symlink, Remove type FileCmder interface { Filecmd(*Request) error } +// PosixRenameFileCmder is a FileCmder that implements the PosixRename method. +// If this interface is implemented PosixRename requests will call it +// otherwise they will be handled in the same way as Rename +type PosixRenameFileCmder interface { + FileCmder + PosixRename(*Request) error +} + +// StatVFSFileCmder is a FileCmder that implements the StatVFS method. +// You need to implement this interface if you want to handle statvfs requests. +// Please also be sure that the statvfs@openssh.com extension is enabled +type StatVFSFileCmder interface { + FileCmder + StatVFS(*Request) (*StatVFS, error) +} + // FileLister should return an object that fulfils the ListerAt interface // Note in cases of an error, the error text will be sent to the client. // Called for Methods: List, Stat, Readlink @@ -44,6 +78,23 @@ type FileLister interface { Filelist(*Request) (ListerAt, error) } +// LstatFileLister is a FileLister that implements the Lstat method. +// If this interface is implemented Lstat requests will call it +// otherwise they will be handled in the same way as Stat +type LstatFileLister interface { + FileLister + Lstat(*Request) (ListerAt, error) +} + +// RealPathFileLister is a FileLister that implements the Realpath method. +// We use "/" as start directory for relative paths, implementing this +// interface you can customize the start directory. +// You have to return an absolute POSIX path. +type RealPathFileLister interface { + FileLister + RealPath(string) string +} + // ListerAt does for file lists what io.ReaderAt does for files. // ListAt should return the number of entries copied and an io.EOF // error if at end of list. This is testable by comparing how many you @@ -53,3 +104,10 @@ type FileLister interface { type ListerAt interface { ListAt([]os.FileInfo, int64) (int, error) } + +// TransferError is an optional interface that readerAt and writerAt +// can implement to be notified about the error causing Serve() to exit +// with the request still open +type TransferError interface { + TransferError(err error) +} diff --git a/vendor/github.com/pkg/sftp/request-plan9.go b/vendor/github.com/pkg/sftp/request-plan9.go new file mode 100644 index 0000000000..0074e8a3d0 --- /dev/null +++ b/vendor/github.com/pkg/sftp/request-plan9.go @@ -0,0 +1,13 @@ +// +build plan9 + +package sftp + +import "syscall" + +func fakeFileInfoSys() interface{} { + return &syscall.Dir{} +} + +func testOsSys(sys interface{}) error { + return nil +} diff --git a/vendor/github.com/pkg/sftp/request-server.go b/vendor/github.com/pkg/sftp/request-server.go index 2e99720a91..b58aefce5c 100644 --- a/vendor/github.com/pkg/sftp/request-server.go +++ b/vendor/github.com/pkg/sftp/request-server.go @@ -7,7 +7,6 @@ import ( "path/filepath" "strconv" "sync" - "syscall" "github.com/pkg/errors" ) @@ -32,21 +31,41 @@ type RequestServer struct { handleCount int } +// A RequestServerOption is a function which applies configuration to a RequestServer. +type RequestServerOption func(*RequestServer) + +// WithRSAllocator enable the allocator. +// After processing a packet we keep in memory the allocated slices +// and we reuse them for new packets. +// The allocator is experimental +func WithRSAllocator() RequestServerOption { + return func(rs *RequestServer) { + alloc := newAllocator() + rs.pktMgr.alloc = alloc + rs.conn.alloc = alloc + } +} + // NewRequestServer creates/allocates/returns new RequestServer. -// Normally there there will be one server per user-session. -func NewRequestServer(rwc io.ReadWriteCloser, h Handlers) *RequestServer { +// Normally there will be one server per user-session. +func NewRequestServer(rwc io.ReadWriteCloser, h Handlers, options ...RequestServerOption) *RequestServer { svrConn := &serverConn{ conn: conn{ Reader: rwc, WriteCloser: rwc, }, } - return &RequestServer{ + rs := &RequestServer{ serverConn: svrConn, Handlers: h, pktMgr: newPktMgr(svrConn), openRequests: make(map[string]*Request), } + + for _, o := range options { + o(rs) + } + return rs } // New Open packet/Request @@ -80,63 +99,79 @@ func (rs *RequestServer) closeRequest(handle string) error { delete(rs.openRequests, handle) return r.close() } - return syscall.EBADF + return EBADF } // Close the read/write/closer to trigger exiting the main server loop func (rs *RequestServer) Close() error { return rs.conn.Close() } -// Serve requests for user session -func (rs *RequestServer) Serve() error { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - var wg sync.WaitGroup - runWorker := func(ch chan orderedRequest) { - wg.Add(1) - go func() { - defer wg.Done() - if err := rs.packetWorker(ctx, ch); err != nil { - rs.conn.Close() // shuts down recvPacket - } - }() - } - pktChan := rs.pktMgr.workerChan(runWorker) +func (rs *RequestServer) serveLoop(pktChan chan<- orderedRequest) error { + defer close(pktChan) // shuts down sftpServerWorkers var err error var pkt requestPacket var pktType uint8 var pktBytes []byte + for { - pktType, pktBytes, err = rs.recvPacket() + pktType, pktBytes, err = rs.serverConn.recvPacket(rs.pktMgr.getNextOrderID()) if err != nil { - break + // we don't care about releasing allocated pages here, the server will quit and the allocator freed + return err } pkt, err = makePacket(rxPacket{fxp(pktType), pktBytes}) if err != nil { switch errors.Cause(err) { case errUnknownExtendedPacket: - if err := rs.serverConn.sendError(pkt, ErrSshFxOpUnsupported); err != nil { - debug("failed to send err packet: %v", err) - rs.conn.Close() // shuts down recvPacket - break - } + // do nothing default: debug("makePacket err: %v", err) rs.conn.Close() // shuts down recvPacket - break + return err } } pktChan <- rs.pktMgr.newOrderedRequest(pkt) } +} - close(pktChan) // shuts down sftpServerWorkers - wg.Wait() // wait for all workers to exit +// Serve requests for user session +func (rs *RequestServer) Serve() error { + defer func() { + if rs.pktMgr.alloc != nil { + rs.pktMgr.alloc.Free() + } + }() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + var wg sync.WaitGroup + runWorker := func(ch chan orderedRequest) { + wg.Add(1) + go func() { + defer wg.Done() + if err := rs.packetWorker(ctx, ch); err != nil { + rs.conn.Close() // shuts down recvPacket + } + }() + } + pktChan := rs.pktMgr.workerChan(runWorker) + + err := rs.serveLoop(pktChan) + + wg.Wait() // wait for all workers to exit + + rs.openRequestLock.Lock() + defer rs.openRequestLock.Unlock() // make sure all open requests are properly closed // (eg. possible on dropped connections, client crashes, etc.) for handle, req := range rs.openRequests { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + req.transferError(err) + delete(rs.openRequests, handle) req.close() } @@ -148,72 +183,114 @@ func (rs *RequestServer) packetWorker( ctx context.Context, pktChan chan orderedRequest, ) error { for pkt := range pktChan { + orderID := pkt.orderID() + if epkt, ok := pkt.requestPacket.(*sshFxpExtendedPacket); ok { + if epkt.SpecificPacket != nil { + pkt.requestPacket = epkt.SpecificPacket + } + } + var rpkt responsePacket switch pkt := pkt.requestPacket.(type) { case *sshFxInitPacket: - rpkt = sshFxVersionPacket{Version: sftpProtocolVersion} + rpkt = &sshFxVersionPacket{Version: sftpProtocolVersion, Extensions: sftpExtensions} case *sshFxpClosePacket: handle := pkt.getHandle() - rpkt = statusFromError(pkt, rs.closeRequest(handle)) + rpkt = statusFromError(pkt.ID, rs.closeRequest(handle)) case *sshFxpRealpathPacket: - rpkt = cleanPacketPath(pkt) + var realPath string + if realPather, ok := rs.Handlers.FileList.(RealPathFileLister); ok { + realPath = realPather.RealPath(pkt.getPath()) + } else { + realPath = cleanPath(pkt.getPath()) + } + rpkt = cleanPacketPath(pkt, realPath) case *sshFxpOpendirPacket: request := requestFromPacket(ctx, pkt) - rs.nextRequest(request) + handle := rs.nextRequest(request) rpkt = request.opendir(rs.Handlers, pkt) + if _, ok := rpkt.(*sshFxpHandlePacket); !ok { + // if we return an error we have to remove the handle from the active ones + rs.closeRequest(handle) + } case *sshFxpOpenPacket: request := requestFromPacket(ctx, pkt) - rs.nextRequest(request) + handle := rs.nextRequest(request) rpkt = request.open(rs.Handlers, pkt) + if _, ok := rpkt.(*sshFxpHandlePacket); !ok { + // if we return an error we have to remove the handle from the active ones + rs.closeRequest(handle) + } case *sshFxpFstatPacket: handle := pkt.getHandle() request, ok := rs.getRequest(handle) if !ok { - rpkt = statusFromError(pkt, syscall.EBADF) + rpkt = statusFromError(pkt.ID, EBADF) } else { request = NewRequest("Stat", request.Filepath) - rpkt = request.call(rs.Handlers, pkt) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) } + case *sshFxpFsetstatPacket: + handle := pkt.getHandle() + request, ok := rs.getRequest(handle) + if !ok { + rpkt = statusFromError(pkt.ID, EBADF) + } else { + request = NewRequest("Setstat", request.Filepath) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) + } + case *sshFxpExtendedPacketPosixRename: + request := NewRequest("PosixRename", pkt.Oldpath) + request.Target = pkt.Newpath + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) + case *sshFxpExtendedPacketStatVFS: + request := NewRequest("StatVFS", pkt.Path) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) case hasHandle: handle := pkt.getHandle() request, ok := rs.getRequest(handle) if !ok { - rpkt = statusFromError(pkt, syscall.EBADF) + rpkt = statusFromError(pkt.id(), EBADF) } else { - rpkt = request.call(rs.Handlers, pkt) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) } case hasPath: request := requestFromPacket(ctx, pkt) - rpkt = request.call(rs.Handlers, pkt) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) request.close() default: - return errors.Errorf("unexpected packet type %T", pkt) + rpkt = statusFromError(pkt.id(), ErrSSHFxOpUnsupported) } rs.pktMgr.readyPacket( - rs.pktMgr.newOrderedResponse(rpkt, pkt.orderId())) + rs.pktMgr.newOrderedResponse(rpkt, orderID)) } return nil } // clean and return name packet for file -func cleanPacketPath(pkt *sshFxpRealpathPacket) responsePacket { - path := cleanPath(pkt.getPath()) +func cleanPacketPath(pkt *sshFxpRealpathPacket, realPath string) responsePacket { return &sshFxpNamePacket{ ID: pkt.id(), - NameAttrs: []sshFxpNameAttr{{ - Name: path, - LongName: path, - Attrs: emptyFileStat, - }}, + NameAttrs: []*sshFxpNameAttr{ + { + Name: realPath, + LongName: realPath, + Attrs: emptyFileStat, + }, + }, } } // Makes sure we have a clean POSIX (/) absolute path to work with func cleanPath(p string) string { + return cleanPathWithBase("/", p) +} + +func cleanPathWithBase(base, p string) string { p = filepath.ToSlash(p) - if !filepath.IsAbs(p) { - p = "/" + p + if !path.IsAbs(p) { + return path.Join(base, p) } return path.Clean(p) } diff --git a/vendor/github.com/pkg/sftp/request-unix.go b/vendor/github.com/pkg/sftp/request-unix.go index a71a8980ae..d30b256917 100644 --- a/vendor/github.com/pkg/sftp/request-unix.go +++ b/vendor/github.com/pkg/sftp/request-unix.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!plan9 package sftp @@ -14,10 +14,10 @@ func fakeFileInfoSys() interface{} { func testOsSys(sys interface{}) error { fstat := sys.(*FileStat) if fstat.UID != uint32(65534) { - return errors.New("Uid failed to match.") + return errors.New("Uid failed to match") } if fstat.GID != uint32(65534) { - return errors.New("Gid failed to match:") + return errors.New("Gid failed to match") } return nil } diff --git a/vendor/github.com/pkg/sftp/request.go b/vendor/github.com/pkg/sftp/request.go index e694e5f1b2..d6851ff180 100644 --- a/vendor/github.com/pkg/sftp/request.go +++ b/vendor/github.com/pkg/sftp/request.go @@ -6,6 +6,7 @@ import ( "os" "path" "path/filepath" + "strings" "sync" "syscall" @@ -18,7 +19,7 @@ var MaxFilelist int64 = 100 // Request contains the data and state for the incoming service request. type Request struct { // Get, Put, Setstat, Stat, Rename, Remove - // Rmdir, Mkdir, List, Readlink, Symlink + // Rmdir, Mkdir, List, Readlink, Link, Symlink Method string Filepath string Flags uint32 @@ -34,10 +35,11 @@ type Request struct { type state struct { *sync.RWMutex - writerAt io.WriterAt - readerAt io.ReaderAt - listerAt ListerAt - lsoffset int64 + writerAt io.WriterAt + readerAt io.ReaderAt + writerReaderAt WriterAtReaderAt + listerAt ListerAt + lsoffset int64 } // New Request initialized based on packet data @@ -55,7 +57,11 @@ func requestFromPacket(ctx context.Context, pkt hasPath) *Request { case *sshFxpRenamePacket: request.Target = cleanPath(p.Newpath) case *sshFxpSymlinkPacket: + // NOTE: given a POSIX compliant signature: symlink(target, linkpath string) + // this makes Request.Target the linkpath, and Request.Filepath the target. request.Target = cleanPath(p.Linkpath) + case *sshFxpExtendedPacketHardlink: + request.Target = cleanPath(p.Newpath) } return request } @@ -136,36 +142,84 @@ func (r *Request) close() error { r.cancelCtx() } }() + r.state.RLock() + wr := r.state.writerAt rd := r.state.readerAt + rw := r.state.writerReaderAt r.state.RUnlock() + + var err error + + // Close errors on a Writer are far more likely to be the important one. + // As they can be information that there was a loss of data. + if c, ok := wr.(io.Closer); ok { + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + } + } + + if c, ok := rw.(io.Closer); ok { + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + r.state.writerReaderAt = nil + } + } + if c, ok := rd.(io.Closer); ok { - return c.Close() + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + } + } + + return err +} + +// Notify transfer error if any +func (r *Request) transferError(err error) { + if err == nil { + return } + r.state.RLock() - wt := r.state.writerAt + wr := r.state.writerAt + rd := r.state.readerAt + rw := r.state.writerReaderAt r.state.RUnlock() - if c, ok := wt.(io.Closer); ok { - return c.Close() + + if t, ok := wr.(TransferError); ok { + t.TransferError(err) + } + + if t, ok := rw.(TransferError); ok { + t.TransferError(err) + } + + if t, ok := rd.(TransferError); ok { + t.TransferError(err) } - return nil } // called from worker to handle packet/request -func (r *Request) call(handlers Handlers, pkt requestPacket) responsePacket { +func (r *Request) call(handlers Handlers, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket { switch r.Method { case "Get": - return fileget(handlers.FileGet, r, pkt) + return fileget(handlers.FileGet, r, pkt, alloc, orderID) case "Put": - return fileput(handlers.FilePut, r, pkt) - case "Setstat", "Rename", "Rmdir", "Mkdir", "Symlink", "Remove": + return fileput(handlers.FilePut, r, pkt, alloc, orderID) + case "Open": + return fileputget(handlers.FilePut, r, pkt, alloc, orderID) + case "Setstat", "Rename", "Rmdir", "Mkdir", "Link", "Symlink", "Remove", "PosixRename", "StatVFS": return filecmd(handlers.FileCmd, r, pkt) case "List": return filelist(handlers.FileList, r, pkt) - case "Stat", "Readlink": + case "Stat", "Lstat", "Readlink": return filestat(handlers.FileList, r, pkt) default: - return statusFromError(pkt, + return statusFromError(pkt.id(), errors.Errorf("unexpected method: %s", r.Method)) } } @@ -173,52 +227,66 @@ func (r *Request) call(handlers Handlers, pkt requestPacket) responsePacket { // Additional initialization for Open packets func (r *Request) open(h Handlers, pkt requestPacket) responsePacket { flags := r.Pflags() - var err error + + id := pkt.id() + switch { case flags.Write, flags.Append, flags.Creat, flags.Trunc: + if flags.Read { + if openFileWriter, ok := h.FilePut.(OpenFileWriter); ok { + r.Method = "Open" + rw, err := openFileWriter.OpenFile(r) + if err != nil { + return statusFromError(id, err) + } + r.state.writerReaderAt = rw + return &sshFxpHandlePacket{ID: id, Handle: r.handle} + } + } + r.Method = "Put" - r.state.writerAt, err = h.FilePut.Filewrite(r) + wr, err := h.FilePut.Filewrite(r) + if err != nil { + return statusFromError(id, err) + } + r.state.writerAt = wr case flags.Read: r.Method = "Get" - r.state.readerAt, err = h.FileGet.Fileread(r) + rd, err := h.FileGet.Fileread(r) + if err != nil { + return statusFromError(id, err) + } + r.state.readerAt = rd default: - return statusFromError(pkt, errors.New("bad file flags")) - } - if err != nil { - return statusFromError(pkt, err) + return statusFromError(id, errors.New("bad file flags")) } - return &sshFxpHandlePacket{ID: pkt.id(), Handle: r.handle} + return &sshFxpHandlePacket{ID: id, Handle: r.handle} } + func (r *Request) opendir(h Handlers, pkt requestPacket) responsePacket { - var err error r.Method = "List" - r.state.listerAt, err = h.FileList.Filelist(r) + la, err := h.FileList.Filelist(r) if err != nil { - switch err.(type) { - case syscall.Errno: - err = &os.PathError{Path: r.Filepath, Err: err} - } - return statusFromError(pkt, err) + return statusFromError(pkt.id(), wrapPathError(r.Filepath, err)) } + r.state.listerAt = la return &sshFxpHandlePacket{ID: pkt.id(), Handle: r.handle} } // wrap FileReader handler -func fileget(h FileReader, r *Request, pkt requestPacket) responsePacket { - //fmt.Println("fileget", r) +func fileget(h FileReader, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket { r.state.RLock() reader := r.state.readerAt r.state.RUnlock() if reader == nil { - return statusFromError(pkt, errors.New("unexpected read packet")) + return statusFromError(pkt.id(), errors.New("unexpected read packet")) } - _, offset, length := packetData(pkt) - data := make([]byte, clamp(length, maxTxPacket)) + data, offset, _ := packetData(pkt, alloc, orderID) n, err := reader.ReadAt(data, offset) - // only return EOF erro if no data left to read + // only return EOF error if no data left to read if err != nil && (err != io.EOF || n == 0) { - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } return &sshFxpDataPacket{ ID: pkt.id(), @@ -228,44 +296,95 @@ func fileget(h FileReader, r *Request, pkt requestPacket) responsePacket { } // wrap FileWriter handler -func fileput(h FileWriter, r *Request, pkt requestPacket) responsePacket { - //fmt.Println("fileput", r) +func fileput(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket { r.state.RLock() writer := r.state.writerAt r.state.RUnlock() if writer == nil { - return statusFromError(pkt, errors.New("unexpected write packet")) + return statusFromError(pkt.id(), errors.New("unexpected write packet")) } - data, offset, _ := packetData(pkt) + data, offset, _ := packetData(pkt, alloc, orderID) _, err := writer.WriteAt(data, offset) - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) +} + +// wrap OpenFileWriter handler +func fileputget(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket { + r.state.RLock() + writerReader := r.state.writerReaderAt + r.state.RUnlock() + if writerReader == nil { + return statusFromError(pkt.id(), errors.New("unexpected write and read packet")) + } + switch p := pkt.(type) { + case *sshFxpReadPacket: + data, offset := p.getDataSlice(alloc, orderID), int64(p.Offset) + n, err := writerReader.ReadAt(data, offset) + // only return EOF error if no data left to read + if err != nil && (err != io.EOF || n == 0) { + return statusFromError(pkt.id(), err) + } + return &sshFxpDataPacket{ + ID: pkt.id(), + Length: uint32(n), + Data: data[:n], + } + case *sshFxpWritePacket: + data, offset := p.Data, int64(p.Offset) + _, err := writerReader.WriteAt(data, offset) + return statusFromError(pkt.id(), err) + default: + return statusFromError(pkt.id(), errors.New("unexpected packet type for read or write")) + } } // file data for additional read/write packets -func packetData(p requestPacket) (data []byte, offset int64, length uint32) { +func packetData(p requestPacket, alloc *allocator, orderID uint32) (data []byte, offset int64, length uint32) { switch p := p.(type) { case *sshFxpReadPacket: - length = p.Len - offset = int64(p.Offset) + return p.getDataSlice(alloc, orderID), int64(p.Offset), p.Len case *sshFxpWritePacket: - data = p.Data - length = p.Length - offset = int64(p.Offset) + return p.Data, int64(p.Offset), p.Length } return } // wrap FileCmder handler func filecmd(h FileCmder, r *Request, pkt requestPacket) responsePacket { - switch p := pkt.(type) { case *sshFxpFsetstatPacket: r.Flags = p.Flags r.Attrs = p.Attrs.([]byte) } + + if r.Method == "PosixRename" { + if posixRenamer, ok := h.(PosixRenameFileCmder); ok { + err := posixRenamer.PosixRename(r) + return statusFromError(pkt.id(), err) + } + + // PosixRenameFileCmder not implemented handle this request as a Rename + r.Method = "Rename" + err := h.Filecmd(r) + return statusFromError(pkt.id(), err) + } + + if r.Method == "StatVFS" { + if statVFSCmdr, ok := h.(StatVFSFileCmder); ok { + stat, err := statVFSCmdr.StatVFS(r) + if err != nil { + return statusFromError(pkt.id(), err) + } + stat.ID = pkt.id() + return stat + } + + return statusFromError(pkt.id(), ErrSSHFxOpUnsupported) + } + err := h.Filecmd(r) - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } // wrap FileLister handler @@ -273,7 +392,7 @@ func filelist(h FileLister, r *Request, pkt requestPacket) responsePacket { var err error lister := r.getLister() if lister == nil { - return statusFromError(pkt, errors.New("unexpected dir packet")) + return statusFromError(pkt.id(), errors.New("unexpected dir packet")) } offset := r.lsNext() @@ -286,16 +405,16 @@ func filelist(h FileLister, r *Request, pkt requestPacket) responsePacket { switch r.Method { case "List": if err != nil && err != io.EOF { - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } if err == io.EOF && n == 0 { - return statusFromError(pkt, io.EOF) + return statusFromError(pkt.id(), io.EOF) } dirname := filepath.ToSlash(path.Base(r.Filepath)) ret := &sshFxpNamePacket{ID: pkt.id()} for _, fi := range finfo { - ret.NameAttrs = append(ret.NameAttrs, sshFxpNameAttr{ + ret.NameAttrs = append(ret.NameAttrs, &sshFxpNameAttr{ Name: fi.Name(), LongName: runLs(dirname, fi), Attrs: []interface{}{fi}, @@ -304,28 +423,41 @@ func filelist(h FileLister, r *Request, pkt requestPacket) responsePacket { return ret default: err = errors.Errorf("unexpected method: %s", r.Method) - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } } func filestat(h FileLister, r *Request, pkt requestPacket) responsePacket { - lister, err := h.Filelist(r) + var lister ListerAt + var err error + + if r.Method == "Lstat" { + if lstatFileLister, ok := h.(LstatFileLister); ok { + lister, err = lstatFileLister.Lstat(r) + } else { + // LstatFileLister not implemented handle this request as a Stat + r.Method = "Stat" + lister, err = h.Filelist(r) + } + } else { + lister, err = h.Filelist(r) + } if err != nil { - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } finfo := make([]os.FileInfo, 1) n, err := lister.ListAt(finfo, 0) finfo = finfo[:n] // avoid need for nil tests below switch r.Method { - case "Stat": + case "Stat", "Lstat": if err != nil && err != io.EOF { - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } if n == 0 { - err = &os.PathError{Op: "stat", Path: r.Filepath, + err = &os.PathError{Op: strings.ToLower(r.Method), Path: r.Filepath, Err: syscall.ENOENT} - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } return &sshFxpStatResponse{ ID: pkt.id(), @@ -333,25 +465,27 @@ func filestat(h FileLister, r *Request, pkt requestPacket) responsePacket { } case "Readlink": if err != nil && err != io.EOF { - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } if n == 0 { err = &os.PathError{Op: "readlink", Path: r.Filepath, Err: syscall.ENOENT} - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } filename := finfo[0].Name() return &sshFxpNamePacket{ ID: pkt.id(), - NameAttrs: []sshFxpNameAttr{{ - Name: filename, - LongName: filename, - Attrs: emptyFileStat, - }}, + NameAttrs: []*sshFxpNameAttr{ + { + Name: filename, + LongName: filename, + Attrs: emptyFileStat, + }, + }, } default: err = errors.Errorf("unexpected method: %s", r.Method) - return statusFromError(pkt, err) + return statusFromError(pkt.id(), err) } } @@ -370,14 +504,18 @@ func requestMethod(p requestPacket) (method string) { method = "Symlink" case *sshFxpRemovePacket: method = "Remove" - case *sshFxpStatPacket, *sshFxpLstatPacket, *sshFxpFstatPacket: + case *sshFxpStatPacket, *sshFxpFstatPacket: method = "Stat" + case *sshFxpLstatPacket: + method = "Lstat" case *sshFxpRmdirPacket: method = "Rmdir" case *sshFxpReadlinkPacket: method = "Readlink" case *sshFxpMkdirPacket: method = "Mkdir" + case *sshFxpExtendedPacketHardlink: + method = "Link" } return method } diff --git a/vendor/github.com/pkg/sftp/server.go b/vendor/github.com/pkg/sftp/server.go index 0fac1b6684..909563f02d 100644 --- a/vendor/github.com/pkg/sftp/server.go +++ b/vendor/github.com/pkg/sftp/server.go @@ -18,6 +18,7 @@ import ( ) const ( + // SftpServerWorkerCount defines the number of workers for the SFTP server SftpServerWorkerCount = 8 ) @@ -33,7 +34,6 @@ type Server struct { openFiles map[string]*os.File openFilesLock sync.RWMutex handleCount int - maxTxPacket uint32 } func (svr *Server) nextHandle(f *os.File) string { @@ -53,7 +53,7 @@ func (svr *Server) closeHandle(handle string) error { return f.Close() } - return syscall.EBADF + return EBADF } func (svr *Server) getHandle(handle string) (*os.File, bool) { @@ -86,7 +86,6 @@ func NewServer(rwc io.ReadWriteCloser, options ...ServerOption) (*Server, error) debugStream: ioutil.Discard, pktMgr: newPktMgr(svrConn), openFiles: make(map[string]*os.File), - maxTxPacket: 1 << 15, } for _, o := range options { @@ -117,6 +116,19 @@ func ReadOnly() ServerOption { } } +// WithAllocator enable the allocator. +// After processing a packet we keep in memory the allocated slices +// and we reuse them for new packets. +// The allocator is experimental +func WithAllocator() ServerOption { + return func(s *Server) error { + alloc := newAllocator() + s.pktMgr.alloc = alloc + s.conn.alloc = alloc + return nil + } +} + type rxPacket struct { pktType fxp pktBytes []byte @@ -139,9 +151,9 @@ func (svr *Server) sftpServerWorker(pktChan chan orderedRequest) error { // If server is operating read-only and a write operation is requested, // return permission denied if !readonly && svr.readOnly { - svr.sendPacket(orderedResponse{ - responsePacket: statusFromError(pkt, syscall.EPERM), - orderid: pkt.orderId()}) + svr.pktMgr.readyPacket( + svr.pktMgr.newOrderedResponse(statusFromError(pkt.id(), syscall.EPERM), pkt.orderID()), + ) continue } @@ -154,141 +166,161 @@ func (svr *Server) sftpServerWorker(pktChan chan orderedRequest) error { func handlePacket(s *Server, p orderedRequest) error { var rpkt responsePacket + orderID := p.orderID() switch p := p.requestPacket.(type) { case *sshFxInitPacket: - rpkt = sshFxVersionPacket{Version: sftpProtocolVersion} + rpkt = &sshFxVersionPacket{ + Version: sftpProtocolVersion, + Extensions: sftpExtensions, + } case *sshFxpStatPacket: // stat the requested file info, err := os.Stat(p.Path) - rpkt = sshFxpStatResponse{ + rpkt = &sshFxpStatResponse{ ID: p.ID, info: info, } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpLstatPacket: // stat the requested file info, err := os.Lstat(p.Path) - rpkt = sshFxpStatResponse{ + rpkt = &sshFxpStatResponse{ ID: p.ID, info: info, } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpFstatPacket: f, ok := s.getHandle(p.Handle) - var err error = syscall.EBADF + var err error = EBADF var info os.FileInfo if ok { info, err = f.Stat() - rpkt = sshFxpStatResponse{ + rpkt = &sshFxpStatResponse{ ID: p.ID, info: info, } } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpMkdirPacket: // TODO FIXME: ignore flags field err := os.Mkdir(p.Path, 0755) - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) case *sshFxpRmdirPacket: err := os.Remove(p.Path) - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) case *sshFxpRemovePacket: err := os.Remove(p.Filename) - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) case *sshFxpRenamePacket: err := os.Rename(p.Oldpath, p.Newpath) - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) case *sshFxpSymlinkPacket: err := os.Symlink(p.Targetpath, p.Linkpath) - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) case *sshFxpClosePacket: - rpkt = statusFromError(p, s.closeHandle(p.Handle)) + rpkt = statusFromError(p.ID, s.closeHandle(p.Handle)) case *sshFxpReadlinkPacket: f, err := os.Readlink(p.Path) - rpkt = sshFxpNamePacket{ + rpkt = &sshFxpNamePacket{ ID: p.ID, - NameAttrs: []sshFxpNameAttr{{ - Name: f, - LongName: f, - Attrs: emptyFileStat, - }}, + NameAttrs: []*sshFxpNameAttr{ + { + Name: f, + LongName: f, + Attrs: emptyFileStat, + }, + }, } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpRealpathPacket: f, err := filepath.Abs(p.Path) f = cleanPath(f) - rpkt = sshFxpNamePacket{ + rpkt = &sshFxpNamePacket{ ID: p.ID, - NameAttrs: []sshFxpNameAttr{{ - Name: f, - LongName: f, - Attrs: emptyFileStat, - }}, + NameAttrs: []*sshFxpNameAttr{ + { + Name: f, + LongName: f, + Attrs: emptyFileStat, + }, + }, } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpOpendirPacket: if stat, err := os.Stat(p.Path); err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } else if !stat.IsDir() { - rpkt = statusFromError(p, &os.PathError{ + rpkt = statusFromError(p.ID, &os.PathError{ Path: p.Path, Err: syscall.ENOTDIR}) } else { - rpkt = sshFxpOpenPacket{ + rpkt = (&sshFxpOpenPacket{ ID: p.ID, Path: p.Path, - Pflags: ssh_FXF_READ, - }.respond(s) + Pflags: sshFxfRead, + }).respond(s) } case *sshFxpReadPacket: - var err error = syscall.EBADF + var err error = EBADF f, ok := s.getHandle(p.Handle) if ok { err = nil - data := make([]byte, clamp(p.Len, s.maxTxPacket)) + data := p.getDataSlice(s.pktMgr.alloc, orderID) n, _err := f.ReadAt(data, int64(p.Offset)) if _err != nil && (_err != io.EOF || n == 0) { err = _err } - rpkt = sshFxpDataPacket{ + rpkt = &sshFxpDataPacket{ ID: p.ID, Length: uint32(n), Data: data[:n], + // do not use data[:n:n] here to clamp the capacity, we allocated extra capacity above to avoid reallocations } } if err != nil { - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) } case *sshFxpWritePacket: f, ok := s.getHandle(p.Handle) - var err error = syscall.EBADF + var err error = EBADF if ok { _, err = f.WriteAt(p.Data, int64(p.Offset)) } - rpkt = statusFromError(p, err) + rpkt = statusFromError(p.ID, err) + case *sshFxpExtendedPacket: + if p.SpecificPacket == nil { + rpkt = statusFromError(p.ID, ErrSSHFxOpUnsupported) + } else { + rpkt = p.respond(s) + } case serverRespondablePacket: rpkt = p.respond(s) default: return errors.Errorf("unexpected packet type %T", p) } - s.pktMgr.readyPacket(s.pktMgr.newOrderedResponse(rpkt, p.orderId())) + s.pktMgr.readyPacket(s.pktMgr.newOrderedResponse(rpkt, orderID)) return nil } // Serve serves SFTP connections until the streams stop or the SFTP subsystem // is stopped. func (svr *Server) Serve() error { + defer func() { + if svr.pktMgr.alloc != nil { + svr.pktMgr.alloc.Free() + } + }() var wg sync.WaitGroup runWorker := func(ch chan orderedRequest) { wg.Add(1) @@ -306,8 +338,9 @@ func (svr *Server) Serve() error { var pktType uint8 var pktBytes []byte for { - pktType, pktBytes, err = svr.recvPacket() + pktType, pktBytes, err = svr.serverConn.recvPacket(svr.pktMgr.getNextOrderID()) if err != nil { + // we don't care about releasing allocated pages here, the server will quit and the allocator freed break } @@ -315,11 +348,11 @@ func (svr *Server) Serve() error { if err != nil { switch errors.Cause(err) { case errUnknownExtendedPacket: - if err := svr.serverConn.sendError(pkt, ErrSshFxOpUnsupported); err != nil { - debug("failed to send err packet: %v", err) - svr.conn.Close() // shuts down recvPacket - break - } + //if err := svr.serverConn.sendError(pkt, ErrSshFxOpUnsupported); err != nil { + // debug("failed to send err packet: %v", err) + // svr.conn.Close() // shuts down recvPacket + // break + //} default: debug("makePacket err: %v", err) svr.conn.Close() // shuts down recvPacket @@ -346,27 +379,38 @@ type ider interface { } // The init packet has no ID, so we just return a zero-value ID -func (p sshFxInitPacket) id() uint32 { return 0 } +func (p *sshFxInitPacket) id() uint32 { return 0 } type sshFxpStatResponse struct { ID uint32 info os.FileInfo } -func (p sshFxpStatResponse) MarshalBinary() ([]byte, error) { - b := []byte{ssh_FXP_ATTRS} +func (p *sshFxpStatResponse) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(id) + + b := make([]byte, 4, l) + b = append(b, sshFxpAttrs) b = marshalUint32(b, p.ID) - b = marshalFileInfo(b, p.info) - return b, nil + + var payload []byte + payload = marshalFileInfo(payload, p.info) + + return b, payload, nil +} + +func (p *sshFxpStatResponse) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err } var emptyFileStat = []interface{}{uint32(0)} -func (p sshFxpOpenPacket) readonly() bool { - return !p.hasPflags(ssh_FXF_WRITE) +func (p *sshFxpOpenPacket) readonly() bool { + return !p.hasPflags(sshFxfWrite) } -func (p sshFxpOpenPacket) hasPflags(flags ...uint32) bool { +func (p *sshFxpOpenPacket) hasPflags(flags ...uint32) bool { for _, f := range flags { if p.Pflags&f == 0 { return false @@ -375,56 +419,56 @@ func (p sshFxpOpenPacket) hasPflags(flags ...uint32) bool { return true } -func (p sshFxpOpenPacket) respond(svr *Server) responsePacket { +func (p *sshFxpOpenPacket) respond(svr *Server) responsePacket { var osFlags int - if p.hasPflags(ssh_FXF_READ, ssh_FXF_WRITE) { + if p.hasPflags(sshFxfRead, sshFxfWrite) { osFlags |= os.O_RDWR - } else if p.hasPflags(ssh_FXF_WRITE) { + } else if p.hasPflags(sshFxfWrite) { osFlags |= os.O_WRONLY - } else if p.hasPflags(ssh_FXF_READ) { + } else if p.hasPflags(sshFxfRead) { osFlags |= os.O_RDONLY } else { // how are they opening? - return statusFromError(p, syscall.EINVAL) + return statusFromError(p.ID, syscall.EINVAL) } - if p.hasPflags(ssh_FXF_APPEND) { - osFlags |= os.O_APPEND - } - if p.hasPflags(ssh_FXF_CREAT) { + // Don't use O_APPEND flag as it conflicts with WriteAt. + // The sshFxfAppend flag is a no-op here as the client sends the offsets. + + if p.hasPflags(sshFxfCreat) { osFlags |= os.O_CREATE } - if p.hasPflags(ssh_FXF_TRUNC) { + if p.hasPflags(sshFxfTrunc) { osFlags |= os.O_TRUNC } - if p.hasPflags(ssh_FXF_EXCL) { + if p.hasPflags(sshFxfExcl) { osFlags |= os.O_EXCL } f, err := os.OpenFile(p.Path, osFlags, 0644) if err != nil { - return statusFromError(p, err) + return statusFromError(p.ID, err) } handle := svr.nextHandle(f) - return sshFxpHandlePacket{ID: p.id(), Handle: handle} + return &sshFxpHandlePacket{ID: p.ID, Handle: handle} } -func (p sshFxpReaddirPacket) respond(svr *Server) responsePacket { +func (p *sshFxpReaddirPacket) respond(svr *Server) responsePacket { f, ok := svr.getHandle(p.Handle) if !ok { - return statusFromError(p, syscall.EBADF) + return statusFromError(p.ID, EBADF) } dirname := f.Name() dirents, err := f.Readdir(128) if err != nil { - return statusFromError(p, err) + return statusFromError(p.ID, err) } - ret := sshFxpNamePacket{ID: p.ID} + ret := &sshFxpNamePacket{ID: p.ID} for _, dirent := range dirents { - ret.NameAttrs = append(ret.NameAttrs, sshFxpNameAttr{ + ret.NameAttrs = append(ret.NameAttrs, &sshFxpNameAttr{ Name: dirent.Name(), LongName: runLs(dirname, dirent), Attrs: []interface{}{dirent}, @@ -433,25 +477,25 @@ func (p sshFxpReaddirPacket) respond(svr *Server) responsePacket { return ret } -func (p sshFxpSetstatPacket) respond(svr *Server) responsePacket { +func (p *sshFxpSetstatPacket) respond(svr *Server) responsePacket { // additional unmarshalling is required for each possibility here b := p.Attrs.([]byte) var err error debug("setstat name \"%s\"", p.Path) - if (p.Flags & ssh_FILEXFER_ATTR_SIZE) != 0 { + if (p.Flags & sshFileXferAttrSize) != 0 { var size uint64 if size, b, err = unmarshalUint64Safe(b); err == nil { err = os.Truncate(p.Path, int64(size)) } } - if (p.Flags & ssh_FILEXFER_ATTR_PERMISSIONS) != 0 { + if (p.Flags & sshFileXferAttrPermissions) != 0 { var mode uint32 if mode, b, err = unmarshalUint32Safe(b); err == nil { err = os.Chmod(p.Path, os.FileMode(mode)) } } - if (p.Flags & ssh_FILEXFER_ATTR_ACMODTIME) != 0 { + if (p.Flags & sshFileXferAttrACmodTime) != 0 { var atime uint32 var mtime uint32 if atime, b, err = unmarshalUint32Safe(b); err != nil { @@ -462,7 +506,7 @@ func (p sshFxpSetstatPacket) respond(svr *Server) responsePacket { err = os.Chtimes(p.Path, atimeT, mtimeT) } } - if (p.Flags & ssh_FILEXFER_ATTR_UIDGID) != 0 { + if (p.Flags & sshFileXferAttrUIDGID) != 0 { var uid uint32 var gid uint32 if uid, b, err = unmarshalUint32Safe(b); err != nil { @@ -472,13 +516,13 @@ func (p sshFxpSetstatPacket) respond(svr *Server) responsePacket { } } - return statusFromError(p, err) + return statusFromError(p.ID, err) } -func (p sshFxpFsetstatPacket) respond(svr *Server) responsePacket { +func (p *sshFxpFsetstatPacket) respond(svr *Server) responsePacket { f, ok := svr.getHandle(p.Handle) if !ok { - return statusFromError(p, syscall.EBADF) + return statusFromError(p.ID, EBADF) } // additional unmarshalling is required for each possibility here @@ -486,19 +530,19 @@ func (p sshFxpFsetstatPacket) respond(svr *Server) responsePacket { var err error debug("fsetstat name \"%s\"", f.Name()) - if (p.Flags & ssh_FILEXFER_ATTR_SIZE) != 0 { + if (p.Flags & sshFileXferAttrSize) != 0 { var size uint64 if size, b, err = unmarshalUint64Safe(b); err == nil { err = f.Truncate(int64(size)) } } - if (p.Flags & ssh_FILEXFER_ATTR_PERMISSIONS) != 0 { + if (p.Flags & sshFileXferAttrPermissions) != 0 { var mode uint32 if mode, b, err = unmarshalUint32Safe(b); err == nil { err = f.Chmod(os.FileMode(mode)) } } - if (p.Flags & ssh_FILEXFER_ATTR_ACMODTIME) != 0 { + if (p.Flags & sshFileXferAttrACmodTime) != 0 { var atime uint32 var mtime uint32 if atime, b, err = unmarshalUint32Safe(b); err != nil { @@ -509,7 +553,7 @@ func (p sshFxpFsetstatPacket) respond(svr *Server) responsePacket { err = os.Chtimes(f.Name(), atimeT, mtimeT) } } - if (p.Flags & ssh_FILEXFER_ATTR_UIDGID) != 0 { + if (p.Flags & sshFileXferAttrUIDGID) != 0 { var uid uint32 var gid uint32 if uid, b, err = unmarshalUint32Safe(b); err != nil { @@ -519,37 +563,23 @@ func (p sshFxpFsetstatPacket) respond(svr *Server) responsePacket { } } - return statusFromError(p, err) -} - -// translateErrno translates a syscall error number to a SFTP error code. -func translateErrno(errno syscall.Errno) uint32 { - switch errno { - case 0: - return ssh_FX_OK - case syscall.ENOENT: - return ssh_FX_NO_SUCH_FILE - case syscall.EPERM: - return ssh_FX_PERMISSION_DENIED - } - - return ssh_FX_FAILURE + return statusFromError(p.ID, err) } -func statusFromError(p ider, err error) sshFxpStatusPacket { - ret := sshFxpStatusPacket{ - ID: p.id(), +func statusFromError(id uint32, err error) *sshFxpStatusPacket { + ret := &sshFxpStatusPacket{ + ID: id, StatusError: StatusError{ - // ssh_FX_OK = 0 - // ssh_FX_EOF = 1 - // ssh_FX_NO_SUCH_FILE = 2 ENOENT - // ssh_FX_PERMISSION_DENIED = 3 - // ssh_FX_FAILURE = 4 - // ssh_FX_BAD_MESSAGE = 5 - // ssh_FX_NO_CONNECTION = 6 - // ssh_FX_CONNECTION_LOST = 7 - // ssh_FX_OP_UNSUPPORTED = 8 - Code: ssh_FX_OK, + // sshFXOk = 0 + // sshFXEOF = 1 + // sshFXNoSuchFile = 2 ENOENT + // sshFXPermissionDenied = 3 + // sshFXFailure = 4 + // sshFXBadMessage = 5 + // sshFXNoConnection = 6 + // sshFXConnectionLost = 7 + // sshFXOPUnsupported = 8 + Code: sshFxOk, }, } if err == nil { @@ -557,25 +587,24 @@ func statusFromError(p ider, err error) sshFxpStatusPacket { } debug("statusFromError: error is %T %#v", err, err) - ret.StatusError.Code = ssh_FX_FAILURE + ret.StatusError.Code = sshFxFailure ret.StatusError.msg = err.Error() + if os.IsNotExist(err) { + ret.StatusError.Code = sshFxNoSuchFile + return ret + } + if code, ok := translateSyscallError(err); ok { + ret.StatusError.Code = code + return ret + } + switch e := err.(type) { - case syscall.Errno: - ret.StatusError.Code = translateErrno(e) - case *os.PathError: - debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) - if errno, ok := e.Err.(syscall.Errno); ok { - ret.StatusError.Code = translateErrno(errno) - } case fxerr: ret.StatusError.Code = uint32(e) default: - switch e { - case io.EOF: - ret.StatusError.Code = ssh_FX_EOF - case os.ErrNotExist: - ret.StatusError.Code = ssh_FX_NO_SUCH_FILE + if e == io.EOF { + ret.StatusError.Code = sshFxEOF } } diff --git a/vendor/github.com/pkg/sftp/server_statvfs_impl.go b/vendor/github.com/pkg/sftp/server_statvfs_impl.go index 4cf91dc83d..2d467d1ee3 100644 --- a/vendor/github.com/pkg/sftp/server_statvfs_impl.go +++ b/vendor/github.com/pkg/sftp/server_statvfs_impl.go @@ -9,17 +9,20 @@ import ( "syscall" ) -func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { - stat := &syscall.Statfs_t{} - if err := syscall.Statfs(p.Path, stat); err != nil { - return statusFromError(p, err) - } - - retPkt, err := statvfsFromStatfst(stat) +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + retPkt, err := getStatVFSForPath(p.Path) if err != nil { - return statusFromError(p, err) + return statusFromError(p.ID, err) } - retPkt.ID = p.ID return retPkt } + +func getStatVFSForPath(name string) (*StatVFS, error) { + var stat syscall.Statfs_t + if err := syscall.Statfs(name, &stat); err != nil { + return nil, err + } + + return statvfsFromStatfst(&stat) +} diff --git a/vendor/github.com/pkg/sftp/server_statvfs_plan9.go b/vendor/github.com/pkg/sftp/server_statvfs_plan9.go new file mode 100644 index 0000000000..e71a27d37b --- /dev/null +++ b/vendor/github.com/pkg/sftp/server_statvfs_plan9.go @@ -0,0 +1,13 @@ +package sftp + +import ( + "syscall" +) + +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + return statusFromError(p.ID, syscall.EPLAN9) +} + +func getStatVFSForPath(name string) (*StatVFS, error) { + return nil, syscall.EPLAN9 +} diff --git a/vendor/github.com/pkg/sftp/server_statvfs_stubs.go b/vendor/github.com/pkg/sftp/server_statvfs_stubs.go index c6f61643cc..fbf49068f9 100644 --- a/vendor/github.com/pkg/sftp/server_statvfs_stubs.go +++ b/vendor/github.com/pkg/sftp/server_statvfs_stubs.go @@ -1,4 +1,4 @@ -// +build !darwin,!linux +// +build !darwin,!linux,!plan9 package sftp @@ -6,6 +6,10 @@ import ( "syscall" ) -func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { - return statusFromError(p, syscall.ENOTSUP) +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + return statusFromError(p.ID, syscall.ENOTSUP) +} + +func getStatVFSForPath(name string) (*StatVFS, error) { + return nil, syscall.ENOTSUP } diff --git a/vendor/github.com/pkg/sftp/server_stubs.go b/vendor/github.com/pkg/sftp/server_stubs.go index a14c734824..62c9fa1a19 100644 --- a/vendor/github.com/pkg/sftp/server_stubs.go +++ b/vendor/github.com/pkg/sftp/server_stubs.go @@ -1,11 +1,11 @@ -// +build !cgo,!plan9 windows android +// +build !cgo plan9 windows android package sftp import ( + "fmt" "os" "time" - "fmt" ) func runLs(dirname string, dirent os.FileInfo) string { diff --git a/vendor/github.com/pkg/sftp/sftp.go b/vendor/github.com/pkg/sftp/sftp.go index 3cdb14df82..51d0386985 100644 --- a/vendor/github.com/pkg/sftp/sftp.go +++ b/vendor/github.com/pkg/sftp/sftp.go @@ -9,139 +9,149 @@ import ( ) const ( - ssh_FXP_INIT = 1 - ssh_FXP_VERSION = 2 - ssh_FXP_OPEN = 3 - ssh_FXP_CLOSE = 4 - ssh_FXP_READ = 5 - ssh_FXP_WRITE = 6 - ssh_FXP_LSTAT = 7 - ssh_FXP_FSTAT = 8 - ssh_FXP_SETSTAT = 9 - ssh_FXP_FSETSTAT = 10 - ssh_FXP_OPENDIR = 11 - ssh_FXP_READDIR = 12 - ssh_FXP_REMOVE = 13 - ssh_FXP_MKDIR = 14 - ssh_FXP_RMDIR = 15 - ssh_FXP_REALPATH = 16 - ssh_FXP_STAT = 17 - ssh_FXP_RENAME = 18 - ssh_FXP_READLINK = 19 - ssh_FXP_SYMLINK = 20 - ssh_FXP_STATUS = 101 - ssh_FXP_HANDLE = 102 - ssh_FXP_DATA = 103 - ssh_FXP_NAME = 104 - ssh_FXP_ATTRS = 105 - ssh_FXP_EXTENDED = 200 - ssh_FXP_EXTENDED_REPLY = 201 + sshFxpInit = 1 + sshFxpVersion = 2 + sshFxpOpen = 3 + sshFxpClose = 4 + sshFxpRead = 5 + sshFxpWrite = 6 + sshFxpLstat = 7 + sshFxpFstat = 8 + sshFxpSetstat = 9 + sshFxpFsetstat = 10 + sshFxpOpendir = 11 + sshFxpReaddir = 12 + sshFxpRemove = 13 + sshFxpMkdir = 14 + sshFxpRmdir = 15 + sshFxpRealpath = 16 + sshFxpStat = 17 + sshFxpRename = 18 + sshFxpReadlink = 19 + sshFxpSymlink = 20 + sshFxpStatus = 101 + sshFxpHandle = 102 + sshFxpData = 103 + sshFxpName = 104 + sshFxpAttrs = 105 + sshFxpExtended = 200 + sshFxpExtendedReply = 201 ) const ( - ssh_FX_OK = 0 - ssh_FX_EOF = 1 - ssh_FX_NO_SUCH_FILE = 2 - ssh_FX_PERMISSION_DENIED = 3 - ssh_FX_FAILURE = 4 - ssh_FX_BAD_MESSAGE = 5 - ssh_FX_NO_CONNECTION = 6 - ssh_FX_CONNECTION_LOST = 7 - ssh_FX_OP_UNSUPPORTED = 8 + sshFxOk = 0 + sshFxEOF = 1 + sshFxNoSuchFile = 2 + sshFxPermissionDenied = 3 + sshFxFailure = 4 + sshFxBadMessage = 5 + sshFxNoConnection = 6 + sshFxConnectionLost = 7 + sshFxOPUnsupported = 8 // see draft-ietf-secsh-filexfer-13 // https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.1 - ssh_FX_INVALID_HANDLE = 9 - ssh_FX_NO_SUCH_PATH = 10 - ssh_FX_FILE_ALREADY_EXISTS = 11 - ssh_FX_WRITE_PROTECT = 12 - ssh_FX_NO_MEDIA = 13 - ssh_FX_NO_SPACE_ON_FILESYSTEM = 14 - ssh_FX_QUOTA_EXCEEDED = 15 - ssh_FX_UNKNOWN_PRINCIPAL = 16 - ssh_FX_LOCK_CONFLICT = 17 - ssh_FX_DIR_NOT_EMPTY = 18 - ssh_FX_NOT_A_DIRECTORY = 19 - ssh_FX_INVALID_FILENAME = 20 - ssh_FX_LINK_LOOP = 21 - ssh_FX_CANNOT_DELETE = 22 - ssh_FX_INVALID_PARAMETER = 23 - ssh_FX_FILE_IS_A_DIRECTORY = 24 - ssh_FX_BYTE_RANGE_LOCK_CONFLICT = 25 - ssh_FX_BYTE_RANGE_LOCK_REFUSED = 26 - ssh_FX_DELETE_PENDING = 27 - ssh_FX_FILE_CORRUPT = 28 - ssh_FX_OWNER_INVALID = 29 - ssh_FX_GROUP_INVALID = 30 - ssh_FX_NO_MATCHING_BYTE_RANGE_LOCK = 31 + sshFxInvalidHandle = 9 + sshFxNoSuchPath = 10 + sshFxFileAlreadyExists = 11 + sshFxWriteProtect = 12 + sshFxNoMedia = 13 + sshFxNoSpaceOnFilesystem = 14 + sshFxQuotaExceeded = 15 + sshFxUnknownPrincipal = 16 + sshFxLockConflict = 17 + sshFxDirNotEmpty = 18 + sshFxNotADirectory = 19 + sshFxInvalidFilename = 20 + sshFxLinkLoop = 21 + sshFxCannotDelete = 22 + sshFxInvalidParameter = 23 + sshFxFileIsADirectory = 24 + sshFxByteRangeLockConflict = 25 + sshFxByteRangeLockRefused = 26 + sshFxDeletePending = 27 + sshFxFileCorrupt = 28 + sshFxOwnerInvalid = 29 + sshFxGroupInvalid = 30 + sshFxNoMatchingByteRangeLock = 31 ) const ( - ssh_FXF_READ = 0x00000001 - ssh_FXF_WRITE = 0x00000002 - ssh_FXF_APPEND = 0x00000004 - ssh_FXF_CREAT = 0x00000008 - ssh_FXF_TRUNC = 0x00000010 - ssh_FXF_EXCL = 0x00000020 + sshFxfRead = 0x00000001 + sshFxfWrite = 0x00000002 + sshFxfAppend = 0x00000004 + sshFxfCreat = 0x00000008 + sshFxfTrunc = 0x00000010 + sshFxfExcl = 0x00000020 +) + +var ( + // supportedSFTPExtensions defines the supported extensions + supportedSFTPExtensions = []sshExtensionPair{ + {"hardlink@openssh.com", "1"}, + {"posix-rename@openssh.com", "1"}, + {"statvfs@openssh.com", "2"}, + } + sftpExtensions = supportedSFTPExtensions ) type fxp uint8 func (f fxp) String() string { switch f { - case ssh_FXP_INIT: + case sshFxpInit: return "SSH_FXP_INIT" - case ssh_FXP_VERSION: + case sshFxpVersion: return "SSH_FXP_VERSION" - case ssh_FXP_OPEN: + case sshFxpOpen: return "SSH_FXP_OPEN" - case ssh_FXP_CLOSE: + case sshFxpClose: return "SSH_FXP_CLOSE" - case ssh_FXP_READ: + case sshFxpRead: return "SSH_FXP_READ" - case ssh_FXP_WRITE: + case sshFxpWrite: return "SSH_FXP_WRITE" - case ssh_FXP_LSTAT: + case sshFxpLstat: return "SSH_FXP_LSTAT" - case ssh_FXP_FSTAT: + case sshFxpFstat: return "SSH_FXP_FSTAT" - case ssh_FXP_SETSTAT: + case sshFxpSetstat: return "SSH_FXP_SETSTAT" - case ssh_FXP_FSETSTAT: + case sshFxpFsetstat: return "SSH_FXP_FSETSTAT" - case ssh_FXP_OPENDIR: + case sshFxpOpendir: return "SSH_FXP_OPENDIR" - case ssh_FXP_READDIR: + case sshFxpReaddir: return "SSH_FXP_READDIR" - case ssh_FXP_REMOVE: + case sshFxpRemove: return "SSH_FXP_REMOVE" - case ssh_FXP_MKDIR: + case sshFxpMkdir: return "SSH_FXP_MKDIR" - case ssh_FXP_RMDIR: + case sshFxpRmdir: return "SSH_FXP_RMDIR" - case ssh_FXP_REALPATH: + case sshFxpRealpath: return "SSH_FXP_REALPATH" - case ssh_FXP_STAT: + case sshFxpStat: return "SSH_FXP_STAT" - case ssh_FXP_RENAME: + case sshFxpRename: return "SSH_FXP_RENAME" - case ssh_FXP_READLINK: + case sshFxpReadlink: return "SSH_FXP_READLINK" - case ssh_FXP_SYMLINK: + case sshFxpSymlink: return "SSH_FXP_SYMLINK" - case ssh_FXP_STATUS: + case sshFxpStatus: return "SSH_FXP_STATUS" - case ssh_FXP_HANDLE: + case sshFxpHandle: return "SSH_FXP_HANDLE" - case ssh_FXP_DATA: + case sshFxpData: return "SSH_FXP_DATA" - case ssh_FXP_NAME: + case sshFxpName: return "SSH_FXP_NAME" - case ssh_FXP_ATTRS: + case sshFxpAttrs: return "SSH_FXP_ATTRS" - case ssh_FXP_EXTENDED: + case sshFxpExtended: return "SSH_FXP_EXTENDED" - case ssh_FXP_EXTENDED_REPLY: + case sshFxpExtendedReply: return "SSH_FXP_EXTENDED_REPLY" default: return "unknown" @@ -152,23 +162,23 @@ type fx uint8 func (f fx) String() string { switch f { - case ssh_FX_OK: + case sshFxOk: return "SSH_FX_OK" - case ssh_FX_EOF: + case sshFxEOF: return "SSH_FX_EOF" - case ssh_FX_NO_SUCH_FILE: + case sshFxNoSuchFile: return "SSH_FX_NO_SUCH_FILE" - case ssh_FX_PERMISSION_DENIED: + case sshFxPermissionDenied: return "SSH_FX_PERMISSION_DENIED" - case ssh_FX_FAILURE: + case sshFxFailure: return "SSH_FX_FAILURE" - case ssh_FX_BAD_MESSAGE: + case sshFxBadMessage: return "SSH_FX_BAD_MESSAGE" - case ssh_FX_NO_CONNECTION: + case sshFxNoConnection: return "SSH_FX_NO_CONNECTION" - case ssh_FX_CONNECTION_LOST: + case sshFxConnectionLost: return "SSH_FX_CONNECTION_LOST" - case ssh_FX_OP_UNSUPPORTED: + case sshFxOPUnsupported: return "SSH_FX_OP_UNSUPPORTED" default: return "unknown" @@ -190,15 +200,15 @@ func unimplementedPacketErr(u uint8) error { type unexpectedIDErr struct{ want, got uint32 } func (u *unexpectedIDErr) Error() string { - return fmt.Sprintf("sftp: unexpected id: want %v, got %v", u.want, u.got) + return fmt.Sprintf("sftp: unexpected id: want %d, got %d", u.want, u.got) } func unimplementedSeekWhence(whence int) error { - return errors.Errorf("sftp: unimplemented seek whence %v", whence) + return errors.Errorf("sftp: unimplemented seek whence %d", whence) } func unexpectedCount(want, got uint32) error { - return errors.Errorf("sftp: unexpected count: want %v, got %v", want, got) + return errors.Errorf("sftp: unexpected count: want %d, got %d", want, got) } type unexpectedVersionErr struct{ want, got uint32 } @@ -214,4 +224,37 @@ type StatusError struct { msg, lang string } -func (s *StatusError) Error() string { return fmt.Sprintf("sftp: %q (%v)", s.msg, fx(s.Code)) } +func (s *StatusError) Error() string { + return fmt.Sprintf("sftp: %q (%v)", s.msg, fx(s.Code)) +} + +// FxCode returns the error code typed to match against the exported codes +func (s *StatusError) FxCode() fxerr { + return fxerr(s.Code) +} + +func getSupportedExtensionByName(extensionName string) (sshExtensionPair, error) { + for _, supportedExtension := range supportedSFTPExtensions { + if supportedExtension.Name == extensionName { + return supportedExtension, nil + } + } + return sshExtensionPair{}, errors.Errorf("unsupported extension: %s", extensionName) +} + +// SetSFTPExtensions allows to customize the supported server extensions. +// See the variable supportedSFTPExtensions for supported extensions. +// This method accepts a slice of sshExtensionPair names for example 'hardlink@openssh.com'. +// If an invalid extension is given an error will be returned and nothing will be changed +func SetSFTPExtensions(extensions ...string) error { + tempExtensions := []sshExtensionPair{} + for _, extension := range extensions { + sftpExtension, err := getSupportedExtensionByName(extension) + if err != nil { + return err + } + tempExtensions = append(tempExtensions, sftpExtension) + } + sftpExtensions = tempExtensions + return nil +} diff --git a/vendor/github.com/pkg/sftp/stat_plan9.go b/vendor/github.com/pkg/sftp/stat_plan9.go new file mode 100644 index 0000000000..418f121c5b --- /dev/null +++ b/vendor/github.com/pkg/sftp/stat_plan9.go @@ -0,0 +1,109 @@ +package sftp + +import ( + "os" + "syscall" +) + +var EBADF = syscall.NewError("fd out of range or not open") + +func wrapPathError(filepath string, err error) error { + if errno, ok := err.(syscall.ErrorString); ok { + return &os.PathError{Path: filepath, Err: errno} + } + return err +} + +// translateErrno translates a syscall error number to a SFTP error code. +func translateErrno(errno syscall.ErrorString) uint32 { + switch errno { + case "": + return sshFxOk + case syscall.ENOENT: + return sshFxNoSuchFile + case syscall.EPERM: + return sshFxPermissionDenied + } + + return sshFxFailure +} + +func translateSyscallError(err error) (uint32, bool) { + switch e := err.(type) { + case syscall.ErrorString: + return translateErrno(e), true + case *os.PathError: + debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) + if errno, ok := e.Err.(syscall.ErrorString); ok { + return translateErrno(errno), true + } + } + return 0, false +} + +// isRegular returns true if the mode describes a regular file. +func isRegular(mode uint32) bool { + return mode&S_IFMT == syscall.S_IFREG +} + +// toFileMode converts sftp filemode bits to the os.FileMode specification +func toFileMode(mode uint32) os.FileMode { + var fm = os.FileMode(mode & 0777) + switch mode & S_IFMT { + case syscall.S_IFBLK: + fm |= os.ModeDevice + case syscall.S_IFCHR: + fm |= os.ModeDevice | os.ModeCharDevice + case syscall.S_IFDIR: + fm |= os.ModeDir + case syscall.S_IFIFO: + fm |= os.ModeNamedPipe + case syscall.S_IFLNK: + fm |= os.ModeSymlink + case syscall.S_IFREG: + // nothing to do + case syscall.S_IFSOCK: + fm |= os.ModeSocket + } + return fm +} + +// fromFileMode converts from the os.FileMode specification to sftp filemode bits +func fromFileMode(mode os.FileMode) uint32 { + ret := uint32(0) + + if mode&os.ModeDevice != 0 { + if mode&os.ModeCharDevice != 0 { + ret |= syscall.S_IFCHR + } else { + ret |= syscall.S_IFBLK + } + } + if mode&os.ModeDir != 0 { + ret |= syscall.S_IFDIR + } + if mode&os.ModeSymlink != 0 { + ret |= syscall.S_IFLNK + } + if mode&os.ModeNamedPipe != 0 { + ret |= syscall.S_IFIFO + } + if mode&os.ModeSocket != 0 { + ret |= syscall.S_IFSOCK + } + + if mode&os.ModeType == 0 { + ret |= syscall.S_IFREG + } + ret |= uint32(mode & os.ModePerm) + + return ret +} + +// Plan 9 doesn't have setuid, setgid or sticky, but a Plan 9 client should +// be able to send these bits to a POSIX server. +const ( + s_ISUID = 04000 + s_ISGID = 02000 + S_ISVTX = 01000 +) diff --git a/vendor/github.com/pkg/sftp/stat_posix.go b/vendor/github.com/pkg/sftp/stat_posix.go new file mode 100644 index 0000000000..98b60e774f --- /dev/null +++ b/vendor/github.com/pkg/sftp/stat_posix.go @@ -0,0 +1,127 @@ +// +build !plan9 + +package sftp + +import ( + "os" + "syscall" +) + +const EBADF = syscall.EBADF + +func wrapPathError(filepath string, err error) error { + if errno, ok := err.(syscall.Errno); ok { + return &os.PathError{Path: filepath, Err: errno} + } + return err +} + +// translateErrno translates a syscall error number to a SFTP error code. +func translateErrno(errno syscall.Errno) uint32 { + switch errno { + case 0: + return sshFxOk + case syscall.ENOENT: + return sshFxNoSuchFile + case syscall.EPERM: + return sshFxPermissionDenied + } + + return sshFxFailure +} + +func translateSyscallError(err error) (uint32, bool) { + switch e := err.(type) { + case syscall.Errno: + return translateErrno(e), true + case *os.PathError: + debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) + if errno, ok := e.Err.(syscall.Errno); ok { + return translateErrno(errno), true + } + } + return 0, false +} + +// isRegular returns true if the mode describes a regular file. +func isRegular(mode uint32) bool { + return mode&S_IFMT == syscall.S_IFREG +} + +// toFileMode converts sftp filemode bits to the os.FileMode specification +func toFileMode(mode uint32) os.FileMode { + var fm = os.FileMode(mode & 0777) + switch mode & S_IFMT { + case syscall.S_IFBLK: + fm |= os.ModeDevice + case syscall.S_IFCHR: + fm |= os.ModeDevice | os.ModeCharDevice + case syscall.S_IFDIR: + fm |= os.ModeDir + case syscall.S_IFIFO: + fm |= os.ModeNamedPipe + case syscall.S_IFLNK: + fm |= os.ModeSymlink + case syscall.S_IFREG: + // nothing to do + case syscall.S_IFSOCK: + fm |= os.ModeSocket + } + if mode&syscall.S_ISGID != 0 { + fm |= os.ModeSetgid + } + if mode&syscall.S_ISUID != 0 { + fm |= os.ModeSetuid + } + if mode&syscall.S_ISVTX != 0 { + fm |= os.ModeSticky + } + return fm +} + +// fromFileMode converts from the os.FileMode specification to sftp filemode bits +func fromFileMode(mode os.FileMode) uint32 { + ret := uint32(0) + + if mode&os.ModeDevice != 0 { + if mode&os.ModeCharDevice != 0 { + ret |= syscall.S_IFCHR + } else { + ret |= syscall.S_IFBLK + } + } + if mode&os.ModeDir != 0 { + ret |= syscall.S_IFDIR + } + if mode&os.ModeSymlink != 0 { + ret |= syscall.S_IFLNK + } + if mode&os.ModeNamedPipe != 0 { + ret |= syscall.S_IFIFO + } + if mode&os.ModeSetgid != 0 { + ret |= syscall.S_ISGID + } + if mode&os.ModeSetuid != 0 { + ret |= syscall.S_ISUID + } + if mode&os.ModeSticky != 0 { + ret |= syscall.S_ISVTX + } + if mode&os.ModeSocket != 0 { + ret |= syscall.S_IFSOCK + } + + if mode&os.ModeType == 0 { + ret |= syscall.S_IFREG + } + ret |= uint32(mode & os.ModePerm) + + return ret +} + +const ( + s_ISUID = syscall.S_ISUID + s_ISGID = syscall.S_ISGID + s_ISVTX = syscall.S_ISVTX +) diff --git a/vendor/github.com/pkg/sftp/syscall_fixed.go b/vendor/github.com/pkg/sftp/syscall_fixed.go new file mode 100644 index 0000000000..d404577765 --- /dev/null +++ b/vendor/github.com/pkg/sftp/syscall_fixed.go @@ -0,0 +1,9 @@ +// +build plan9 windows js,wasm + +// Go defines S_IFMT on windows, plan9 and js/wasm as 0x1f000 instead of +// 0xf000. None of the the other S_IFxyz values include the "1" (in 0x1f000) +// which prevents them from matching the bitmask. + +package sftp + +const S_IFMT = 0xf000 diff --git a/vendor/github.com/pkg/sftp/syscall_good.go b/vendor/github.com/pkg/sftp/syscall_good.go new file mode 100644 index 0000000000..4c2b240cf7 --- /dev/null +++ b/vendor/github.com/pkg/sftp/syscall_good.go @@ -0,0 +1,8 @@ +// +build !plan9,!windows +// +build !js !wasm + +package sftp + +import "syscall" + +const S_IFMT = syscall.S_IFMT diff --git a/vendor/github.com/russross/blackfriday/v2/README.md b/vendor/github.com/russross/blackfriday/v2/README.md index d5a8649bd5..d9c08a22fc 100644 --- a/vendor/github.com/russross/blackfriday/v2/README.md +++ b/vendor/github.com/russross/blackfriday/v2/README.md @@ -1,4 +1,6 @@ -Blackfriday [![Build Status](https://travis-ci.org/russross/blackfriday.svg?branch=master)](https://travis-ci.org/russross/blackfriday) +Blackfriday +[![Build Status][BuildV2SVG]][BuildV2URL] +[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL] =========== Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It @@ -16,19 +18,21 @@ It started as a translation from C of [Sundown][3]. Installation ------------ -Blackfriday is compatible with any modern Go release. With Go 1.7 and git -installed: +Blackfriday is compatible with modern Go releases in module mode. +With Go installed: - go get gopkg.in/russross/blackfriday.v2 + go get github.com/russross/blackfriday/v2 -will download, compile, and install the package into your `$GOPATH` -directory hierarchy. Alternatively, you can achieve the same if you -import it into a project: +will resolve and add the package to the current development module, +then build and install it. Alternatively, you can achieve the same +if you import it in a package: - import "gopkg.in/russross/blackfriday.v2" + import "github.com/russross/blackfriday/v2" and `go get` without parameters. +Legacy GOPATH mode is unsupported. + Versions -------- @@ -36,13 +40,9 @@ Versions Currently maintained and recommended version of Blackfriday is `v2`. It's being developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the documentation is available at -https://godoc.org/gopkg.in/russross/blackfriday.v2. +https://pkg.go.dev/github.com/russross/blackfriday/v2. -It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`, -but we highly recommend using package management tool like [dep][7] or -[Glide][8] and make use of semantic versioning. With package management you -should import `github.com/russross/blackfriday` and specify that you're using -version 2.0.0. +It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`. Version 2 offers a number of improvements over v1: @@ -62,6 +62,11 @@ Potential drawbacks: v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for tracking. +If you are still interested in the legacy `v1`, you can import it from +`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found +here: https://pkg.go.dev/github.com/russross/blackfriday. + + Usage ----- @@ -91,7 +96,7 @@ Here's an example of simple usage of Blackfriday together with Bluemonday: ```go import ( "github.com/microcosm-cc/bluemonday" - "github.com/russross/blackfriday" + "github.com/russross/blackfriday/v2" ) // ... @@ -104,6 +109,8 @@ html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) If you want to customize the set of options, use `blackfriday.WithExtensions`, `blackfriday.WithRenderer` and `blackfriday.WithRefOverride`. +### `blackfriday-tool` + You can also check out `blackfriday-tool` for a more complete example of how to use it. Download and install it using: @@ -114,7 +121,7 @@ markdown file using a standalone program. You can also browse the source directly on github if you are just looking for some example code: -* +* Note that if you have not already done so, installing `blackfriday-tool` will be sufficient to download and install @@ -123,6 +130,22 @@ installed in `$GOPATH/bin`. This is a statically-linked binary that can be copied to wherever you need it without worrying about dependencies and library versions. +### Sanitized anchor names + +Blackfriday includes an algorithm for creating sanitized anchor names +corresponding to a given input text. This algorithm is used to create +anchors for headings when `AutoHeadingIDs` extension is enabled. The +algorithm has a specification, so that other packages can create +compatible anchor names and links to those anchors. + +The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names. + +[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to +create compatible links to the anchor names generated by blackfriday. +This algorithm is also implemented in a small standalone package at +[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients +that want a small package and don't need full functionality of blackfriday. + Features -------- @@ -199,6 +222,15 @@ implements the following extensions: You can use 3 or more backticks to mark the beginning of the block, and the same number to mark the end of the block. + To preserve classes of fenced code blocks while using the bluemonday + HTML sanitizer, use the following policy: + + ```go + p := bluemonday.UGCPolicy() + p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code") + html := p.SanitizeBytes(unsafe) + ``` + * **Definition lists**. A simple definition list is made of a single-line term followed by a colon and the definition for that term. @@ -250,7 +282,7 @@ Other renderers Blackfriday is structured to allow alternative rendering engines. Here are a few of note: -* [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown): +* [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown): provides a GitHub Flavored Markdown renderer with fenced code block highlighting, clickable heading anchor links. @@ -261,20 +293,28 @@ are a few of note: * [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt, but for markdown. -* [LaTeX output](https://github.com/Ambrevar/Blackfriday-LaTeX): +* [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex): renders output as LaTeX. +* [bfchroma](https://github.com/Depado/bfchroma/): provides convenience + integration with the [Chroma](https://github.com/alecthomas/chroma) code + highlighting library. bfchroma is only compatible with v2 of Blackfriday and + provides a drop-in renderer ready to use with Blackfriday, as well as + options and means for further customization. + * [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer. +* [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style + -Todo +TODO ---- * More unit testing -* Improve unicode support. It does not understand all unicode +* Improve Unicode support. It does not understand all Unicode rules (about what constitutes a letter, a punctuation symbol, etc.), so it may fail to detect word boundaries correctly in - some instances. It is safe on all utf-8 input. + some instances. It is safe on all UTF-8 input. License @@ -286,6 +326,10 @@ License [1]: https://daringfireball.net/projects/markdown/ "Markdown" [2]: https://golang.org/ "Go Language" [3]: https://github.com/vmg/sundown "Sundown" - [4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func" + [4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func" [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday" - [6]: https://labix.org/gopkg.in "gopkg.in" + + [BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2 + [BuildV2URL]: https://travis-ci.org/russross/blackfriday + [PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2 + [PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2 diff --git a/vendor/github.com/russross/blackfriday/v2/block.go b/vendor/github.com/russross/blackfriday/v2/block.go index b8607474e5..dcd61e6e35 100644 --- a/vendor/github.com/russross/blackfriday/v2/block.go +++ b/vendor/github.com/russross/blackfriday/v2/block.go @@ -18,8 +18,7 @@ import ( "html" "regexp" "strings" - - "github.com/shurcooL/sanitized_anchor_name" + "unicode" ) const ( @@ -259,7 +258,7 @@ func (p *Markdown) prefixHeading(data []byte) int { } if end > i { if id == "" && p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[i:end])) + id = SanitizedAnchorName(string(data[i:end])) } block := p.addBlock(Heading, data[i:end]) block.HeadingID = id @@ -673,6 +672,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if beg == 0 || beg >= len(data) { return 0 } + fenceLength := beg - 1 var work bytes.Buffer work.Write([]byte(info)) @@ -706,6 +706,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if doRender { block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer block.IsFenced = true + block.FenceLength = fenceLength finalizeCodeBlock(block) } @@ -1503,7 +1504,7 @@ func (p *Markdown) paragraph(data []byte) int { id := "" if p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[prev:eol])) + id = SanitizedAnchorName(string(data[prev:eol])) } block := p.addBlock(Heading, data[prev:eol]) @@ -1588,3 +1589,24 @@ func skipUntilChar(text []byte, start int, char byte) int { } return i } + +// SanitizedAnchorName returns a sanitized anchor name for the given text. +// +// It implements the algorithm specified in the package comment. +func SanitizedAnchorName(text string) string { + var anchorName []rune + futureDash := false + for _, r := range text { + switch { + case unicode.IsLetter(r) || unicode.IsNumber(r): + if futureDash && len(anchorName) > 0 { + anchorName = append(anchorName, '-') + } + futureDash = false + anchorName = append(anchorName, unicode.ToLower(r)) + default: + futureDash = true + } + } + return string(anchorName) +} diff --git a/vendor/github.com/russross/blackfriday/v2/doc.go b/vendor/github.com/russross/blackfriday/v2/doc.go index 5b3fa9876a..57ff152a05 100644 --- a/vendor/github.com/russross/blackfriday/v2/doc.go +++ b/vendor/github.com/russross/blackfriday/v2/doc.go @@ -15,4 +15,32 @@ // // If you're interested in calling Blackfriday from command line, see // https://github.com/russross/blackfriday-tool. +// +// Sanitized Anchor Names +// +// Blackfriday includes an algorithm for creating sanitized anchor names +// corresponding to a given input text. This algorithm is used to create +// anchors for headings when AutoHeadingIDs extension is enabled. The +// algorithm is specified below, so that other packages can create +// compatible anchor names and links to those anchors. +// +// The algorithm iterates over the input text, interpreted as UTF-8, +// one Unicode code point (rune) at a time. All runes that are letters (category L) +// or numbers (category N) are considered valid characters. They are mapped to +// lower case, and included in the output. All other runes are considered +// invalid characters. Invalid characters that precede the first valid character, +// as well as invalid character that follow the last valid character +// are dropped completely. All other sequences of invalid characters +// between two valid characters are replaced with a single dash character '-'. +// +// SanitizedAnchorName exposes this functionality, and can be used to +// create compatible links to the anchor names generated by blackfriday. +// This algorithm is also implemented in a small standalone package at +// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients +// that want a small package and don't need full functionality of blackfriday. package blackfriday + +// NOTE: Keep Sanitized Anchor Name algorithm in sync with package +// github.com/shurcooL/sanitized_anchor_name. +// Otherwise, users of sanitized_anchor_name will get anchor names +// that are incompatible with those generated by blackfriday. diff --git a/vendor/github.com/russross/blackfriday/v2/entities.go b/vendor/github.com/russross/blackfriday/v2/entities.go new file mode 100644 index 0000000000..a2c3edb691 --- /dev/null +++ b/vendor/github.com/russross/blackfriday/v2/entities.go @@ -0,0 +1,2236 @@ +package blackfriday + +// Extracted from https://html.spec.whatwg.org/multipage/entities.json +var entities = map[string]bool{ + "Æ": true, + "Æ": true, + "&": true, + "&": true, + "Á": true, + "Á": true, + "Ă": true, + "Â": true, + "Â": true, + "А": true, + "𝔄": true, + "À": true, + "À": true, + "Α": true, + "Ā": true, + "⩓": true, + "Ą": true, + "𝔸": true, + "⁡": true, + "Å": true, + "Å": true, + "𝒜": true, + "≔": true, + "Ã": true, + "Ã": true, + "Ä": true, + "Ä": true, + "∖": true, + "⫧": true, + "⌆": true, + "Б": true, + "∵": true, + "ℬ": true, + "Β": true, + "𝔅": true, + "𝔹": true, + "˘": true, + "ℬ": true, + "≎": true, + "Ч": true, + "©": true, + "©": true, + "Ć": true, + "⋒": true, + "ⅅ": true, + "ℭ": true, + "Č": true, + "Ç": true, + "Ç": true, + "Ĉ": true, + "∰": true, + "Ċ": true, + "¸": true, + "·": true, + "ℭ": true, + "Χ": true, + "⊙": true, + "⊖": true, + "⊕": true, + "⊗": true, + "∲": true, + "”": true, + "’": true, + "∷": true, + "⩴": true, + "≡": true, + "∯": true, + "∮": true, + "ℂ": true, + "∐": true, + "∳": true, + "⨯": true, + "𝒞": true, + "⋓": true, + "≍": true, + "ⅅ": true, + "⤑": true, + "Ђ": true, + "Ѕ": true, + "Џ": true, + "‡": true, + "↡": true, + "⫤": true, + "Ď": true, + "Д": true, + "∇": true, + "Δ": true, + "𝔇": true, + "´": true, + "˙": true, + "˝": true, + "`": true, + "˜": true, + "⋄": true, + "ⅆ": true, + "𝔻": true, + "¨": true, + "⃜": true, + "≐": true, + "∯": true, + "¨": true, + "⇓": true, + "⇐": true, + "⇔": true, + "⫤": true, + "⟸": true, + "⟺": true, + "⟹": true, + "⇒": true, + "⊨": true, + "⇑": true, + "⇕": true, + "∥": true, + "↓": true, + "⤓": true, + "⇵": true, + "̑": true, + "⥐": true, + "⥞": true, + "↽": true, + "⥖": true, + "⥟": true, + "⇁": true, + "⥗": true, + "⊤": true, + "↧": true, + "⇓": true, + "𝒟": true, + "Đ": true, + "Ŋ": true, + "Ð": true, + "Ð": true, + "É": true, + "É": true, + "Ě": true, + "Ê": true, + "Ê": true, + "Э": true, + "Ė": true, + "𝔈": true, + "È": true, + "È": true, + "∈": true, + "Ē": true, + "◻": true, + "▫": true, + "Ę": true, + "𝔼": true, + "Ε": true, + "⩵": true, + "≂": true, + "⇌": true, + "ℰ": true, + "⩳": true, + "Η": true, + "Ë": true, + "Ë": true, + "∃": true, + "ⅇ": true, + "Ф": true, + "𝔉": true, + "◼": true, + "▪": true, + "𝔽": true, + "∀": true, + "ℱ": true, + "ℱ": true, + "Ѓ": true, + ">": true, + ">": true, + "Γ": true, + "Ϝ": true, + "Ğ": true, + "Ģ": true, + "Ĝ": true, + "Г": true, + "Ġ": true, + "𝔊": true, + "⋙": true, + "𝔾": true, + "≥": true, + "⋛": true, + "≧": true, + "⪢": true, + "≷": true, + "⩾": true, + "≳": true, + "𝒢": true, + "≫": true, + "Ъ": true, + "ˇ": true, + "^": true, + "Ĥ": true, + "ℌ": true, + "ℋ": true, + "ℍ": true, + "─": true, + "ℋ": true, + "Ħ": true, + "≎": true, + "≏": true, + "Е": true, + "IJ": true, + "Ё": true, + "Í": true, + "Í": true, + "Î": true, + "Î": true, + "И": true, + "İ": true, + "ℑ": true, + "Ì": true, + "Ì": true, + "ℑ": true, + "Ī": true, + "ⅈ": true, + "⇒": true, + "∬": true, + "∫": true, + "⋂": true, + "⁣": true, + "⁢": true, + "Į": true, + "𝕀": true, + "Ι": true, + "ℐ": true, + "Ĩ": true, + "І": true, + "Ï": true, + "Ï": true, + "Ĵ": true, + "Й": true, + "𝔍": true, + "𝕁": true, + "𝒥": true, + "Ј": true, + "Є": true, + "Х": true, + "Ќ": true, + "Κ": true, + "Ķ": true, + "К": true, + "𝔎": true, + "𝕂": true, + "𝒦": true, + "Љ": true, + "<": true, + "<": true, + "Ĺ": true, + "Λ": true, + "⟪": true, + "ℒ": true, + "↞": true, + "Ľ": true, + "Ļ": true, + "Л": true, + "⟨": true, + "←": true, + "⇤": true, + "⇆": true, + "⌈": true, + "⟦": true, + "⥡": true, + "⇃": true, + "⥙": true, + "⌊": true, + "↔": true, + "⥎": true, + "⊣": true, + "↤": true, + "⥚": true, + "⊲": true, + "⧏": true, + "⊴": true, + "⥑": true, + "⥠": true, + "↿": true, + "⥘": true, + "↼": true, + "⥒": true, + "⇐": true, + "⇔": true, + "⋚": true, + "≦": true, + "≶": true, + "⪡": true, + "⩽": true, + "≲": true, + "𝔏": true, + "⋘": true, + "⇚": true, + "Ŀ": true, + "⟵": true, + "⟷": true, + "⟶": true, + "⟸": true, + "⟺": true, + "⟹": true, + "𝕃": true, + "↙": true, + "↘": true, + "ℒ": true, + "↰": true, + "Ł": true, + "≪": true, + "⤅": true, + "М": true, + " ": true, + "ℳ": true, + "𝔐": true, + "∓": true, + "𝕄": true, + "ℳ": true, + "Μ": true, + "Њ": true, + "Ń": true, + "Ň": true, + "Ņ": true, + "Н": true, + "​": true, + "​": true, + "​": true, + "​": true, + "≫": true, + "≪": true, + " ": true, + "𝔑": true, + "⁠": true, + " ": true, + "ℕ": true, + "⫬": true, + "≢": true, + "≭": true, + "∦": true, + "∉": true, + "≠": true, + "≂̸": true, + "∄": true, + "≯": true, + "≱": true, + "≧̸": true, + "≫̸": true, + "≹": true, + "⩾̸": true, + "≵": true, + "≎̸": true, + "≏̸": true, + "⋪": true, + "⧏̸": true, + "⋬": true, + "≮": true, + "≰": true, + "≸": true, + "≪̸": true, + "⩽̸": true, + "≴": true, + "⪢̸": true, + "⪡̸": true, + "⊀": true, + "⪯̸": true, + "⋠": true, + "∌": true, + "⋫": true, + "⧐̸": true, + "⋭": true, + "⊏̸": true, + "⋢": true, + "⊐̸": true, + "⋣": true, + "⊂⃒": true, + "⊈": true, + "⊁": true, + "⪰̸": true, + "⋡": true, + "≿̸": true, + "⊃⃒": true, + "⊉": true, + "≁": true, + "≄": true, + "≇": true, + "≉": true, + "∤": true, + "𝒩": true, + "Ñ": true, + "Ñ": true, + "Ν": true, + "Œ": true, + "Ó": true, + "Ó": true, + "Ô": true, + "Ô": true, + "О": true, + "Ő": true, + "𝔒": true, + "Ò": true, + "Ò": true, + "Ō": true, + "Ω": true, + "Ο": true, + "𝕆": true, + "“": true, + "‘": true, + "⩔": true, + "𝒪": true, + "Ø": true, + "Ø": true, + "Õ": true, + "Õ": true, + "⨷": true, + "Ö": true, + "Ö": true, + "‾": true, + "⏞": true, + "⎴": true, + "⏜": true, + "∂": true, + "П": true, + "𝔓": true, + "Φ": true, + "Π": true, + "±": true, + "ℌ": true, + "ℙ": true, + "⪻": true, + "≺": true, + "⪯": true, + "≼": true, + "≾": true, + "″": true, + "∏": true, + "∷": true, + "∝": true, + "𝒫": true, + "Ψ": true, + """: true, + """: true, + "𝔔": true, + "ℚ": true, + "𝒬": true, + "⤐": true, + "®": true, + "®": true, + "Ŕ": true, + "⟫": true, + "↠": true, + "⤖": true, + "Ř": true, + "Ŗ": true, + "Р": true, + "ℜ": true, + "∋": true, + "⇋": true, + "⥯": true, + "ℜ": true, + "Ρ": true, + "⟩": true, + "→": true, + "⇥": true, + "⇄": true, + "⌉": true, + "⟧": true, + "⥝": true, + "⇂": true, + "⥕": true, + "⌋": true, + "⊢": true, + "↦": true, + "⥛": true, + "⊳": true, + "⧐": true, + "⊵": true, + "⥏": true, + "⥜": true, + "↾": true, + "⥔": true, + "⇀": true, + "⥓": true, + "⇒": true, + "ℝ": true, + "⥰": true, + "⇛": true, + "ℛ": true, + "↱": true, + "⧴": true, + "Щ": true, + "Ш": true, + "Ь": true, + "Ś": true, + "⪼": true, + "Š": true, + "Ş": true, + "Ŝ": true, + "С": true, + "𝔖": true, + "↓": true, + "←": true, + "→": true, + "↑": true, + "Σ": true, + "∘": true, + "𝕊": true, + "√": true, + "□": true, + "⊓": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊔": true, + "𝒮": true, + "⋆": true, + "⋐": true, + "⋐": true, + "⊆": true, + "≻": true, + "⪰": true, + "≽": true, + "≿": true, + "∋": true, + "∑": true, + "⋑": true, + "⊃": true, + "⊇": true, + "⋑": true, + "Þ": true, + "Þ": true, + "™": true, + "Ћ": true, + "Ц": true, + " ": true, + "Τ": true, + "Ť": true, + "Ţ": true, + "Т": true, + "𝔗": true, + "∴": true, + "Θ": true, + "  ": true, + " ": true, + "∼": true, + "≃": true, + "≅": true, + "≈": true, + "𝕋": true, + "⃛": true, + "𝒯": true, + "Ŧ": true, + "Ú": true, + "Ú": true, + "↟": true, + "⥉": true, + "Ў": true, + "Ŭ": true, + "Û": true, + "Û": true, + "У": true, + "Ű": true, + "𝔘": true, + "Ù": true, + "Ù": true, + "Ū": true, + "_": true, + "⏟": true, + "⎵": true, + "⏝": true, + "⋃": true, + "⊎": true, + "Ų": true, + "𝕌": true, + "↑": true, + "⤒": true, + "⇅": true, + "↕": true, + "⥮": true, + "⊥": true, + "↥": true, + "⇑": true, + "⇕": true, + "↖": true, + "↗": true, + "ϒ": true, + "Υ": true, + "Ů": true, + "𝒰": true, + "Ũ": true, + "Ü": true, + "Ü": true, + "⊫": true, + "⫫": true, + "В": true, + "⊩": true, + "⫦": true, + "⋁": true, + "‖": true, + "‖": true, + "∣": true, + "|": true, + "❘": true, + "≀": true, + " ": true, + "𝔙": true, + "𝕍": true, + "𝒱": true, + "⊪": true, + "Ŵ": true, + "⋀": true, + "𝔚": true, + "𝕎": true, + "𝒲": true, + "𝔛": true, + "Ξ": true, + "𝕏": true, + "𝒳": true, + "Я": true, + "Ї": true, + "Ю": true, + "Ý": true, + "Ý": true, + "Ŷ": true, + "Ы": true, + "𝔜": true, + "𝕐": true, + "𝒴": true, + "Ÿ": true, + "Ж": true, + "Ź": true, + "Ž": true, + "З": true, + "Ż": true, + "​": true, + "Ζ": true, + "ℨ": true, + "ℤ": true, + "𝒵": true, + "á": true, + "á": true, + "ă": true, + "∾": true, + "∾̳": true, + "∿": true, + "â": true, + "â": true, + "´": true, + "´": true, + "а": true, + "æ": true, + "æ": true, + "⁡": true, + "𝔞": true, + "à": true, + "à": true, + "ℵ": true, + "ℵ": true, + "α": true, + "ā": true, + "⨿": true, + "&": true, + "&": true, + "∧": true, + "⩕": true, + "⩜": true, + "⩘": true, + "⩚": true, + "∠": true, + "⦤": true, + "∠": true, + "∡": true, + "⦨": true, + "⦩": true, + "⦪": true, + "⦫": true, + "⦬": true, + "⦭": true, + "⦮": true, + "⦯": true, + "∟": true, + "⊾": true, + "⦝": true, + "∢": true, + "Å": true, + "⍼": true, + "ą": true, + "𝕒": true, + "≈": true, + "⩰": true, + "⩯": true, + "≊": true, + "≋": true, + "'": true, + "≈": true, + "≊": true, + "å": true, + "å": true, + "𝒶": true, + "*": true, + "≈": true, + "≍": true, + "ã": true, + "ã": true, + "ä": true, + "ä": true, + "∳": true, + "⨑": true, + "⫭": true, + "≌": true, + "϶": true, + "‵": true, + "∽": true, + "⋍": true, + "⊽": true, + "⌅": true, + "⌅": true, + "⎵": true, + "⎶": true, + "≌": true, + "б": true, + "„": true, + "∵": true, + "∵": true, + "⦰": true, + "϶": true, + "ℬ": true, + "β": true, + "ℶ": true, + "≬": true, + "𝔟": true, + "⋂": true, + "◯": true, + "⋃": true, + "⨀": true, + "⨁": true, + "⨂": true, + "⨆": true, + "★": true, + "▽": true, + "△": true, + "⨄": true, + "⋁": true, + "⋀": true, + "⤍": true, + "⧫": true, + "▪": true, + "▴": true, + "▾": true, + "◂": true, + "▸": true, + "␣": true, + "▒": true, + "░": true, + "▓": true, + "█": true, + "=⃥": true, + "≡⃥": true, + "⌐": true, + "𝕓": true, + "⊥": true, + "⊥": true, + "⋈": true, + "╗": true, + "╔": true, + "╖": true, + "╓": true, + "═": true, + "╦": true, + "╩": true, + "╤": true, + "╧": true, + "╝": true, + "╚": true, + "╜": true, + "╙": true, + "║": true, + "╬": true, + "╣": true, + "╠": true, + "╫": true, + "╢": true, + "╟": true, + "⧉": true, + "╕": true, + "╒": true, + "┐": true, + "┌": true, + "─": true, + "╥": true, + "╨": true, + "┬": true, + "┴": true, + "⊟": true, + "⊞": true, + "⊠": true, + "╛": true, + "╘": true, + "┘": true, + "└": true, + "│": true, + "╪": true, + "╡": true, + "╞": true, + "┼": true, + "┤": true, + "├": true, + "‵": true, + "˘": true, + "¦": true, + "¦": true, + "𝒷": true, + "⁏": true, + "∽": true, + "⋍": true, + "\": true, + "⧅": true, + "⟈": true, + "•": true, + "•": true, + "≎": true, + "⪮": true, + "≏": true, + "≏": true, + "ć": true, + "∩": true, + "⩄": true, + "⩉": true, + "⩋": true, + "⩇": true, + "⩀": true, + "∩︀": true, + "⁁": true, + "ˇ": true, + "⩍": true, + "č": true, + "ç": true, + "ç": true, + "ĉ": true, + "⩌": true, + "⩐": true, + "ċ": true, + "¸": true, + "¸": true, + "⦲": true, + "¢": true, + "¢": true, + "·": true, + "𝔠": true, + "ч": true, + "✓": true, + "✓": true, + "χ": true, + "○": true, + "⧃": true, + "ˆ": true, + "≗": true, + "↺": true, + "↻": true, + "®": true, + "Ⓢ": true, + "⊛": true, + "⊚": true, + "⊝": true, + "≗": true, + "⨐": true, + "⫯": true, + "⧂": true, + "♣": true, + "♣": true, + ":": true, + "≔": true, + "≔": true, + ",": true, + "@": true, + "∁": true, + "∘": true, + "∁": true, + "ℂ": true, + "≅": true, + "⩭": true, + "∮": true, + "𝕔": true, + "∐": true, + "©": true, + "©": true, + "℗": true, + "↵": true, + "✗": true, + "𝒸": true, + "⫏": true, + "⫑": true, + "⫐": true, + "⫒": true, + "⋯": true, + "⤸": true, + "⤵": true, + "⋞": true, + "⋟": true, + "↶": true, + "⤽": true, + "∪": true, + "⩈": true, + "⩆": true, + "⩊": true, + "⊍": true, + "⩅": true, + "∪︀": true, + "↷": true, + "⤼": true, + "⋞": true, + "⋟": true, + "⋎": true, + "⋏": true, + "¤": true, + "¤": true, + "↶": true, + "↷": true, + "⋎": true, + "⋏": true, + "∲": true, + "∱": true, + "⌭": true, + "⇓": true, + "⥥": true, + "†": true, + "ℸ": true, + "↓": true, + "‐": true, + "⊣": true, + "⤏": true, + "˝": true, + "ď": true, + "д": true, + "ⅆ": true, + "‡": true, + "⇊": true, + "⩷": true, + "°": true, + "°": true, + "δ": true, + "⦱": true, + "⥿": true, + "𝔡": true, + "⇃": true, + "⇂": true, + "⋄": true, + "⋄": true, + "♦": true, + "♦": true, + "¨": true, + "ϝ": true, + "⋲": true, + "÷": true, + "÷": true, + "÷": true, + "⋇": true, + "⋇": true, + "ђ": true, + "⌞": true, + "⌍": true, + "$": true, + "𝕕": true, + "˙": true, + "≐": true, + "≑": true, + "∸": true, + "∔": true, + "⊡": true, + "⌆": true, + "↓": true, + "⇊": true, + "⇃": true, + "⇂": true, + "⤐": true, + "⌟": true, + "⌌": true, + "𝒹": true, + "ѕ": true, + "⧶": true, + "đ": true, + "⋱": true, + "▿": true, + "▾": true, + "⇵": true, + "⥯": true, + "⦦": true, + "џ": true, + "⟿": true, + "⩷": true, + "≑": true, + "é": true, + "é": true, + "⩮": true, + "ě": true, + "≖": true, + "ê": true, + "ê": true, + "≕": true, + "э": true, + "ė": true, + "ⅇ": true, + "≒": true, + "𝔢": true, + "⪚": true, + "è": true, + "è": true, + "⪖": true, + "⪘": true, + "⪙": true, + "⏧": true, + "ℓ": true, + "⪕": true, + "⪗": true, + "ē": true, + "∅": true, + "∅": true, + "∅": true, + " ": true, + " ": true, + " ": true, + "ŋ": true, + " ": true, + "ę": true, + "𝕖": true, + "⋕": true, + "⧣": true, + "⩱": true, + "ε": true, + "ε": true, + "ϵ": true, + "≖": true, + "≕": true, + "≂": true, + "⪖": true, + "⪕": true, + "=": true, + "≟": true, + "≡": true, + "⩸": true, + "⧥": true, + "≓": true, + "⥱": true, + "ℯ": true, + "≐": true, + "≂": true, + "η": true, + "ð": true, + "ð": true, + "ë": true, + "ë": true, + "€": true, + "!": true, + "∃": true, + "ℰ": true, + "ⅇ": true, + "≒": true, + "ф": true, + "♀": true, + "ffi": true, + "ff": true, + "ffl": true, + "𝔣": true, + "fi": true, + "fj": true, + "♭": true, + "fl": true, + "▱": true, + "ƒ": true, + "𝕗": true, + "∀": true, + "⋔": true, + "⫙": true, + "⨍": true, + "½": true, + "½": true, + "⅓": true, + "¼": true, + "¼": true, + "⅕": true, + "⅙": true, + "⅛": true, + "⅔": true, + "⅖": true, + "¾": true, + "¾": true, + "⅗": true, + "⅜": true, + "⅘": true, + "⅚": true, + "⅝": true, + "⅞": true, + "⁄": true, + "⌢": true, + "𝒻": true, + "≧": true, + "⪌": true, + "ǵ": true, + "γ": true, + "ϝ": true, + "⪆": true, + "ğ": true, + "ĝ": true, + "г": true, + "ġ": true, + "≥": true, + "⋛": true, + "≥": true, + "≧": true, + "⩾": true, + "⩾": true, + "⪩": true, + "⪀": true, + "⪂": true, + "⪄": true, + "⋛︀": true, + "⪔": true, + "𝔤": true, + "≫": true, + "⋙": true, + "ℷ": true, + "ѓ": true, + "≷": true, + "⪒": true, + "⪥": true, + "⪤": true, + "≩": true, + "⪊": true, + "⪊": true, + "⪈": true, + "⪈": true, + "≩": true, + "⋧": true, + "𝕘": true, + "`": true, + "ℊ": true, + "≳": true, + "⪎": true, + "⪐": true, + ">": true, + ">": true, + "⪧": true, + "⩺": true, + "⋗": true, + "⦕": true, + "⩼": true, + "⪆": true, + "⥸": true, + "⋗": true, + "⋛": true, + "⪌": true, + "≷": true, + "≳": true, + "≩︀": true, + "≩︀": true, + "⇔": true, + " ": true, + "½": true, + "ℋ": true, + "ъ": true, + "↔": true, + "⥈": true, + "↭": true, + "ℏ": true, + "ĥ": true, + "♥": true, + "♥": true, + "…": true, + "⊹": true, + "𝔥": true, + "⤥": true, + "⤦": true, + "⇿": true, + "∻": true, + "↩": true, + "↪": true, + "𝕙": true, + "―": true, + "𝒽": true, + "ℏ": true, + "ħ": true, + "⁃": true, + "‐": true, + "í": true, + "í": true, + "⁣": true, + "î": true, + "î": true, + "и": true, + "е": true, + "¡": true, + "¡": true, + "⇔": true, + "𝔦": true, + "ì": true, + "ì": true, + "ⅈ": true, + "⨌": true, + "∭": true, + "⧜": true, + "℩": true, + "ij": true, + "ī": true, + "ℑ": true, + "ℐ": true, + "ℑ": true, + "ı": true, + "⊷": true, + "Ƶ": true, + "∈": true, + "℅": true, + "∞": true, + "⧝": true, + "ı": true, + "∫": true, + "⊺": true, + "ℤ": true, + "⊺": true, + "⨗": true, + "⨼": true, + "ё": true, + "į": true, + "𝕚": true, + "ι": true, + "⨼": true, + "¿": true, + "¿": true, + "𝒾": true, + "∈": true, + "⋹": true, + "⋵": true, + "⋴": true, + "⋳": true, + "∈": true, + "⁢": true, + "ĩ": true, + "і": true, + "ï": true, + "ï": true, + "ĵ": true, + "й": true, + "𝔧": true, + "ȷ": true, + "𝕛": true, + "𝒿": true, + "ј": true, + "є": true, + "κ": true, + "ϰ": true, + "ķ": true, + "к": true, + "𝔨": true, + "ĸ": true, + "х": true, + "ќ": true, + "𝕜": true, + "𝓀": true, + "⇚": true, + "⇐": true, + "⤛": true, + "⤎": true, + "≦": true, + "⪋": true, + "⥢": true, + "ĺ": true, + "⦴": true, + "ℒ": true, + "λ": true, + "⟨": true, + "⦑": true, + "⟨": true, + "⪅": true, + "«": true, + "«": true, + "←": true, + "⇤": true, + "⤟": true, + "⤝": true, + "↩": true, + "↫": true, + "⤹": true, + "⥳": true, + "↢": true, + "⪫": true, + "⤙": true, + "⪭": true, + "⪭︀": true, + "⤌": true, + "❲": true, + "{": true, + "[": true, + "⦋": true, + "⦏": true, + "⦍": true, + "ľ": true, + "ļ": true, + "⌈": true, + "{": true, + "л": true, + "⤶": true, + "“": true, + "„": true, + "⥧": true, + "⥋": true, + "↲": true, + "≤": true, + "←": true, + "↢": true, + "↽": true, + "↼": true, + "⇇": true, + "↔": true, + "⇆": true, + "⇋": true, + "↭": true, + "⋋": true, + "⋚": true, + "≤": true, + "≦": true, + "⩽": true, + "⩽": true, + "⪨": true, + "⩿": true, + "⪁": true, + "⪃": true, + "⋚︀": true, + "⪓": true, + "⪅": true, + "⋖": true, + "⋚": true, + "⪋": true, + "≶": true, + "≲": true, + "⥼": true, + "⌊": true, + "𝔩": true, + "≶": true, + "⪑": true, + "↽": true, + "↼": true, + "⥪": true, + "▄": true, + "љ": true, + "≪": true, + "⇇": true, + "⌞": true, + "⥫": true, + "◺": true, + "ŀ": true, + "⎰": true, + "⎰": true, + "≨": true, + "⪉": true, + "⪉": true, + "⪇": true, + "⪇": true, + "≨": true, + "⋦": true, + "⟬": true, + "⇽": true, + "⟦": true, + "⟵": true, + "⟷": true, + "⟼": true, + "⟶": true, + "↫": true, + "↬": true, + "⦅": true, + "𝕝": true, + "⨭": true, + "⨴": true, + "∗": true, + "_": true, + "◊": true, + "◊": true, + "⧫": true, + "(": true, + "⦓": true, + "⇆": true, + "⌟": true, + "⇋": true, + "⥭": true, + "‎": true, + "⊿": true, + "‹": true, + "𝓁": true, + "↰": true, + "≲": true, + "⪍": true, + "⪏": true, + "[": true, + "‘": true, + "‚": true, + "ł": true, + "<": true, + "<": true, + "⪦": true, + "⩹": true, + "⋖": true, + "⋋": true, + "⋉": true, + "⥶": true, + "⩻": true, + "⦖": true, + "◃": true, + "⊴": true, + "◂": true, + "⥊": true, + "⥦": true, + "≨︀": true, + "≨︀": true, + "∺": true, + "¯": true, + "¯": true, + "♂": true, + "✠": true, + "✠": true, + "↦": true, + "↦": true, + "↧": true, + "↤": true, + "↥": true, + "▮": true, + "⨩": true, + "м": true, + "—": true, + "∡": true, + "𝔪": true, + "℧": true, + "µ": true, + "µ": true, + "∣": true, + "*": true, + "⫰": true, + "·": true, + "·": true, + "−": true, + "⊟": true, + "∸": true, + "⨪": true, + "⫛": true, + "…": true, + "∓": true, + "⊧": true, + "𝕞": true, + "∓": true, + "𝓂": true, + "∾": true, + "μ": true, + "⊸": true, + "⊸": true, + "⋙̸": true, + "≫⃒": true, + "≫̸": true, + "⇍": true, + "⇎": true, + "⋘̸": true, + "≪⃒": true, + "≪̸": true, + "⇏": true, + "⊯": true, + "⊮": true, + "∇": true, + "ń": true, + "∠⃒": true, + "≉": true, + "⩰̸": true, + "≋̸": true, + "ʼn": true, + "≉": true, + "♮": true, + "♮": true, + "ℕ": true, + " ": true, + " ": true, + "≎̸": true, + "≏̸": true, + "⩃": true, + "ň": true, + "ņ": true, + "≇": true, + "⩭̸": true, + "⩂": true, + "н": true, + "–": true, + "≠": true, + "⇗": true, + "⤤": true, + "↗": true, + "↗": true, + "≐̸": true, + "≢": true, + "⤨": true, + "≂̸": true, + "∄": true, + "∄": true, + "𝔫": true, + "≧̸": true, + "≱": true, + "≱": true, + "≧̸": true, + "⩾̸": true, + "⩾̸": true, + "≵": true, + "≯": true, + "≯": true, + "⇎": true, + "↮": true, + "⫲": true, + "∋": true, + "⋼": true, + "⋺": true, + "∋": true, + "њ": true, + "⇍": true, + "≦̸": true, + "↚": true, + "‥": true, + "≰": true, + "↚": true, + "↮": true, + "≰": true, + "≦̸": true, + "⩽̸": true, + "⩽̸": true, + "≮": true, + "≴": true, + "≮": true, + "⋪": true, + "⋬": true, + "∤": true, + "𝕟": true, + "¬": true, + "¬": true, + "∉": true, + "⋹̸": true, + "⋵̸": true, + "∉": true, + "⋷": true, + "⋶": true, + "∌": true, + "∌": true, + "⋾": true, + "⋽": true, + "∦": true, + "∦": true, + "⫽⃥": true, + "∂̸": true, + "⨔": true, + "⊀": true, + "⋠": true, + "⪯̸": true, + "⊀": true, + "⪯̸": true, + "⇏": true, + "↛": true, + "⤳̸": true, + "↝̸": true, + "↛": true, + "⋫": true, + "⋭": true, + "⊁": true, + "⋡": true, + "⪰̸": true, + "𝓃": true, + "∤": true, + "∦": true, + "≁": true, + "≄": true, + "≄": true, + "∤": true, + "∦": true, + "⋢": true, + "⋣": true, + "⊄": true, + "⫅̸": true, + "⊈": true, + "⊂⃒": true, + "⊈": true, + "⫅̸": true, + "⊁": true, + "⪰̸": true, + "⊅": true, + "⫆̸": true, + "⊉": true, + "⊃⃒": true, + "⊉": true, + "⫆̸": true, + "≹": true, + "ñ": true, + "ñ": true, + "≸": true, + "⋪": true, + "⋬": true, + "⋫": true, + "⋭": true, + "ν": true, + "#": true, + "№": true, + " ": true, + "⊭": true, + "⤄": true, + "≍⃒": true, + "⊬": true, + "≥⃒": true, + ">⃒": true, + "⧞": true, + "⤂": true, + "≤⃒": true, + "<⃒": true, + "⊴⃒": true, + "⤃": true, + "⊵⃒": true, + "∼⃒": true, + "⇖": true, + "⤣": true, + "↖": true, + "↖": true, + "⤧": true, + "Ⓢ": true, + "ó": true, + "ó": true, + "⊛": true, + "⊚": true, + "ô": true, + "ô": true, + "о": true, + "⊝": true, + "ő": true, + "⨸": true, + "⊙": true, + "⦼": true, + "œ": true, + "⦿": true, + "𝔬": true, + "˛": true, + "ò": true, + "ò": true, + "⧁": true, + "⦵": true, + "Ω": true, + "∮": true, + "↺": true, + "⦾": true, + "⦻": true, + "‾": true, + "⧀": true, + "ō": true, + "ω": true, + "ο": true, + "⦶": true, + "⊖": true, + "𝕠": true, + "⦷": true, + "⦹": true, + "⊕": true, + "∨": true, + "↻": true, + "⩝": true, + "ℴ": true, + "ℴ": true, + "ª": true, + "ª": true, + "º": true, + "º": true, + "⊶": true, + "⩖": true, + "⩗": true, + "⩛": true, + "ℴ": true, + "ø": true, + "ø": true, + "⊘": true, + "õ": true, + "õ": true, + "⊗": true, + "⨶": true, + "ö": true, + "ö": true, + "⌽": true, + "∥": true, + "¶": true, + "¶": true, + "∥": true, + "⫳": true, + "⫽": true, + "∂": true, + "п": true, + "%": true, + ".": true, + "‰": true, + "⊥": true, + "‱": true, + "𝔭": true, + "φ": true, + "ϕ": true, + "ℳ": true, + "☎": true, + "π": true, + "⋔": true, + "ϖ": true, + "ℏ": true, + "ℎ": true, + "ℏ": true, + "+": true, + "⨣": true, + "⊞": true, + "⨢": true, + "∔": true, + "⨥": true, + "⩲": true, + "±": true, + "±": true, + "⨦": true, + "⨧": true, + "±": true, + "⨕": true, + "𝕡": true, + "£": true, + "£": true, + "≺": true, + "⪳": true, + "⪷": true, + "≼": true, + "⪯": true, + "≺": true, + "⪷": true, + "≼": true, + "⪯": true, + "⪹": true, + "⪵": true, + "⋨": true, + "≾": true, + "′": true, + "ℙ": true, + "⪵": true, + "⪹": true, + "⋨": true, + "∏": true, + "⌮": true, + "⌒": true, + "⌓": true, + "∝": true, + "∝": true, + "≾": true, + "⊰": true, + "𝓅": true, + "ψ": true, + " ": true, + "𝔮": true, + "⨌": true, + "𝕢": true, + "⁗": true, + "𝓆": true, + "ℍ": true, + "⨖": true, + "?": true, + "≟": true, + """: true, + """: true, + "⇛": true, + "⇒": true, + "⤜": true, + "⤏": true, + "⥤": true, + "∽̱": true, + "ŕ": true, + "√": true, + "⦳": true, + "⟩": true, + "⦒": true, + "⦥": true, + "⟩": true, + "»": true, + "»": true, + "→": true, + "⥵": true, + "⇥": true, + "⤠": true, + "⤳": true, + "⤞": true, + "↪": true, + "↬": true, + "⥅": true, + "⥴": true, + "↣": true, + "↝": true, + "⤚": true, + "∶": true, + "ℚ": true, + "⤍": true, + "❳": true, + "}": true, + "]": true, + "⦌": true, + "⦎": true, + "⦐": true, + "ř": true, + "ŗ": true, + "⌉": true, + "}": true, + "р": true, + "⤷": true, + "⥩": true, + "”": true, + "”": true, + "↳": true, + "ℜ": true, + "ℛ": true, + "ℜ": true, + "ℝ": true, + "▭": true, + "®": true, + "®": true, + "⥽": true, + "⌋": true, + "𝔯": true, + "⇁": true, + "⇀": true, + "⥬": true, + "ρ": true, + "ϱ": true, + "→": true, + "↣": true, + "⇁": true, + "⇀": true, + "⇄": true, + "⇌": true, + "⇉": true, + "↝": true, + "⋌": true, + "˚": true, + "≓": true, + "⇄": true, + "⇌": true, + "‏": true, + "⎱": true, + "⎱": true, + "⫮": true, + "⟭": true, + "⇾": true, + "⟧": true, + "⦆": true, + "𝕣": true, + "⨮": true, + "⨵": true, + ")": true, + "⦔": true, + "⨒": true, + "⇉": true, + "›": true, + "𝓇": true, + "↱": true, + "]": true, + "’": true, + "’": true, + "⋌": true, + "⋊": true, + "▹": true, + "⊵": true, + "▸": true, + "⧎": true, + "⥨": true, + "℞": true, + "ś": true, + "‚": true, + "≻": true, + "⪴": true, + "⪸": true, + "š": true, + "≽": true, + "⪰": true, + "ş": true, + "ŝ": true, + "⪶": true, + "⪺": true, + "⋩": true, + "⨓": true, + "≿": true, + "с": true, + "⋅": true, + "⊡": true, + "⩦": true, + "⇘": true, + "⤥": true, + "↘": true, + "↘": true, + "§": true, + "§": true, + ";": true, + "⤩": true, + "∖": true, + "∖": true, + "✶": true, + "𝔰": true, + "⌢": true, + "♯": true, + "щ": true, + "ш": true, + "∣": true, + "∥": true, + "­": true, + "­": true, + "σ": true, + "ς": true, + "ς": true, + "∼": true, + "⩪": true, + "≃": true, + "≃": true, + "⪞": true, + "⪠": true, + "⪝": true, + "⪟": true, + "≆": true, + "⨤": true, + "⥲": true, + "←": true, + "∖": true, + "⨳": true, + "⧤": true, + "∣": true, + "⌣": true, + "⪪": true, + "⪬": true, + "⪬︀": true, + "ь": true, + "/": true, + "⧄": true, + "⌿": true, + "𝕤": true, + "♠": true, + "♠": true, + "∥": true, + "⊓": true, + "⊓︀": true, + "⊔": true, + "⊔︀": true, + "⊏": true, + "⊑": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊐": true, + "⊒": true, + "□": true, + "□": true, + "▪": true, + "▪": true, + "→": true, + "𝓈": true, + "∖": true, + "⌣": true, + "⋆": true, + "☆": true, + "★": true, + "ϵ": true, + "ϕ": true, + "¯": true, + "⊂": true, + "⫅": true, + "⪽": true, + "⊆": true, + "⫃": true, + "⫁": true, + "⫋": true, + "⊊": true, + "⪿": true, + "⥹": true, + "⊂": true, + "⊆": true, + "⫅": true, + "⊊": true, + "⫋": true, + "⫇": true, + "⫕": true, + "⫓": true, + "≻": true, + "⪸": true, + "≽": true, + "⪰": true, + "⪺": true, + "⪶": true, + "⋩": true, + "≿": true, + "∑": true, + "♪": true, + "¹": true, + "¹": true, + "²": true, + "²": true, + "³": true, + "³": true, + "⊃": true, + "⫆": true, + "⪾": true, + "⫘": true, + "⊇": true, + "⫄": true, + "⟉": true, + "⫗": true, + "⥻": true, + "⫂": true, + "⫌": true, + "⊋": true, + "⫀": true, + "⊃": true, + "⊇": true, + "⫆": true, + "⊋": true, + "⫌": true, + "⫈": true, + "⫔": true, + "⫖": true, + "⇙": true, + "⤦": true, + "↙": true, + "↙": true, + "⤪": true, + "ß": true, + "ß": true, + "⌖": true, + "τ": true, + "⎴": true, + "ť": true, + "ţ": true, + "т": true, + "⃛": true, + "⌕": true, + "𝔱": true, + "∴": true, + "∴": true, + "θ": true, + "ϑ": true, + "ϑ": true, + "≈": true, + "∼": true, + " ": true, + "≈": true, + "∼": true, + "þ": true, + "þ": true, + "˜": true, + "×": true, + "×": true, + "⊠": true, + "⨱": true, + "⨰": true, + "∭": true, + "⤨": true, + "⊤": true, + "⌶": true, + "⫱": true, + "𝕥": true, + "⫚": true, + "⤩": true, + "‴": true, + "™": true, + "▵": true, + "▿": true, + "◃": true, + "⊴": true, + "≜": true, + "▹": true, + "⊵": true, + "◬": true, + "≜": true, + "⨺": true, + "⨹": true, + "⧍": true, + "⨻": true, + "⏢": true, + "𝓉": true, + "ц": true, + "ћ": true, + "ŧ": true, + "≬": true, + "↞": true, + "↠": true, + "⇑": true, + "⥣": true, + "ú": true, + "ú": true, + "↑": true, + "ў": true, + "ŭ": true, + "û": true, + "û": true, + "у": true, + "⇅": true, + "ű": true, + "⥮": true, + "⥾": true, + "𝔲": true, + "ù": true, + "ù": true, + "↿": true, + "↾": true, + "▀": true, + "⌜": true, + "⌜": true, + "⌏": true, + "◸": true, + "ū": true, + "¨": true, + "¨": true, + "ų": true, + "𝕦": true, + "↑": true, + "↕": true, + "↿": true, + "↾": true, + "⊎": true, + "υ": true, + "ϒ": true, + "υ": true, + "⇈": true, + "⌝": true, + "⌝": true, + "⌎": true, + "ů": true, + "◹": true, + "𝓊": true, + "⋰": true, + "ũ": true, + "▵": true, + "▴": true, + "⇈": true, + "ü": true, + "ü": true, + "⦧": true, + "⇕": true, + "⫨": true, + "⫩": true, + "⊨": true, + "⦜": true, + "ϵ": true, + "ϰ": true, + "∅": true, + "ϕ": true, + "ϖ": true, + "∝": true, + "↕": true, + "ϱ": true, + "ς": true, + "⊊︀": true, + "⫋︀": true, + "⊋︀": true, + "⫌︀": true, + "ϑ": true, + "⊲": true, + "⊳": true, + "в": true, + "⊢": true, + "∨": true, + "⊻": true, + "≚": true, + "⋮": true, + "|": true, + "|": true, + "𝔳": true, + "⊲": true, + "⊂⃒": true, + "⊃⃒": true, + "𝕧": true, + "∝": true, + "⊳": true, + "𝓋": true, + "⫋︀": true, + "⊊︀": true, + "⫌︀": true, + "⊋︀": true, + "⦚": true, + "ŵ": true, + "⩟": true, + "∧": true, + "≙": true, + "℘": true, + "𝔴": true, + "𝕨": true, + "℘": true, + "≀": true, + "≀": true, + "𝓌": true, + "⋂": true, + "◯": true, + "⋃": true, + "▽": true, + "𝔵": true, + "⟺": true, + "⟷": true, + "ξ": true, + "⟸": true, + "⟵": true, + "⟼": true, + "⋻": true, + "⨀": true, + "𝕩": true, + "⨁": true, + "⨂": true, + "⟹": true, + "⟶": true, + "𝓍": true, + "⨆": true, + "⨄": true, + "△": true, + "⋁": true, + "⋀": true, + "ý": true, + "ý": true, + "я": true, + "ŷ": true, + "ы": true, + "¥": true, + "¥": true, + "𝔶": true, + "ї": true, + "𝕪": true, + "𝓎": true, + "ю": true, + "ÿ": true, + "ÿ": true, + "ź": true, + "ž": true, + "з": true, + "ż": true, + "ℨ": true, + "ζ": true, + "𝔷": true, + "ж": true, + "⇝": true, + "𝕫": true, + "𝓏": true, + "‍": true, + "‌": true, +} diff --git a/vendor/github.com/russross/blackfriday/v2/esc.go b/vendor/github.com/russross/blackfriday/v2/esc.go index 6385f27cb6..6ab60102c9 100644 --- a/vendor/github.com/russross/blackfriday/v2/esc.go +++ b/vendor/github.com/russross/blackfriday/v2/esc.go @@ -13,13 +13,27 @@ var htmlEscaper = [256][]byte{ } func escapeHTML(w io.Writer, s []byte) { + escapeEntities(w, s, false) +} + +func escapeAllHTML(w io.Writer, s []byte) { + escapeEntities(w, s, true) +} + +func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) { var start, end int for end < len(s) { escSeq := htmlEscaper[s[end]] if escSeq != nil { - w.Write(s[start:end]) - w.Write(escSeq) - start = end + 1 + isEntity, entityEnd := nodeIsEntity(s, end) + if isEntity && !escapeValidEntities { + w.Write(s[start : entityEnd+1]) + start = entityEnd + 1 + } else { + w.Write(s[start:end]) + w.Write(escSeq) + start = end + 1 + } } end++ } @@ -28,6 +42,28 @@ func escapeHTML(w io.Writer, s []byte) { } } +func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) { + isEntity = false + endEntityPos = end + 1 + + if s[end] == '&' { + for endEntityPos < len(s) { + if s[endEntityPos] == ';' { + if entities[string(s[end:endEntityPos+1])] { + isEntity = true + break + } + } + if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' { + break + } + endEntityPos++ + } + } + + return isEntity, endEntityPos +} + func escLink(w io.Writer, text []byte) { unesc := html.UnescapeString(string(text)) escapeHTML(w, []byte(unesc)) diff --git a/vendor/github.com/russross/blackfriday/v2/html.go b/vendor/github.com/russross/blackfriday/v2/html.go index 284c87184f..cb4f26e30f 100644 --- a/vendor/github.com/russross/blackfriday/v2/html.go +++ b/vendor/github.com/russross/blackfriday/v2/html.go @@ -132,7 +132,10 @@ func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer { } if params.FootnoteReturnLinkContents == "" { - params.FootnoteReturnLinkContents = `[return]` + // U+FE0E is VARIATION SELECTOR-15. + // It suppresses automatic emoji presentation of the preceding + // U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS. + params.FootnoteReturnLinkContents = "↩\ufe0e" } return &HTMLRenderer{ @@ -616,7 +619,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt } case Code: r.out(w, codeTag) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) case Document: break @@ -762,7 +765,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt r.cr(w) r.out(w, preTag) r.tag(w, codeTag[:len(codeTag)-1], attrs) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) r.out(w, preCloseTag) if node.Parent.Type != Item { diff --git a/vendor/github.com/russross/blackfriday/v2/inline.go b/vendor/github.com/russross/blackfriday/v2/inline.go index 4ed2907921..d45bd94172 100644 --- a/vendor/github.com/russross/blackfriday/v2/inline.go +++ b/vendor/github.com/russross/blackfriday/v2/inline.go @@ -278,7 +278,7 @@ func link(p *Markdown, data []byte, offset int) (int, *Node) { case data[i] == '\n': textHasNl = true - case data[i-1] == '\\': + case isBackslashEscaped(data, i): continue case data[i] == '[': diff --git a/vendor/github.com/russross/blackfriday/v2/node.go b/vendor/github.com/russross/blackfriday/v2/node.go index 51b9e8c1b5..04e6050cee 100644 --- a/vendor/github.com/russross/blackfriday/v2/node.go +++ b/vendor/github.com/russross/blackfriday/v2/node.go @@ -199,7 +199,8 @@ func (n *Node) InsertBefore(sibling *Node) { } } -func (n *Node) isContainer() bool { +// IsContainer returns true if 'n' can contain children. +func (n *Node) IsContainer() bool { switch n.Type { case Document: fallthrough @@ -238,6 +239,11 @@ func (n *Node) isContainer() bool { } } +// IsLeaf returns true if 'n' is a leaf node. +func (n *Node) IsLeaf() bool { + return !n.IsContainer() +} + func (n *Node) canContain(t NodeType) bool { if n.Type == List { return t == Item @@ -309,11 +315,11 @@ func newNodeWalker(root *Node) *nodeWalker { } func (nw *nodeWalker) next() { - if (!nw.current.isContainer() || !nw.entering) && nw.current == nw.root { + if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root { nw.current = nil return } - if nw.entering && nw.current.isContainer() { + if nw.entering && nw.current.IsContainer() { if nw.current.FirstChild != nil { nw.current = nw.current.FirstChild nw.entering = true diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml b/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml deleted file mode 100644 index 93b1fcdb31..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -sudo: false -language: go -go: - - 1.x - - master -matrix: - allow_failures: - - go: master - fast_finish: true -install: - - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go tool vet . - - go test -v -race ./... diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE b/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE deleted file mode 100644 index c35c17af98..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2015 Dmitri Shuralyov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md b/vendor/github.com/shurcooL/sanitized_anchor_name/README.md deleted file mode 100644 index 670bf0fe6c..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md +++ /dev/null @@ -1,36 +0,0 @@ -sanitized_anchor_name -===================== - -[![Build Status](https://travis-ci.org/shurcooL/sanitized_anchor_name.svg?branch=master)](https://travis-ci.org/shurcooL/sanitized_anchor_name) [![GoDoc](https://godoc.org/github.com/shurcooL/sanitized_anchor_name?status.svg)](https://godoc.org/github.com/shurcooL/sanitized_anchor_name) - -Package sanitized_anchor_name provides a func to create sanitized anchor names. - -Its logic can be reused by multiple packages to create interoperable anchor names -and links to those anchors. - -At this time, it does not try to ensure that generated anchor names -are unique, that responsibility falls on the caller. - -Installation ------------- - -```bash -go get -u github.com/shurcooL/sanitized_anchor_name -``` - -Example -------- - -```Go -anchorName := sanitized_anchor_name.Create("This is a header") - -fmt.Println(anchorName) - -// Output: -// this-is-a-header -``` - -License -------- - -- [MIT License](LICENSE) diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/go.mod b/vendor/github.com/shurcooL/sanitized_anchor_name/go.mod deleted file mode 100644 index 1e25534759..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/shurcooL/sanitized_anchor_name diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go b/vendor/github.com/shurcooL/sanitized_anchor_name/main.go deleted file mode 100644 index 6a77d12431..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go +++ /dev/null @@ -1,29 +0,0 @@ -// Package sanitized_anchor_name provides a func to create sanitized anchor names. -// -// Its logic can be reused by multiple packages to create interoperable anchor names -// and links to those anchors. -// -// At this time, it does not try to ensure that generated anchor names -// are unique, that responsibility falls on the caller. -package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name" - -import "unicode" - -// Create returns a sanitized anchor name for the given text. -func Create(text string) string { - var anchorName []rune - var futureDash = false - for _, r := range text { - switch { - case unicode.IsLetter(r) || unicode.IsNumber(r): - if futureDash && len(anchorName) > 0 { - anchorName = append(anchorName, '-') - } - futureDash = false - anchorName = append(anchorName, unicode.ToLower(r)) - default: - futureDash = true - } - } - return string(anchorName) -} diff --git a/vendor/github.com/spf13/cobra/MAINTAINERS b/vendor/github.com/spf13/cobra/MAINTAINERS new file mode 100644 index 0000000000..4c5ac3dd99 --- /dev/null +++ b/vendor/github.com/spf13/cobra/MAINTAINERS @@ -0,0 +1,13 @@ +maintainers: +- spf13 +- johnSchnake +- jpmcb +- marckhouzam +inactive: +- anthonyfok +- bep +- bogem +- broady +- eparis +- jharshman +- wfernandes diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile index 472c73bf16..443ef1a987 100644 --- a/vendor/github.com/spf13/cobra/Makefile +++ b/vendor/github.com/spf13/cobra/Makefile @@ -9,11 +9,11 @@ ifeq (, $(shell which richgo)) $(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") endif -.PHONY: fmt lint test cobra_generator install_deps clean +.PHONY: fmt lint test install_deps clean default: all -all: fmt test cobra_generator +all: fmt test fmt: $(info ******************** checking formatting ********************) @@ -23,15 +23,10 @@ lint: $(info ******************** running lint tools ********************) golangci-lint run -v -test: install_deps lint +test: install_deps $(info ******************** running tests ********************) richgo test -v ./... -cobra_generator: install_deps - $(info ******************** building generator ********************) - mkdir -p $(BIN) - make -C cobra all - install_deps: $(info ******************** downloading dependencies ********************) go get -v ./... diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index 074e3979f8..7adef143b4 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -1,52 +1,26 @@ ![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) -Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. +Cobra is a library for creating powerful modern CLI applications. Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), [Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. [![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) -[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) +[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) [![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) -# Table of Contents - -- [Overview](#overview) -- [Concepts](#concepts) - * [Commands](#commands) - * [Flags](#flags) -- [Installing](#installing) -- [Usage](#usage) - * [Using the Cobra Generator](user_guide.md#using-the-cobra-generator) - * [Using the Cobra Library](user_guide.md#using-the-cobra-library) - * [Working with Flags](user_guide.md#working-with-flags) - * [Positional and Custom Arguments](user_guide.md#positional-and-custom-arguments) - * [Example](user_guide.md#example) - * [Help Command](user_guide.md#help-command) - * [Usage Message](user_guide.md#usage-message) - * [PreRun and PostRun Hooks](user_guide.md#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](user_guide.md#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](user_guide.md#generating-documentation-for-your-command) - * [Generating shell completions](user_guide.md#generating-shell-completions) -- [Contributing](CONTRIBUTING.md) -- [License](#license) - # Overview Cobra is a library providing a simple interface to create powerful modern CLI interfaces similar to git & go tools. -Cobra is also an application that will generate your application scaffolding to rapidly -develop a Cobra-based application. - Cobra provides: * Easy subcommand-based CLIs: `app server`, `app fetch`, etc. * Fully POSIX-compliant flags (including short & long versions) * Nested subcommands * Global, local and cascading flags -* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname` * Intelligent suggestions (`app srver`... did you mean `app server`?) * Automatic help generation for commands and flags * Automatic help flag recognition of `-h`, `--help`, etc. @@ -54,7 +28,7 @@ Cobra provides: * Automatically generated man pages for your application * Command aliases so you can change things without breaking them * The flexibility to define your own help, usage, etc. -* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps +* Optional seamless integration with [viper](http://github.com/spf13/viper) for 12-factor apps # Concepts @@ -88,7 +62,7 @@ have children commands and optionally run an action. In the example above, 'server' is the command. -[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command) +[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command) ## Flags @@ -105,10 +79,11 @@ which maintains the same interface while adding POSIX compliance. # Installing Using Cobra is easy. First, use `go get` to install the latest version -of the library. This command will install the `cobra` generator executable -along with the library and its dependencies: +of the library. - go get -u github.com/spf13/cobra +``` +go get -u github.com/spf13/cobra@latest +``` Next, include Cobra in your application: @@ -117,8 +92,19 @@ import "github.com/spf13/cobra" ``` # Usage +`cobra-cli` is a command line program to generate cobra applications and command files. +It will bootstrap your application scaffolding to rapidly +develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. + +It can be installed by running: + +``` +go install github.com/spf13/cobra-cli@latest +``` + +For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) -See [User Guide](user_guide.md). +For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). # License diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go index 70e9b26291..20a022b308 100644 --- a/vendor/github.com/spf13/cobra/args.go +++ b/vendor/github.com/spf13/cobra/args.go @@ -107,3 +107,15 @@ func RangeArgs(min int, max int) PositionalArgs { return nil } } + +// MatchAll allows combining several PositionalArgs to work in concert. +func MatchAll(pargs ...PositionalArgs) PositionalArgs { + return func(cmd *Command, args []string) error { + for _, parg := range pargs { + if err := parg(cmd, args); err != nil { + return err + } + } + return nil + } +} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 733f4d1211..6c360c595f 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -24,7 +24,7 @@ func writePreamble(buf io.StringWriter, name string) { WriteStringAndCheck(buf, fmt.Sprintf(` __%[1]s_debug() { - if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then + if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then echo "$*" >> "${BASH_COMP_DEBUG_FILE}" fi } @@ -134,7 +134,7 @@ __%[1]s_handle_go_custom_completion() $filteringCmd elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir # Use printf to strip any trailing newline subdir=$(printf "%%s" "${out[0]}") if [ -n "$subdir" ]; then @@ -187,13 +187,19 @@ __%[1]s_handle_reply() PREFIX="" cur="${cur#*=}" ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION}" ]; then + if [ -n "${ZSH_VERSION:-}" ]; then # zsh completion needs --flag= prefix eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" fi fi fi - return 0; + + if [[ -z "${flag_parsing_disabled}" ]]; then + # If flag parsing is enabled, we have completed the flags and can return. + # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough + # to possibly call handle_go_custom_completion. + return 0; + fi ;; esac @@ -232,13 +238,13 @@ __%[1]s_handle_reply() fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi + if declare -F __%[1]s_custom_func >/dev/null; then + # try command name qualified custom func + __%[1]s_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi fi # available in bash-completion >= 2, not always present on macOS @@ -272,7 +278,7 @@ __%[1]s_handle_flag() # if a command required a flag, and we found it, unset must_have_one_flag() local flagname=${words[c]} - local flagvalue + local flagvalue="" # if the word contained an = if [[ ${words[c]} == *"="* ]]; then flagvalue=${flagname#*=} # take in as flagvalue after the = @@ -291,7 +297,7 @@ __%[1]s_handle_flag() # keep flag value with flagname as flaghash # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then if [ -n "${flagvalue}" ] ; then flaghash[${flagname}]=${flagvalue} elif [ -n "${words[ $((c+1)) ]}" ] ; then @@ -303,7 +309,7 @@ __%[1]s_handle_flag() # skip the argument to a two word flag if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" + __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" c=$((c+1)) # if we are looking for a flags value, don't show commands if [[ $c -eq $cword ]]; then @@ -363,7 +369,7 @@ __%[1]s_handle_word() __%[1]s_handle_command elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then words[c]=${aliashash[${words[c]}]} __%[1]s_handle_command else @@ -394,6 +400,7 @@ func writePostscript(buf io.StringWriter, name string) { fi local c=0 + local flag_parsing_disabled= local flags=() local two_word_flags=() local local_nonpersistent_flags=() @@ -403,8 +410,8 @@ func writePostscript(buf io.StringWriter, name string) { local command_aliases=() local must_have_one_flag=() local must_have_one_noun=() - local has_completion_function - local last_command + local has_completion_function="" + local last_command="" local nouns=() local noun_aliases=() @@ -535,6 +542,11 @@ func writeFlags(buf io.StringWriter, cmd *Command) { flags_completion=() `) + + if cmd.DisableFlagParsing { + WriteStringAndCheck(buf, " flag_parsing_disabled=1\n") + } + localNonPersistentFlags := cmd.LocalNonPersistentFlags() cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { if nonCompletableFlag(flag) { @@ -609,7 +621,7 @@ func writeCmdAliases(buf io.StringWriter, cmd *Command) { sort.Strings(cmd.Aliases) - WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then`, "\n")) + WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then`, "\n")) for _, value := range cmd.Aliases { WriteStringAndCheck(buf, fmt.Sprintf(" command_aliases+=(%q)\n", value)) WriteStringAndCheck(buf, fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go index 8859b57c42..82d26c1756 100644 --- a/vendor/github.com/spf13/cobra/bash_completionsV2.go +++ b/vendor/github.com/spf13/cobra/bash_completionsV2.go @@ -138,13 +138,42 @@ __%[1]s_process_completion_results() { _filedir -d fi else - __%[1]s_handle_standard_completion_case + __%[1]s_handle_completion_types fi __%[1]s_handle_special_char "$cur" : __%[1]s_handle_special_char "$cur" = } +__%[1]s_handle_completion_types() { + __%[1]s_debug "__%[1]s_handle_completion_types: COMP_TYPE is $COMP_TYPE" + + case $COMP_TYPE in + 37|42) + # Type: menu-complete/menu-complete-backward and insert-completions + # If the user requested inserting one completion at a time, or all + # completions at once on the command-line we must remove the descriptions. + # https://github.com/spf13/cobra/issues/1508 + local tab comp + tab=$(printf '\t') + while IFS='' read -r comp; do + # Strip any description + comp=${comp%%%%$tab*} + # Only consider the completions that match + comp=$(compgen -W "$comp" -- "$cur") + if [ -n "$comp" ]; then + COMPREPLY+=("$comp") + fi + done < <(printf "%%s\n" "${out[@]}") + ;; + + *) + # Type: complete (normal completion) + __%[1]s_handle_standard_completion_case + ;; + esac +} + __%[1]s_handle_standard_completion_case() { local tab comp tab=$(printf '\t') diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go index 6159c1cc19..bb5dad90b7 100644 --- a/vendor/github.com/spf13/cobra/command_notwin.go +++ b/vendor/github.com/spf13/cobra/command_notwin.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package cobra diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go index 8768b1736d..a84f5a82aa 100644 --- a/vendor/github.com/spf13/cobra/command_win.go +++ b/vendor/github.com/spf13/cobra/command_win.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package cobra diff --git a/vendor/github.com/spf13/cobra/completions.go b/vendor/github.com/spf13/cobra/completions.go index b849b9c844..9ecd56a472 100644 --- a/vendor/github.com/spf13/cobra/completions.go +++ b/vendor/github.com/spf13/cobra/completions.go @@ -93,6 +93,8 @@ type CompletionOptions struct { // DisableDescriptions turns off all completion descriptions for shells // that support them DisableDescriptions bool + // HiddenDefaultCmd makes the default 'completion' command hidden + HiddenDefaultCmd bool } // NoFileCompletions can be used to disable file completion for commands that should @@ -226,7 +228,17 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi if c.Root().TraverseChildren { finalCmd, finalArgs, err = c.Root().Traverse(trimmedArgs) } else { - finalCmd, finalArgs, err = c.Root().Find(trimmedArgs) + // For Root commands that don't specify any value for their Args fields, when we call + // Find(), if those Root commands don't have any sub-commands, they will accept arguments. + // However, because we have added the __complete sub-command in the current code path, the + // call to Find() -> legacyArgs() will return an error if there are any arguments. + // To avoid this, we first remove the __complete command to get back to having no sub-commands. + rootCmd := c.Root() + if len(rootCmd.Commands()) == 1 { + rootCmd.RemoveCommand(c) + } + + finalCmd, finalArgs, err = rootCmd.Find(trimmedArgs) } if err != nil { // Unable to find the real command. E.g., someInvalidCmd @@ -266,6 +278,12 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } } + // We only remove the flags from the arguments if DisableFlagParsing is not set. + // This is important for commands which have requested to do their own flag completion. + if !finalCmd.DisableFlagParsing { + finalArgs = finalCmd.Flags().Args() + } + if flag != nil && flagCompletion { // Check if we are completing a flag value subject to annotations if validExts, present := flag.Annotations[BashCompFilenameExt]; present { @@ -290,12 +308,16 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } } + var completions []string + var directive ShellCompDirective + + // Note that we want to perform flagname completion even if finalCmd.DisableFlagParsing==true; + // doing this allows for completion of persistant flag names even for commands that disable flag parsing. + // // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires // the flag name to be complete if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { - var completions []string - // First check for required flags completions = completeRequireFlags(finalCmd, toComplete) @@ -322,86 +344,86 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi }) } - directive := ShellCompDirectiveNoFileComp + directive = ShellCompDirectiveNoFileComp if len(completions) == 1 && strings.HasSuffix(completions[0], "=") { // If there is a single completion, the shell usually adds a space // after the completion. We don't want that if the flag ends with an = directive = ShellCompDirectiveNoSpace } - return finalCmd, completions, directive, nil - } - // We only remove the flags from the arguments if DisableFlagParsing is not set. - // This is important for commands which have requested to do their own flag completion. - if !finalCmd.DisableFlagParsing { - finalArgs = finalCmd.Flags().Args() - } - - var completions []string - directive := ShellCompDirectiveDefault - if flag == nil { - foundLocalNonPersistentFlag := false - // If TraverseChildren is true on the root command we don't check for - // local flags because we can use a local flag on a parent command - if !finalCmd.Root().TraverseChildren { - // Check if there are any local, non-persistent flags on the command-line - localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { - foundLocalNonPersistentFlag = true - } - }) + if !finalCmd.DisableFlagParsing { + // If DisableFlagParsing==false, we have completed the flags as known by Cobra; + // we can return what we found. + // If DisableFlagParsing==true, Cobra may not be aware of all flags, so we + // let the logic continue to see if ValidArgsFunction needs to be called. + return finalCmd, completions, directive, nil } + } else { + directive = ShellCompDirectiveDefault + if flag == nil { + foundLocalNonPersistentFlag := false + // If TraverseChildren is true on the root command we don't check for + // local flags because we can use a local flag on a parent command + if !finalCmd.Root().TraverseChildren { + // Check if there are any local, non-persistent flags on the command-line + localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { + foundLocalNonPersistentFlag = true + } + }) + } - // Complete subcommand names, including the help command - if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { - // We only complete sub-commands if: - // - there are no arguments on the command-line and - // - there are no local, non-persistent flags on the command-line or TraverseChildren is true - for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { - if strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + // Complete subcommand names, including the help command + if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { + // We only complete sub-commands if: + // - there are no arguments on the command-line and + // - there are no local, non-persistent flags on the command-line or TraverseChildren is true + for _, subCmd := range finalCmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + directive = ShellCompDirectiveNoFileComp } - directive = ShellCompDirectiveNoFileComp } } - } - // Complete required flags even without the '-' prefix - completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) - - // Always complete ValidArgs, even if we are completing a subcommand name. - // This is for commands that have both subcommands and ValidArgs. - if len(finalCmd.ValidArgs) > 0 { - if len(finalArgs) == 0 { - // ValidArgs are only for the first argument - for _, validArg := range finalCmd.ValidArgs { - if strings.HasPrefix(validArg, toComplete) { - completions = append(completions, validArg) + // Complete required flags even without the '-' prefix + completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) + + // Always complete ValidArgs, even if we are completing a subcommand name. + // This is for commands that have both subcommands and ValidArgs. + if len(finalCmd.ValidArgs) > 0 { + if len(finalArgs) == 0 { + // ValidArgs are only for the first argument + for _, validArg := range finalCmd.ValidArgs { + if strings.HasPrefix(validArg, toComplete) { + completions = append(completions, validArg) + } } - } - directive = ShellCompDirectiveNoFileComp - - // If no completions were found within commands or ValidArgs, - // see if there are any ArgAliases that should be completed. - if len(completions) == 0 { - for _, argAlias := range finalCmd.ArgAliases { - if strings.HasPrefix(argAlias, toComplete) { - completions = append(completions, argAlias) + directive = ShellCompDirectiveNoFileComp + + // If no completions were found within commands or ValidArgs, + // see if there are any ArgAliases that should be completed. + if len(completions) == 0 { + for _, argAlias := range finalCmd.ArgAliases { + if strings.HasPrefix(argAlias, toComplete) { + completions = append(completions, argAlias) + } } } } + + // If there are ValidArgs specified (even if they don't match), we stop completion. + // Only one of ValidArgs or ValidArgsFunction can be used for a single command. + return finalCmd, completions, directive, nil } - // If there are ValidArgs specified (even if they don't match), we stop completion. - // Only one of ValidArgs or ValidArgsFunction can be used for a single command. - return finalCmd, completions, directive, nil + // Let the logic continue so as to add any ValidArgsFunction completions, + // even if we already found sub-commands. + // This is for commands that have subcommands but also specify a ValidArgsFunction. } - - // Let the logic continue so as to add any ValidArgsFunction completions, - // even if we already found sub-commands. - // This is for commands that have subcommands but also specify a ValidArgsFunction. } // Find the completion function for the flag or command @@ -589,39 +611,43 @@ func (c *Command) initDefaultCompletionCmd() { completionCmd := &Command{ Use: compCmdName, - Short: "generate the autocompletion script for the specified shell", - Long: fmt.Sprintf(` -Generate the autocompletion script for %[1]s for the specified shell. + Short: "Generate the autocompletion script for the specified shell", + Long: fmt.Sprintf(`Generate the autocompletion script for %[1]s for the specified shell. See each sub-command's help for details on how to use the generated script. `, c.Root().Name()), Args: NoArgs, ValidArgsFunction: NoFileCompletions, + Hidden: c.CompletionOptions.HiddenDefaultCmd, } c.AddCommand(completionCmd) out := c.OutOrStdout() noDesc := c.CompletionOptions.DisableDescriptions - shortDesc := "generate the autocompletion script for %s" + shortDesc := "Generate the autocompletion script for %s" bash := &Command{ Use: "bash", Short: fmt.Sprintf(shortDesc, "bash"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the bash shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the bash shell. This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager. To load completions in your current shell session: -$ source <(%[1]s completion bash) + + source <(%[1]s completion bash) To load completions for every new session, execute once: -Linux: - $ %[1]s completion bash > /etc/bash_completion.d/%[1]s -MacOS: - $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s + +#### Linux: + + %[1]s completion bash > /etc/bash_completion.d/%[1]s + +#### macOS: + + %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s You will need to start a new shell for this setup to take effect. - `, c.Root().Name()), +`, c.Root().Name()), Args: NoArgs, DisableFlagsInUseLine: true, ValidArgsFunction: NoFileCompletions, @@ -636,19 +662,22 @@ You will need to start a new shell for this setup to take effect. zsh := &Command{ Use: "zsh", Short: fmt.Sprintf(shortDesc, "zsh"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the zsh shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: -$ echo "autoload -U compinit; compinit" >> ~/.zshrc + echo "autoload -U compinit; compinit" >> ~/.zshrc To load completions for every new session, execute once: -# Linux: -$ %[1]s completion zsh > "${fpath[1]}/_%[1]s" -# macOS: -$ %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s + +#### Linux: + + %[1]s completion zsh > "${fpath[1]}/_%[1]s" + +#### macOS: + + %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s You will need to start a new shell for this setup to take effect. `, c.Root().Name()), @@ -668,14 +697,15 @@ You will need to start a new shell for this setup to take effect. fish := &Command{ Use: "fish", Short: fmt.Sprintf(shortDesc, "fish"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the fish shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the fish shell. To load completions in your current shell session: -$ %[1]s completion fish | source + + %[1]s completion fish | source To load completions for every new session, execute once: -$ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + + %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish You will need to start a new shell for this setup to take effect. `, c.Root().Name()), @@ -692,11 +722,11 @@ You will need to start a new shell for this setup to take effect. powershell := &Command{ Use: "powershell", Short: fmt.Sprintf(shortDesc, "powershell"), - Long: fmt.Sprintf(` -Generate the autocompletion script for powershell. + Long: fmt.Sprintf(`Generate the autocompletion script for powershell. To load completions in your current shell session: -PS C:\> %[1]s completion powershell | Out-String | Invoke-Expression + + %[1]s completion powershell | Out-String | Invoke-Expression To load completions for every new session, add the output of the above command to your powershell profile. diff --git a/vendor/github.com/spf13/cobra/go.mod b/vendor/github.com/spf13/cobra/go.mod index 1fb9439dd8..2d6855911d 100644 --- a/vendor/github.com/spf13/cobra/go.mod +++ b/vendor/github.com/spf13/cobra/go.mod @@ -1,11 +1,10 @@ module github.com/spf13/cobra -go 1.14 +go 1.15 require ( - github.com/cpuguy83/go-md2man/v2 v2.0.0 + github.com/cpuguy83/go-md2man/v2 v2.0.1 github.com/inconshreveable/mousetrap v1.0.0 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.8.1 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/vendor/github.com/spf13/cobra/go.sum b/vendor/github.com/spf13/cobra/go.sum index 3e22df29a3..431058ed0f 100644 --- a/vendor/github.com/spf13/cobra/go.sum +++ b/vendor/github.com/spf13/cobra/go.sum @@ -1,592 +1,18 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go index 59234c09f1..62d719f0b3 100644 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -50,7 +50,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { if ($Command.Length -gt $CursorPosition) { $Command=$Command.Substring(0,$CursorPosition) } - __%[1]s_debug "Truncated command: $Command" + __%[1]s_debug "Truncated command: $Command" $ShellCompDirectiveError=%[3]d $ShellCompDirectiveNoSpace=%[4]d @@ -58,7 +58,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { $ShellCompDirectiveFilterFileExt=%[6]d $ShellCompDirectiveFilterDirs=%[7]d - # Prepare the command to request completions for the program. + # Prepare the command to request completions for the program. # Split the command at the first space to separate the program and arguments. $Program,$Arguments = $Command.Split(" ",2) $RequestComp="$Program %[2]s $Arguments" @@ -233,7 +233,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { Default { # Like MenuComplete but we don't want to add a space here because # the user need to press space anyway to get the completion. - # Description will not be shown because thats not possible with TabCompleteNext + # Description will not be shown because that's not possible with TabCompleteNext [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars), "$($comp.Name)", 'ParameterValue', "$($comp.Description)") } } diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md index d98a71e36f..9674c348c0 100644 --- a/vendor/github.com/spf13/cobra/projects_using_cobra.md +++ b/vendor/github.com/spf13/cobra/projects_using_cobra.md @@ -4,6 +4,7 @@ - [Bleve](http://www.blevesearch.com/) - [CockroachDB](http://www.cockroachlabs.com/) - [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) +- [Datree](https://github.com/datreeio/datree) - [Delve](https://github.com/derekparker/delve) - [Docker (distribution)](https://github.com/docker/distribution) - [Etcd](https://etcd.io/) @@ -14,25 +15,37 @@ - [GitHub Labeler](https://github.com/erdaltsksn/gh-label) - [Golangci-lint](https://golangci-lint.run) - [GopherJS](http://www.gopherjs.org/) +- [GoReleaser](https://goreleaser.com) - [Helm](https://helm.sh) - [Hugo](https://gohugo.io) +- [Infracost](https://github.com/infracost/infracost) - [Istio](https://istio.io) - [Kool](https://github.com/kool-dev/kool) - [Kubernetes](http://kubernetes.io/) - [Linkerd](https://linkerd.io/) - [Mattermost-server](https://github.com/mattermost/mattermost-server) +- [Mercure](https://mercure.rocks/) +- [Meroxa CLI](https://github.com/meroxa/cli) - [Metal Stack CLI](https://github.com/metal-stack/metalctl) - [Moby (former Docker)](https://github.com/moby/moby) +- [Moldy](https://github.com/Moldy-Community/moldy) +- [Multi-gitter](https://github.com/lindell/multi-gitter) - [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) +- [nFPM](https://nfpm.goreleaser.com) - [OpenShift](https://www.openshift.com/) - [Ory Hydra](https://github.com/ory/hydra) - [Ory Kratos](https://github.com/ory/kratos) +- [Pixie](https://github.com/pixie-io/pixie) - [Pouch](https://github.com/alibaba/pouch) - [ProjectAtomic (enterprise)](http://www.projectatomic.io/) - [Prototool](https://github.com/uber/prototool) +- [QRcp](https://github.com/claudiodangelis/qrcp) - [Random](https://github.com/erdaltsksn/random) - [Rclone](https://rclone.org/) +- [Scaleway CLI](https://github.com/scaleway/scaleway-cli) - [Skaffold](https://skaffold.dev/) - [Tendermint](https://github.com/tendermint/tendermint) - [Twitch CLI](https://github.com/twitchdev/twitch-cli) +- [UpCloud CLI (`upctl`)](https://github.com/UpCloudLtd/upcloud-cli) +- VMware's [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) & [Tanzu Framework](https://github.com/vmware-tanzu/tanzu-framework) - [Werf](https://werf.io/) diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md index 4ba06a11c0..33a4c65a5a 100644 --- a/vendor/github.com/spf13/cobra/shell_completions.md +++ b/vendor/github.com/spf13/cobra/shell_completions.md @@ -16,10 +16,12 @@ If you do not wish to use the default `completion` command, you can choose to provide your own, which will take precedence over the default one. (This also provides backwards-compatibility with programs that already have their own `completion` command.) -If you are using the generator, you can create a completion command by running +If you are using the `cobra-cli` generator, +which can be found at [spf13/cobra-cli](https://github.com/spf13/cobra-cli), +you can create a completion command by running ```bash -cobra add completion +cobra-cli add completion ``` and then modifying the generated `cmd/completion.go` file to look something like this (writing the shell script to stdout allows the most flexible use): @@ -28,17 +30,17 @@ and then modifying the generated `cmd/completion.go` file to look something like var completionCmd = &cobra.Command{ Use: "completion [bash|zsh|fish|powershell]", Short: "Generate completion script", - Long: `To load completions: + Long: fmt.Sprintf(`To load completions: Bash: - $ source <(yourprogram completion bash) + $ source <(%[1]s completion bash) # To load completions for each session, execute once: # Linux: - $ yourprogram completion bash > /etc/bash_completion.d/yourprogram + $ %[1]s completion bash > /etc/bash_completion.d/%[1]s # macOS: - $ yourprogram completion bash > /usr/local/etc/bash_completion.d/yourprogram + $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s Zsh: @@ -48,25 +50,25 @@ Zsh: $ echo "autoload -U compinit; compinit" >> ~/.zshrc # To load completions for each session, execute once: - $ yourprogram completion zsh > "${fpath[1]}/_yourprogram" + $ %[1]s completion zsh > "${fpath[1]}/_%[1]s" # You will need to start a new shell for this setup to take effect. fish: - $ yourprogram completion fish | source + $ %[1]s completion fish | source # To load completions for each session, execute once: - $ yourprogram completion fish > ~/.config/fish/completions/yourprogram.fish + $ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish PowerShell: - PS> yourprogram completion powershell | Out-String | Invoke-Expression + PS> %[1]s completion powershell | Out-String | Invoke-Expression # To load completions for every new session, run: - PS> yourprogram completion powershell > yourprogram.ps1 + PS> %[1]s completion powershell > %[1]s.ps1 # and source this file from your PowerShell profile. -`, +`,cmd.Root().Name()), DisableFlagsInUseLine: true, ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, Args: cobra.ExactValidArgs(1), diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md index 311abce284..4a3c2b0da5 100644 --- a/vendor/github.com/spf13/cobra/user_guide.md +++ b/vendor/github.com/spf13/cobra/user_guide.md @@ -29,10 +29,10 @@ func main() { ## Using the Cobra Generator -Cobra provides its own program that will create your application and add any +Cobra-CLI is its own program that will create your application and add any commands you want. It's the easiest way to incorporate Cobra into your application. -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. +For complete details on using the Cobra generator, please refer to [The Cobra-CLI Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) ## Using the Cobra Library @@ -86,7 +86,7 @@ var ( userLicense string rootCmd = &cobra.Command{ - Use: "cobra", + Use: "cobra-cli", Short: "A generator for Cobra based Applications", Long: `Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files @@ -281,7 +281,7 @@ func init() { In this example, the persistent flag `author` is bound with `viper`. **Note**: the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. +when the `--author` flag is provided by user. More in [viper documentation](https://github.com/spf13/viper#working-with-flags). @@ -315,6 +315,7 @@ The following validators are built in: - `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. - `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` - `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. +- `MatchAll(pargs ...PositionalArgs)` - enables combining existing checks with arbitrary other checks (e.g. you want to check the ExactArgs length along with other qualities). An example of setting the custom validator: diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go index 1afec30ea9..624adab537 100644 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -202,7 +202,7 @@ _%[1]s() _arguments '*:filename:'"$filteringCmd" elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir subdir="${completions[1]}" if [ -n "$subdir" ]; then __%[1]s_debug "Listing directories in $subdir" @@ -250,7 +250,7 @@ _%[1]s() # don't run the completion function when being source-ed or eval-ed if [ "$funcstack[1]" = "_%[1]s" ]; then - _%[1]s + _%[1]s fi `, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md index 093c82b3af..c6672c0a3e 100644 --- a/vendor/google.golang.org/grpc/MAINTAINERS.md +++ b/vendor/google.golang.org/grpc/MAINTAINERS.md @@ -8,17 +8,18 @@ See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIB for general contribution guidelines. ## Maintainers (in alphabetical order) -- [canguler](https://github.com/canguler), Google LLC + - [cesarghali](https://github.com/cesarghali), Google LLC - [dfawley](https://github.com/dfawley), Google LLC - [easwars](https://github.com/easwars), Google LLC -- [jadekler](https://github.com/jadekler), Google LLC - [menghanl](https://github.com/menghanl), Google LLC - [srini100](https://github.com/srini100), Google LLC ## Emeritus Maintainers (in alphabetical order) - [adelez](https://github.com/adelez), Google LLC +- [canguler](https://github.com/canguler), Google LLC - [iamqizhao](https://github.com/iamqizhao), Google LLC +- [jadekler](https://github.com/jadekler), Google LLC - [jtattermusch](https://github.com/jtattermusch), Google LLC - [lyuxuan](https://github.com/lyuxuan), Google LLC - [makmukhi](https://github.com/makmukhi), Google LLC diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile index 1f0722f162..1f8960922b 100644 --- a/vendor/google.golang.org/grpc/Makefile +++ b/vendor/google.golang.org/grpc/Makefile @@ -41,8 +41,6 @@ vetdeps: clean \ proto \ test \ - testappengine \ - testappenginedeps \ testrace \ vet \ vetdeps diff --git a/vendor/google.golang.org/grpc/NOTICE.txt b/vendor/google.golang.org/grpc/NOTICE.txt new file mode 100644 index 0000000000..530197749e --- /dev/null +++ b/vendor/google.golang.org/grpc/NOTICE.txt @@ -0,0 +1,13 @@ +Copyright 2014 gRPC authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/google.golang.org/grpc/attributes/attributes.go b/vendor/google.golang.org/grpc/attributes/attributes.go index 3220d87be4..6ff2792ee4 100644 --- a/vendor/google.golang.org/grpc/attributes/attributes.go +++ b/vendor/google.golang.org/grpc/attributes/attributes.go @@ -25,55 +25,75 @@ // later release. package attributes -import "fmt" - // Attributes is an immutable struct for storing and retrieving generic // key/value pairs. Keys must be hashable, and users should define their own -// types for keys. +// types for keys. Values should not be modified after they are added to an +// Attributes or if they were received from one. If values implement 'Equal(o +// interface{}) bool', it will be called by (*Attributes).Equal to determine +// whether two values with the same key should be considered equal. type Attributes struct { m map[interface{}]interface{} } -// New returns a new Attributes containing all key/value pairs in kvs. If the -// same key appears multiple times, the last value overwrites all previous -// values for that key. Panics if len(kvs) is not even. -func New(kvs ...interface{}) *Attributes { - if len(kvs)%2 != 0 { - panic(fmt.Sprintf("attributes.New called with unexpected input: len(kvs) = %v", len(kvs))) - } - a := &Attributes{m: make(map[interface{}]interface{}, len(kvs)/2)} - for i := 0; i < len(kvs)/2; i++ { - a.m[kvs[i*2]] = kvs[i*2+1] - } - return a +// New returns a new Attributes containing the key/value pair. +func New(key, value interface{}) *Attributes { + return &Attributes{m: map[interface{}]interface{}{key: value}} } -// WithValues returns a new Attributes containing all key/value pairs in a and -// kvs. Panics if len(kvs) is not even. If the same key appears multiple -// times, the last value overwrites all previous values for that key. To -// remove an existing key, use a nil value. -func (a *Attributes) WithValues(kvs ...interface{}) *Attributes { +// WithValue returns a new Attributes containing the previous keys and values +// and the new key/value pair. If the same key appears multiple times, the +// last value overwrites all previous values for that key. To remove an +// existing key, use a nil value. value should not be modified later. +func (a *Attributes) WithValue(key, value interface{}) *Attributes { if a == nil { - return New(kvs...) + return New(key, value) } - if len(kvs)%2 != 0 { - panic(fmt.Sprintf("attributes.New called with unexpected input: len(kvs) = %v", len(kvs))) - } - n := &Attributes{m: make(map[interface{}]interface{}, len(a.m)+len(kvs)/2)} + n := &Attributes{m: make(map[interface{}]interface{}, len(a.m)+1)} for k, v := range a.m { n.m[k] = v } - for i := 0; i < len(kvs)/2; i++ { - n.m[kvs[i*2]] = kvs[i*2+1] - } + n.m[key] = value return n } // Value returns the value associated with these attributes for key, or nil if -// no value is associated with key. +// no value is associated with key. The returned value should not be modified. func (a *Attributes) Value(key interface{}) interface{} { if a == nil { return nil } return a.m[key] } + +// Equal returns whether a and o are equivalent. If 'Equal(o interface{}) +// bool' is implemented for a value in the attributes, it is called to +// determine if the value matches the one stored in the other attributes. If +// Equal is not implemented, standard equality is used to determine if the two +// values are equal. +func (a *Attributes) Equal(o *Attributes) bool { + if a == nil && o == nil { + return true + } + if a == nil || o == nil { + return false + } + if len(a.m) != len(o.m) { + return false + } + for k, v := range a.m { + ov, ok := o.m[k] + if !ok { + // o missing element of a + return false + } + if eq, ok := v.(interface{ Equal(o interface{}) bool }); ok { + if !eq.Equal(ov) { + return false + } + } else if v != ov { + // Fallback to a standard equality check if Value is unimplemented. + return false + } + } + return true +} diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index ab531f4c0b..bcc6f5451c 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -75,24 +75,26 @@ func Get(name string) Builder { return nil } -// SubConn represents a gRPC sub connection. -// Each sub connection contains a list of addresses. gRPC will -// try to connect to them (in sequence), and stop trying the -// remainder once one connection is successful. +// A SubConn represents a single connection to a gRPC backend service. // -// The reconnect backoff will be applied on the list, not a single address. -// For example, try_on_all_addresses -> backoff -> try_on_all_addresses. +// Each SubConn contains a list of addresses. // -// All SubConns start in IDLE, and will not try to connect. To trigger -// the connecting, Balancers must call Connect. -// When the connection encounters an error, it will reconnect immediately. -// When the connection becomes IDLE, it will not reconnect unless Connect is -// called. +// All SubConns start in IDLE, and will not try to connect. To trigger the +// connecting, Balancers must call Connect. If a connection re-enters IDLE, +// Balancers must call Connect again to trigger a new connection attempt. // -// This interface is to be implemented by gRPC. Users should not need a -// brand new implementation of this interface. For the situations like -// testing, the new implementation should embed this interface. This allows -// gRPC to add new methods to this interface. +// gRPC will try to connect to the addresses in sequence, and stop trying the +// remainder once the first connection is successful. If an attempt to connect +// to all addresses encounters an error, the SubConn will enter +// TRANSIENT_FAILURE for a backoff period, and then transition to IDLE. +// +// Once established, if a connection is lost, the SubConn will transition +// directly to IDLE. +// +// This interface is to be implemented by gRPC. Users should not need their own +// implementation of this interface. For situations like testing, any +// implementations should embed this interface. This allows gRPC to add new +// methods to this interface. type SubConn interface { // UpdateAddresses updates the addresses used in this SubConn. // gRPC checks if currently-connected address is still in the new list. @@ -172,25 +174,32 @@ type ClientConn interface { // BuildOptions contains additional information for Build. type BuildOptions struct { - // DialCreds is the transport credential the Balancer implementation can - // use to dial to a remote load balancer server. The Balancer implementations - // can ignore this if it does not need to talk to another party securely. + // DialCreds is the transport credentials to use when communicating with a + // remote load balancer server. Balancer implementations which do not + // communicate with a remote load balancer server can ignore this field. DialCreds credentials.TransportCredentials - // CredsBundle is the credentials bundle that the Balancer can use. + // CredsBundle is the credentials bundle to use when communicating with a + // remote load balancer server. Balancer implementations which do not + // communicate with a remote load balancer server can ignore this field. CredsBundle credentials.Bundle - // Dialer is the custom dialer the Balancer implementation can use to dial - // to a remote load balancer server. The Balancer implementations - // can ignore this if it doesn't need to talk to remote balancer. + // Dialer is the custom dialer to use when communicating with a remote load + // balancer server. Balancer implementations which do not communicate with a + // remote load balancer server can ignore this field. Dialer func(context.Context, string) (net.Conn, error) - // ChannelzParentID is the entity parent's channelz unique identification number. + // Authority is the server name to use as part of the authentication + // handshake when communicating with a remote load balancer server. Balancer + // implementations which do not communicate with a remote load balancer + // server can ignore this field. + Authority string + // ChannelzParentID is the parent ClientConn's channelz ID. ChannelzParentID int64 // CustomUserAgent is the custom user agent set on the parent ClientConn. // The balancer should set the same custom user agent if it creates a // ClientConn. CustomUserAgent string - // Target contains the parsed address info of the dial target. It is the same resolver.Target as - // passed to the resolver. - // See the documentation for the resolver.Target type for details about what it contains. + // Target contains the parsed address info of the dial target. It is the + // same resolver.Target as passed to the resolver. See the documentation for + // the resolver.Target type for details about what it contains. Target resolver.Target } @@ -326,6 +335,20 @@ type Balancer interface { Close() } +// ExitIdler is an optional interface for balancers to implement. If +// implemented, ExitIdle will be called when ClientConn.Connect is called, if +// the ClientConn is idle. If unimplemented, ClientConn.Connect will cause +// all SubConns to connect. +// +// Notice: it will be required for all balancers to implement this in a future +// release. +type ExitIdler interface { + // ExitIdle instructs the LB policy to reconnect to backends / exit the + // IDLE state, if appropriate and possible. Note that SubConns that enter + // the IDLE state will not reconnect until SubConn.Connect is called. + ExitIdle() +} + // SubConnState describes the state of a SubConn. type SubConnState struct { // ConnectivityState is the connectivity state of the SubConn. @@ -353,8 +376,10 @@ var ErrBadResolverState = errors.New("bad resolver state") // // It's not thread safe. type ConnectivityStateEvaluator struct { - numReady uint64 // Number of addrConns in ready state. - numConnecting uint64 // Number of addrConns in connecting state. + numReady uint64 // Number of addrConns in ready state. + numConnecting uint64 // Number of addrConns in connecting state. + numTransientFailure uint64 // Number of addrConns in transient failure state. + numIdle uint64 // Number of addrConns in idle state. } // RecordTransition records state change happening in subConn and based on that @@ -362,9 +387,11 @@ type ConnectivityStateEvaluator struct { // // - If at least one SubConn in Ready, the aggregated state is Ready; // - Else if at least one SubConn in Connecting, the aggregated state is Connecting; -// - Else the aggregated state is TransientFailure. +// - Else if at least one SubConn is TransientFailure, the aggregated state is Transient Failure; +// - Else if at least one SubConn is Idle, the aggregated state is Idle; +// - Else there are no subconns and the aggregated state is Transient Failure // -// Idle and Shutdown are not considered. +// Shutdown is not considered. func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State { // Update counters. for idx, state := range []connectivity.State{oldState, newState} { @@ -374,6 +401,10 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne cse.numReady += updateVal case connectivity.Connecting: cse.numConnecting += updateVal + case connectivity.TransientFailure: + cse.numTransientFailure += updateVal + case connectivity.Idle: + cse.numIdle += updateVal } } @@ -384,5 +415,11 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne if cse.numConnecting > 0 { return connectivity.Connecting } + if cse.numTransientFailure > 0 { + return connectivity.TransientFailure + } + if cse.numIdle > 0 { + return connectivity.Idle + } return connectivity.TransientFailure } diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go index c883efa0bb..a67074a3ad 100644 --- a/vendor/google.golang.org/grpc/balancer/base/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go @@ -22,7 +22,6 @@ import ( "errors" "fmt" - "google.golang.org/grpc/attributes" "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/grpclog" @@ -42,7 +41,7 @@ func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) cc: cc, pickerBuilder: bb.pickerBuilder, - subConns: make(map[resolver.Address]subConnInfo), + subConns: resolver.NewAddressMap(), scStates: make(map[balancer.SubConn]connectivity.State), csEvltr: &balancer.ConnectivityStateEvaluator{}, config: bb.config, @@ -58,11 +57,6 @@ func (bb *baseBuilder) Name() string { return bb.name } -type subConnInfo struct { - subConn balancer.SubConn - attrs *attributes.Attributes -} - type baseBalancer struct { cc balancer.ClientConn pickerBuilder PickerBuilder @@ -70,7 +64,7 @@ type baseBalancer struct { csEvltr *balancer.ConnectivityStateEvaluator state connectivity.State - subConns map[resolver.Address]subConnInfo // `attributes` is stripped from the keys of this map (the addresses) + subConns *resolver.AddressMap scStates map[balancer.SubConn]connectivity.State picker balancer.Picker config Config @@ -81,7 +75,7 @@ type baseBalancer struct { func (b *baseBalancer) ResolverError(err error) { b.resolverErr = err - if len(b.subConns) == 0 { + if b.subConns.Len() == 0 { b.state = connectivity.TransientFailure } @@ -105,52 +99,29 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { // Successful resolution; clear resolver error and ensure we return nil. b.resolverErr = nil // addrsSet is the set converted from addrs, it's used for quick lookup of an address. - addrsSet := make(map[resolver.Address]struct{}) + addrsSet := resolver.NewAddressMap() for _, a := range s.ResolverState.Addresses { - // Strip attributes from addresses before using them as map keys. So - // that when two addresses only differ in attributes pointers (but with - // the same attribute content), they are considered the same address. - // - // Note that this doesn't handle the case where the attribute content is - // different. So if users want to set different attributes to create - // duplicate connections to the same backend, it doesn't work. This is - // fine for now, because duplicate is done by setting Metadata today. - // - // TODO: read attributes to handle duplicate connections. - aNoAttrs := a - aNoAttrs.Attributes = nil - addrsSet[aNoAttrs] = struct{}{} - if scInfo, ok := b.subConns[aNoAttrs]; !ok { + addrsSet.Set(a, nil) + if _, ok := b.subConns.Get(a); !ok { // a is a new address (not existing in b.subConns). - // - // When creating SubConn, the original address with attributes is - // passed through. So that connection configurations in attributes - // (like creds) will be used. sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{HealthCheckEnabled: b.config.HealthCheck}) if err != nil { logger.Warningf("base.baseBalancer: failed to create new SubConn: %v", err) continue } - b.subConns[aNoAttrs] = subConnInfo{subConn: sc, attrs: a.Attributes} + b.subConns.Set(a, sc) b.scStates[sc] = connectivity.Idle + b.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle) sc.Connect() - } else { - // Always update the subconn's address in case the attributes - // changed. - // - // The SubConn does a reflect.DeepEqual of the new and old - // addresses. So this is a noop if the current address is the same - // as the old one (including attributes). - scInfo.attrs = a.Attributes - b.subConns[aNoAttrs] = scInfo - b.cc.UpdateAddresses(scInfo.subConn, []resolver.Address{a}) } } - for a, scInfo := range b.subConns { + for _, a := range b.subConns.Keys() { + sci, _ := b.subConns.Get(a) + sc := sci.(balancer.SubConn) // a was removed by resolver. - if _, ok := addrsSet[a]; !ok { - b.cc.RemoveSubConn(scInfo.subConn) - delete(b.subConns, a) + if _, ok := addrsSet.Get(a); !ok { + b.cc.RemoveSubConn(sc) + b.subConns.Delete(a) // Keep the state of this sc in b.scStates until sc's state becomes Shutdown. // The entry will be deleted in UpdateSubConnState. } @@ -192,10 +163,11 @@ func (b *baseBalancer) regeneratePicker() { readySCs := make(map[balancer.SubConn]SubConnInfo) // Filter out all ready SCs from full subConn map. - for addr, scInfo := range b.subConns { - if st, ok := b.scStates[scInfo.subConn]; ok && st == connectivity.Ready { - addr.Attributes = scInfo.attrs - readySCs[scInfo.subConn] = SubConnInfo{Address: addr} + for _, addr := range b.subConns.Keys() { + sci, _ := b.subConns.Get(addr) + sc := sci.(balancer.SubConn) + if st, ok := b.scStates[sc]; ok && st == connectivity.Ready { + readySCs[sc] = SubConnInfo{Address: addr} } } b.picker = b.pickerBuilder.Build(PickerBuildInfo{ReadySCs: readySCs}) @@ -213,10 +185,14 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su } return } - if oldS == connectivity.TransientFailure && s == connectivity.Connecting { - // Once a subconn enters TRANSIENT_FAILURE, ignore subsequent + if oldS == connectivity.TransientFailure && + (s == connectivity.Connecting || s == connectivity.Idle) { + // Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or // CONNECTING transitions to prevent the aggregated state from being // always CONNECTING when many backends exist but are all down. + if s == connectivity.Idle { + sc.Connect() + } return } b.scStates[sc] = s @@ -242,7 +218,6 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su b.state == connectivity.TransientFailure { b.regeneratePicker() } - b.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker}) } @@ -251,6 +226,11 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su func (b *baseBalancer) Close() { } +// ExitIdle is a nop because the base balancer attempts to stay connected to +// all SubConns at all times. +func (b *baseBalancer) ExitIdle() { +} + // NewErrPicker returns a Picker that always returns err on Pick(). func NewErrPicker(err error) balancer.Picker { return &errPicker{err: err} diff --git a/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go b/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go index a24264a34f..4ecfa1c215 100644 --- a/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go +++ b/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go @@ -39,7 +39,7 @@ type State struct { // Set returns a copy of the provided state with attributes containing s. s's // data should not be mutated after calling Set. func Set(state resolver.State, s *State) resolver.State { - state.Attributes = state.Attributes.WithValues(key, s) + state.Attributes = state.Attributes.WithValue(key, s) return state } diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go index 43c2a15373..274eb2f858 100644 --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go @@ -47,11 +47,11 @@ func init() { type rrPickerBuilder struct{} func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker { - logger.Infof("roundrobinPicker: newPicker called with info: %v", info) + logger.Infof("roundrobinPicker: Build called with info: %v", info) if len(info.ReadySCs) == 0 { return base.NewErrPicker(balancer.ErrNoSubConnAvailable) } - var scs []balancer.SubConn + scs := make([]balancer.SubConn, 0, len(info.ReadySCs)) for sc := range info.ReadySCs { scs = append(scs, sc) } diff --git a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go index dd83979639..f4ea617468 100644 --- a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +++ b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go @@ -37,15 +37,20 @@ type scStateUpdate struct { err error } +// exitIdle contains no data and is just a signal sent on the updateCh in +// ccBalancerWrapper to instruct the balancer to exit idle. +type exitIdle struct{} + // ccBalancerWrapper is a wrapper on top of cc for balancers. // It implements balancer.ClientConn interface. type ccBalancerWrapper struct { - cc *ClientConn - balancerMu sync.Mutex // synchronizes calls to the balancer - balancer balancer.Balancer - updateCh *buffer.Unbounded - closed *grpcsync.Event - done *grpcsync.Event + cc *ClientConn + balancerMu sync.Mutex // synchronizes calls to the balancer + balancer balancer.Balancer + hasExitIdle bool + updateCh *buffer.Unbounded + closed *grpcsync.Event + done *grpcsync.Event mu sync.Mutex subConns map[*acBalancerWrapper]struct{} @@ -61,6 +66,7 @@ func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.Bui } go ccb.watcher() ccb.balancer = b.Build(ccb, bopts) + _, ccb.hasExitIdle = ccb.balancer.(balancer.ExitIdler) return ccb } @@ -86,6 +92,17 @@ func (ccb *ccBalancerWrapper) watcher() { ccb.cc.removeAddrConn(u.getAddrConn(), errConnDrain) } ccb.mu.Unlock() + case exitIdle: + if ccb.cc.GetState() == connectivity.Idle { + if ei, ok := ccb.balancer.(balancer.ExitIdler); ok { + // We already checked that the balancer implements + // ExitIdle before pushing the event to updateCh, but + // check conditionally again as defensive programming. + ccb.balancerMu.Lock() + ei.ExitIdle() + ccb.balancerMu.Unlock() + } + } default: logger.Errorf("ccBalancerWrapper.watcher: unknown update %+v, type %T", t, t) } @@ -118,6 +135,14 @@ func (ccb *ccBalancerWrapper) close() { <-ccb.done.Done() } +func (ccb *ccBalancerWrapper) exitIdle() bool { + if !ccb.hasExitIdle { + return false + } + ccb.updateCh.Put(exitIdle{}) + return true +} + func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) { // When updating addresses for a SubConn, if the address in use is not in // the new addresses, the old ac will be tearDown() and a new ac will be @@ -144,8 +169,8 @@ func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnStat func (ccb *ccBalancerWrapper) resolverError(err error) { ccb.balancerMu.Lock() + defer ccb.balancerMu.Unlock() ccb.balancer.ResolverError(err) - ccb.balancerMu.Unlock() } func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { @@ -239,17 +264,17 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { return } - ac, err := cc.newAddrConn(addrs, opts) + newAC, err := cc.newAddrConn(addrs, opts) if err != nil { channelz.Warningf(logger, acbw.ac.channelzID, "acBalancerWrapper: UpdateAddresses: failed to newAddrConn: %v", err) return } - acbw.ac = ac - ac.mu.Lock() - ac.acbw = acbw - ac.mu.Unlock() + acbw.ac = newAC + newAC.mu.Lock() + newAC.acbw = acbw + newAC.mu.Unlock() if acState != connectivity.Idle { - ac.connect() + go newAC.connect() } } } @@ -257,7 +282,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { func (acbw *acBalancerWrapper) Connect() { acbw.mu.Lock() defer acbw.mu.Unlock() - acbw.ac.connect() + go acbw.ac.connect() } func (acbw *acBalancerWrapper) getAddrConn() *addrConn { diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index b2bccfed13..28f09dc870 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -23,6 +23,7 @@ import ( "errors" "fmt" "math" + "net/url" "reflect" "strings" "sync" @@ -37,7 +38,6 @@ import ( "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/internal/grpcsync" - "google.golang.org/grpc/internal/grpcutil" iresolver "google.golang.org/grpc/internal/resolver" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" @@ -83,13 +83,13 @@ var ( // errTransportCredsAndBundle indicates that creds bundle is used together // with other individual Transport Credentials. errTransportCredsAndBundle = errors.New("grpc: credentials.Bundle may not be used with individual TransportCredentials") - // errTransportCredentialsMissing indicates that users want to transmit security - // information (e.g., OAuth2 token) which requires secure connection on an insecure - // connection. + // errNoTransportCredsInBundle indicated that the configured creds bundle + // returned a transport credentials which was nil. + errNoTransportCredsInBundle = errors.New("grpc: credentials.Bundle must return non-nil transport credentials") + // errTransportCredentialsMissing indicates that users want to transmit + // security information (e.g., OAuth2 token) which requires secure + // connection on an insecure connection. errTransportCredentialsMissing = errors.New("grpc: the credentials require transport level security (use grpc.WithTransportCredentials() to set)") - // errCredentialsConflict indicates that grpc.WithTransportCredentials() - // and grpc.WithInsecure() are both called for a connection. - errCredentialsConflict = errors.New("grpc: transport credentials are set for an insecure connection (grpc.WithTransportCredentials() and grpc.WithInsecure() are both called)") ) const ( @@ -177,17 +177,20 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * cc.csMgr.channelzID = cc.channelzID } - if !cc.dopts.insecure { - if cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil { - return nil, errNoTransportSecurity - } - if cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil { - return nil, errTransportCredsAndBundle - } - } else { - if cc.dopts.copts.TransportCredentials != nil || cc.dopts.copts.CredsBundle != nil { - return nil, errCredentialsConflict - } + if cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil { + return nil, errNoTransportSecurity + } + if cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil { + return nil, errTransportCredsAndBundle + } + if cc.dopts.copts.CredsBundle != nil && cc.dopts.copts.CredsBundle.TransportCredentials() == nil { + return nil, errNoTransportCredsInBundle + } + transportCreds := cc.dopts.copts.TransportCredentials + if transportCreds == nil { + transportCreds = cc.dopts.copts.CredsBundle.TransportCredentials() + } + if transportCreds.Info().SecurityProtocol == "insecure" { for _, cd := range cc.dopts.copts.PerRPCCredentials { if cd.RequireTransportSecurity() { return nil, errTransportCredentialsMissing @@ -248,38 +251,15 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * } // Determine the resolver to use. - cc.parsedTarget = grpcutil.ParseTarget(cc.target, cc.dopts.copts.Dialer != nil) - channelz.Infof(logger, cc.channelzID, "parsed scheme: %q", cc.parsedTarget.Scheme) - resolverBuilder := cc.getResolver(cc.parsedTarget.Scheme) - if resolverBuilder == nil { - // If resolver builder is still nil, the parsed target's scheme is - // not registered. Fallback to default resolver and set Endpoint to - // the original target. - channelz.Infof(logger, cc.channelzID, "scheme %q not registered, fallback to default scheme", cc.parsedTarget.Scheme) - cc.parsedTarget = resolver.Target{ - Scheme: resolver.GetDefaultScheme(), - Endpoint: target, - } - resolverBuilder = cc.getResolver(cc.parsedTarget.Scheme) - if resolverBuilder == nil { - return nil, fmt.Errorf("could not get resolver for default scheme: %q", cc.parsedTarget.Scheme) - } + resolverBuilder, err := cc.parseTargetAndFindResolver() + if err != nil { + return nil, err } - - creds := cc.dopts.copts.TransportCredentials - if creds != nil && creds.Info().ServerName != "" { - cc.authority = creds.Info().ServerName - } else if cc.dopts.insecure && cc.dopts.authority != "" { - cc.authority = cc.dopts.authority - } else if strings.HasPrefix(cc.target, "unix:") || strings.HasPrefix(cc.target, "unix-abstract:") { - cc.authority = "localhost" - } else if strings.HasPrefix(cc.parsedTarget.Endpoint, ":") { - cc.authority = "localhost" + cc.parsedTarget.Endpoint - } else { - // Use endpoint from "scheme://authority/endpoint" as the default - // authority for ClientConn. - cc.authority = cc.parsedTarget.Endpoint + cc.authority, err = determineAuthority(cc.parsedTarget.Endpoint, cc.target, cc.dopts) + if err != nil { + return nil, err } + channelz.Infof(logger, cc.channelzID, "Channel authority set to %q", cc.authority) if cc.dopts.scChan != nil && !scSet { // Blocking wait for the initial service config. @@ -305,6 +285,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * DialCreds: credsClone, CredsBundle: cc.dopts.copts.CredsBundle, Dialer: cc.dopts.copts.Dialer, + Authority: cc.authority, CustomUserAgent: cc.dopts.copts.UserAgent, ChannelzParentID: cc.channelzID, Target: cc.parsedTarget, @@ -322,6 +303,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * // A blocking dial blocks until the clientConn is ready. if cc.dopts.block { for { + cc.Connect() s := cc.GetState() if s == connectivity.Ready { break @@ -539,12 +521,31 @@ func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connec // // Experimental // -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Notice: This API is EXPERIMENTAL and may be changed or removed in a later +// release. func (cc *ClientConn) GetState() connectivity.State { return cc.csMgr.getState() } +// Connect causes all subchannels in the ClientConn to attempt to connect if +// the channel is idle. Does not wait for the connection attempts to begin +// before returning. +// +// Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a later +// release. +func (cc *ClientConn) Connect() { + cc.mu.Lock() + defer cc.mu.Unlock() + if cc.balancerWrapper != nil && cc.balancerWrapper.exitIdle() { + return + } + for ac := range cc.conns { + go ac.connect() + } +} + func (cc *ClientConn) scWatcher() { for { select { @@ -632,7 +633,10 @@ func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { } var ret error - if cc.dopts.disableServiceConfig || s.ServiceConfig == nil { + if cc.dopts.disableServiceConfig { + channelz.Infof(logger, cc.channelzID, "ignoring service config from resolver (%v) and applying the default because service config is disabled", s.ServiceConfig) + cc.maybeApplyDefaultServiceConfig(s.Addresses) + } else if s.ServiceConfig == nil { cc.maybeApplyDefaultServiceConfig(s.Addresses) // TODO: do we need to apply a failing LB policy if there is no // default, per the error handling design? @@ -845,8 +849,7 @@ func (ac *addrConn) connect() error { ac.updateConnectivityState(connectivity.Connecting, nil) ac.mu.Unlock() - // Start a goroutine connecting to the server asynchronously. - go ac.resetTransport() + ac.resetTransport() return nil } @@ -883,6 +886,7 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { // ac.state is Ready, try to find the connected address. var curAddrFound bool for _, a := range addrs { + a.ServerName = ac.cc.getServerName(a) if reflect.DeepEqual(ac.curAddr, a) { curAddrFound = true break @@ -896,6 +900,26 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { return curAddrFound } +// getServerName determines the serverName to be used in the connection +// handshake. The default value for the serverName is the authority on the +// ClientConn, which either comes from the user's dial target or through an +// authority override specified using the WithAuthority dial option. Name +// resolvers can specify a per-address override for the serverName through the +// resolver.Address.ServerName field which is used only if the WithAuthority +// dial option was not used. The rationale is that per-address authority +// overrides specified by the name resolver can represent a security risk, while +// an override specified by the user is more dependable since they probably know +// what they are doing. +func (cc *ClientConn) getServerName(addr resolver.Address) string { + if cc.dopts.authority != "" { + return cc.dopts.authority + } + if addr.ServerName != "" { + return addr.ServerName + } + return cc.authority +} + func getMethodConfig(sc *ServiceConfig, method string) MethodConfig { if sc == nil { return MethodConfig{} @@ -1135,112 +1159,86 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) { } func (ac *addrConn) resetTransport() { - for i := 0; ; i++ { - if i > 0 { - ac.cc.resolveNow(resolver.ResolveNowOptions{}) - } + ac.mu.Lock() + if ac.state == connectivity.Shutdown { + ac.mu.Unlock() + return + } + + addrs := ac.addrs + backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) + // This will be the duration that dial gets to finish. + dialDuration := minConnectTimeout + if ac.dopts.minConnectTimeout != nil { + dialDuration = ac.dopts.minConnectTimeout() + } + + if dialDuration < backoffFor { + // Give dial more time as we keep failing to connect. + dialDuration = backoffFor + } + // We can potentially spend all the time trying the first address, and + // if the server accepts the connection and then hangs, the following + // addresses will never be tried. + // + // The spec doesn't mention what should be done for multiple addresses. + // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm + connectDeadline := time.Now().Add(dialDuration) + ac.updateConnectivityState(connectivity.Connecting, nil) + ac.mu.Unlock() + + if err := ac.tryAllAddrs(addrs, connectDeadline); err != nil { + ac.cc.resolveNow(resolver.ResolveNowOptions{}) + // After exhausting all addresses, the addrConn enters + // TRANSIENT_FAILURE. ac.mu.Lock() if ac.state == connectivity.Shutdown { ac.mu.Unlock() return } + ac.updateConnectivityState(connectivity.TransientFailure, err) - addrs := ac.addrs - backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) - // This will be the duration that dial gets to finish. - dialDuration := minConnectTimeout - if ac.dopts.minConnectTimeout != nil { - dialDuration = ac.dopts.minConnectTimeout() - } - - if dialDuration < backoffFor { - // Give dial more time as we keep failing to connect. - dialDuration = backoffFor - } - // We can potentially spend all the time trying the first address, and - // if the server accepts the connection and then hangs, the following - // addresses will never be tried. - // - // The spec doesn't mention what should be done for multiple addresses. - // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm - connectDeadline := time.Now().Add(dialDuration) - - ac.updateConnectivityState(connectivity.Connecting, nil) - ac.transport = nil + // Backoff. + b := ac.resetBackoff ac.mu.Unlock() - newTr, addr, reconnect, err := ac.tryAllAddrs(addrs, connectDeadline) - if err != nil { - // After exhausting all addresses, the addrConn enters - // TRANSIENT_FAILURE. + timer := time.NewTimer(backoffFor) + select { + case <-timer.C: ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - return - } - ac.updateConnectivityState(connectivity.TransientFailure, err) - - // Backoff. - b := ac.resetBackoff + ac.backoffIdx++ ac.mu.Unlock() - - timer := time.NewTimer(backoffFor) - select { - case <-timer.C: - ac.mu.Lock() - ac.backoffIdx++ - ac.mu.Unlock() - case <-b: - timer.Stop() - case <-ac.ctx.Done(): - timer.Stop() - return - } - continue + case <-b: + timer.Stop() + case <-ac.ctx.Done(): + timer.Stop() + return } ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - newTr.Close(fmt.Errorf("reached connectivity state: SHUTDOWN")) - return + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, err) } - ac.curAddr = addr - ac.transport = newTr - ac.backoffIdx = 0 - - hctx, hcancel := context.WithCancel(ac.ctx) - ac.startHealthCheck(hctx) ac.mu.Unlock() - - // Block until the created transport is down. And when this happens, - // we restart from the top of the addr list. - <-reconnect.Done() - hcancel() - // restart connecting - the top of the loop will set state to - // CONNECTING. This is against the current connectivity semantics doc, - // however it allows for graceful behavior for RPCs not yet dispatched - // - unfortunate timing would otherwise lead to the RPC failing even - // though the TRANSIENT_FAILURE state (called for by the doc) would be - // instantaneous. - // - // Ideally we should transition to Idle here and block until there is - // RPC activity that leads to the balancer requesting a reconnect of - // the associated SubConn. + return } + // Success; reset backoff. + ac.mu.Lock() + ac.backoffIdx = 0 + ac.mu.Unlock() } -// tryAllAddrs tries to creates a connection to the addresses, and stop when at the -// first successful one. It returns the transport, the address and a Event in -// the successful case. The Event fires when the returned transport disconnects. -func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) (transport.ClientTransport, resolver.Address, *grpcsync.Event, error) { +// tryAllAddrs tries to creates a connection to the addresses, and stop when at +// the first successful one. It returns an error if no address was successfully +// connected, or updates ac appropriately with the new transport. +func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) error { var firstConnErr error for _, addr := range addrs { ac.mu.Lock() if ac.state == connectivity.Shutdown { ac.mu.Unlock() - return nil, resolver.Address{}, nil, errConnClosing + return errConnClosing } ac.cc.mu.RLock() @@ -1255,9 +1253,9 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T channelz.Infof(logger, ac.channelzID, "Subchannel picks a new address %q to connect", addr.Addr) - newTr, reconnect, err := ac.createTransport(addr, copts, connectDeadline) + err := ac.createTransport(addr, copts, connectDeadline) if err == nil { - return newTr, addr, reconnect, nil + return nil } if firstConnErr == nil { firstConnErr = err @@ -1266,57 +1264,50 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T } // Couldn't connect to any address. - return nil, resolver.Address{}, nil, firstConnErr + return firstConnErr } -// createTransport creates a connection to addr. It returns the transport and a -// Event in the successful case. The Event fires when the returned transport -// disconnects. -func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) (transport.ClientTransport, *grpcsync.Event, error) { - prefaceReceived := make(chan struct{}) - onCloseCalled := make(chan struct{}) - reconnect := grpcsync.NewEvent() +// createTransport creates a connection to addr. It returns an error if the +// address was not successfully connected, or updates ac appropriately with the +// new transport. +func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error { + // TODO: Delete prefaceReceived and move the logic to wait for it into the + // transport. + prefaceReceived := grpcsync.NewEvent() + connClosed := grpcsync.NewEvent() - // addr.ServerName takes precedent over ClientConn authority, if present. - if addr.ServerName == "" { - addr.ServerName = ac.cc.authority - } + addr.ServerName = ac.cc.getServerName(addr) + hctx, hcancel := context.WithCancel(ac.ctx) + hcStarted := false // protected by ac.mu - once := sync.Once{} - onGoAway := func(r transport.GoAwayReason) { + onClose := func() { ac.mu.Lock() - ac.adjustParams(r) - once.Do(func() { - if ac.state == connectivity.Ready { - // Prevent this SubConn from being used for new RPCs by setting its - // state to Connecting. - // - // TODO: this should be Idle when grpc-go properly supports it. - ac.updateConnectivityState(connectivity.Connecting, nil) - } - }) - ac.mu.Unlock() - reconnect.Fire() + defer ac.mu.Unlock() + defer connClosed.Fire() + if !hcStarted || hctx.Err() != nil { + // We didn't start the health check or set the state to READY, so + // no need to do anything else here. + // + // OR, we have already cancelled the health check context, meaning + // we have already called onClose once for this transport. In this + // case it would be dangerous to clear the transport and update the + // state, since there may be a new transport in this addrConn. + return + } + hcancel() + ac.transport = nil + // Refresh the name resolver + ac.cc.resolveNow(resolver.ResolveNowOptions{}) + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, nil) + } } - onClose := func() { + onGoAway := func(r transport.GoAwayReason) { ac.mu.Lock() - once.Do(func() { - if ac.state == connectivity.Ready { - // Prevent this SubConn from being used for new RPCs by setting its - // state to Connecting. - // - // TODO: this should be Idle when grpc-go properly supports it. - ac.updateConnectivityState(connectivity.Connecting, nil) - } - }) + ac.adjustParams(r) ac.mu.Unlock() - close(onCloseCalled) - reconnect.Fire() - } - - onPrefaceReceipt := func() { - close(prefaceReceived) + onClose() } connectCtx, cancel := context.WithDeadline(ac.ctx, connectDeadline) @@ -1325,27 +1316,67 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne copts.ChannelzParentID = ac.channelzID } - newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onPrefaceReceipt, onGoAway, onClose) + newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, func() { prefaceReceived.Fire() }, onGoAway, onClose) if err != nil { // newTr is either nil, or closed. - channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v. Reconnecting...", addr, err) - return nil, nil, err + channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v", addr, err) + return err } select { - case <-time.After(time.Until(connectDeadline)): + case <-connectCtx.Done(): // We didn't get the preface in time. - newTr.Close(fmt.Errorf("failed to receive server preface within timeout")) - channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) - return nil, nil, errors.New("timed out waiting for server handshake") - case <-prefaceReceived: + // The error we pass to Close() is immaterial since there are no open + // streams at this point, so no trailers with error details will be sent + // out. We just need to pass a non-nil error. + newTr.Close(transport.ErrConnClosing) + if connectCtx.Err() == context.DeadlineExceeded { + err := errors.New("failed to receive server preface within timeout") + channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: %v", addr, err) + return err + } + return nil + case <-prefaceReceived.Done(): // We got the preface - huzzah! things are good. - case <-onCloseCalled: - // The transport has already closed - noop. - return nil, nil, errors.New("connection closed") - // TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. + ac.mu.Lock() + defer ac.mu.Unlock() + if connClosed.HasFired() { + // onClose called first; go idle but do nothing else. + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, nil) + } + return nil + } + if ac.state == connectivity.Shutdown { + // This can happen if the subConn was removed while in `Connecting` + // state. tearDown() would have set the state to `Shutdown`, but + // would not have closed the transport since ac.transport would not + // been set at that point. + // + // We run this in a goroutine because newTr.Close() calls onClose() + // inline, which requires locking ac.mu. + // + // The error we pass to Close() is immaterial since there are no open + // streams at this point, so no trailers with error details will be sent + // out. We just need to pass a non-nil error. + go newTr.Close(transport.ErrConnClosing) + return nil + } + ac.curAddr = addr + ac.transport = newTr + hcStarted = true + ac.startHealthCheck(hctx) // Will set state to READY if appropriate. + return nil + case <-connClosed.Done(): + // The transport has already closed. If we received the preface, too, + // this is not an error. + select { + case <-prefaceReceived.Done(): + return nil + default: + return errors.New("connection closed before server preface received") + } } - return newTr, reconnect, nil } // startHealthCheck starts the health checking stream (RPC) to watch the health @@ -1587,3 +1618,114 @@ func (cc *ClientConn) connectionError() error { defer cc.lceMu.Unlock() return cc.lastConnectionError } + +func (cc *ClientConn) parseTargetAndFindResolver() (resolver.Builder, error) { + channelz.Infof(logger, cc.channelzID, "original dial target is: %q", cc.target) + + var rb resolver.Builder + parsedTarget, err := parseTarget(cc.target) + if err != nil { + channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", cc.target, err) + } else { + channelz.Infof(logger, cc.channelzID, "parsed dial target is: %+v", parsedTarget) + rb = cc.getResolver(parsedTarget.Scheme) + if rb != nil { + cc.parsedTarget = parsedTarget + return rb, nil + } + } + + // We are here because the user's dial target did not contain a scheme or + // specified an unregistered scheme. We should fallback to the default + // scheme, except when a custom dialer is specified in which case, we should + // always use passthrough scheme. + defScheme := resolver.GetDefaultScheme() + channelz.Infof(logger, cc.channelzID, "fallback to scheme %q", defScheme) + canonicalTarget := defScheme + ":///" + cc.target + + parsedTarget, err = parseTarget(canonicalTarget) + if err != nil { + channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", canonicalTarget, err) + return nil, err + } + channelz.Infof(logger, cc.channelzID, "parsed dial target is: %+v", parsedTarget) + rb = cc.getResolver(parsedTarget.Scheme) + if rb == nil { + return nil, fmt.Errorf("could not get resolver for default scheme: %q", parsedTarget.Scheme) + } + cc.parsedTarget = parsedTarget + return rb, nil +} + +// parseTarget uses RFC 3986 semantics to parse the given target into a +// resolver.Target struct containing scheme, authority and endpoint. Query +// params are stripped from the endpoint. +func parseTarget(target string) (resolver.Target, error) { + u, err := url.Parse(target) + if err != nil { + return resolver.Target{}, err + } + // For targets of the form "[scheme]://[authority]/endpoint, the endpoint + // value returned from url.Parse() contains a leading "/". Although this is + // in accordance with RFC 3986, we do not want to break existing resolver + // implementations which expect the endpoint without the leading "/". So, we + // end up stripping the leading "/" here. But this will result in an + // incorrect parsing for something like "unix:///path/to/socket". Since we + // own the "unix" resolver, we can workaround in the unix resolver by using + // the `URL` field instead of the `Endpoint` field. + endpoint := u.Path + if endpoint == "" { + endpoint = u.Opaque + } + endpoint = strings.TrimPrefix(endpoint, "/") + return resolver.Target{ + Scheme: u.Scheme, + Authority: u.Host, + Endpoint: endpoint, + URL: *u, + }, nil +} + +// Determine channel authority. The order of precedence is as follows: +// - user specified authority override using `WithAuthority` dial option +// - creds' notion of server name for the authentication handshake +// - endpoint from dial target of the form "scheme://[authority]/endpoint" +func determineAuthority(endpoint, target string, dopts dialOptions) (string, error) { + // Historically, we had two options for users to specify the serverName or + // authority for a channel. One was through the transport credentials + // (either in its constructor, or through the OverrideServerName() method). + // The other option (for cases where WithInsecure() dial option was used) + // was to use the WithAuthority() dial option. + // + // A few things have changed since: + // - `insecure` package with an implementation of the `TransportCredentials` + // interface for the insecure case + // - WithAuthority() dial option support for secure credentials + authorityFromCreds := "" + if creds := dopts.copts.TransportCredentials; creds != nil && creds.Info().ServerName != "" { + authorityFromCreds = creds.Info().ServerName + } + authorityFromDialOption := dopts.authority + if (authorityFromCreds != "" && authorityFromDialOption != "") && authorityFromCreds != authorityFromDialOption { + return "", fmt.Errorf("ClientConn's authority from transport creds %q and dial option %q don't match", authorityFromCreds, authorityFromDialOption) + } + + switch { + case authorityFromDialOption != "": + return authorityFromDialOption, nil + case authorityFromCreds != "": + return authorityFromCreds, nil + case strings.HasPrefix(target, "unix:") || strings.HasPrefix(target, "unix-abstract:"): + // TODO: remove when the unix resolver implements optional interface to + // return channel authority. + return "localhost", nil + case strings.HasPrefix(endpoint, ":"): + return "localhost" + endpoint, nil + default: + // TODO: Define an optional interface on the resolver builder to return + // the channel authority given the user's dial target. For resolvers + // which don't implement this interface, we will use the endpoint from + // "scheme://authority/endpoint" as the default authority. + return endpoint, nil + } +} diff --git a/vendor/google.golang.org/grpc/connectivity/connectivity.go b/vendor/google.golang.org/grpc/connectivity/connectivity.go index 0101562615..4a89926422 100644 --- a/vendor/google.golang.org/grpc/connectivity/connectivity.go +++ b/vendor/google.golang.org/grpc/connectivity/connectivity.go @@ -18,7 +18,6 @@ // Package connectivity defines connectivity semantics. // For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md. -// All APIs in this package are experimental. package connectivity import ( @@ -45,7 +44,7 @@ func (s State) String() string { return "SHUTDOWN" default: logger.Errorf("unknown connectivity state: %d", s) - return "Invalid-State" + return "INVALID_STATE" } } @@ -61,3 +60,35 @@ const ( // Shutdown indicates the ClientConn has started shutting down. Shutdown ) + +// ServingMode indicates the current mode of operation of the server. +// +// Only xDS enabled gRPC servers currently report their serving mode. +type ServingMode int + +const ( + // ServingModeStarting indicates that the server is starting up. + ServingModeStarting ServingMode = iota + // ServingModeServing indicates that the server contains all required + // configuration and is serving RPCs. + ServingModeServing + // ServingModeNotServing indicates that the server is not accepting new + // connections. Existing connections will be closed gracefully, allowing + // in-progress RPCs to complete. A server enters this mode when it does not + // contain the required configuration to serve RPCs. + ServingModeNotServing +) + +func (s ServingMode) String() string { + switch s { + case ServingModeStarting: + return "STARTING" + case ServingModeServing: + return "SERVING" + case ServingModeNotServing: + return "NOT_SERVING" + default: + logger.Errorf("unknown serving mode: %d", s) + return "INVALID_MODE" + } +} diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go index 7eee7e4ec1..96ff1877e7 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/credentials/credentials.go @@ -140,6 +140,11 @@ type TransportCredentials interface { // Additionally, ClientHandshakeInfo data will be available via the context // passed to this call. // + // The second argument to this method is the `:authority` header value used + // while creating new streams on this connection after authentication + // succeeds. Implementations must use this as the server name during the + // authentication handshake. + // // If the returned net.Conn is closed, it MUST close the net.Conn provided. ClientHandshake(context.Context, string, net.Conn) (net.Conn, AuthInfo, error) // ServerHandshake does the authentication handshake for servers. It returns @@ -153,9 +158,13 @@ type TransportCredentials interface { Info() ProtocolInfo // Clone makes a copy of this TransportCredentials. Clone() TransportCredentials - // OverrideServerName overrides the server name used to verify the hostname on the returned certificates from the server. - // gRPC internals also use it to override the virtual hosting name if it is set. - // It must be called before dialing. Currently, this is only used by grpclb. + // OverrideServerName specifies the value used for the following: + // - verifying the hostname on the returned certificates + // - as SNI in the client's handshake to support virtual hosting + // - as the value for `:authority` header at stream creation time + // + // Deprecated: use grpc.WithAuthority instead. Will be supported + // throughout 1.x. OverrideServerName(string) error } @@ -169,8 +178,18 @@ type TransportCredentials interface { // // This API is experimental. type Bundle interface { + // TransportCredentials returns the transport credentials from the Bundle. + // + // Implementations must return non-nil transport credentials. If transport + // security is not needed by the Bundle, implementations may choose to + // return insecure.NewCredentials(). TransportCredentials() TransportCredentials + + // PerRPCCredentials returns the per-RPC credentials from the Bundle. + // + // May be nil if per-RPC credentials are not needed. PerRPCCredentials() PerRPCCredentials + // NewWithMode should make a copy of Bundle, and switch mode. Modifying the // existing Bundle may cause races. // diff --git a/vendor/google.golang.org/grpc/credentials/go12.go b/vendor/google.golang.org/grpc/credentials/go12.go deleted file mode 100644 index ccbf35b331..0000000000 --- a/vendor/google.golang.org/grpc/credentials/go12.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build go1.12 - -/* - * - * Copyright 2019 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import "crypto/tls" - -// This init function adds cipher suite constants only defined in Go 1.12. -func init() { - cipherSuiteLookup[tls.TLS_AES_128_GCM_SHA256] = "TLS_AES_128_GCM_SHA256" - cipherSuiteLookup[tls.TLS_AES_256_GCM_SHA384] = "TLS_AES_256_GCM_SHA384" - cipherSuiteLookup[tls.TLS_CHACHA20_POLY1305_SHA256] = "TLS_CHACHA20_POLY1305_SHA256" -} diff --git a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go new file mode 100644 index 0000000000..22a8f996a6 --- /dev/null +++ b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go @@ -0,0 +1,77 @@ +/* + * + * Copyright 2020 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package insecure provides an implementation of the +// credentials.TransportCredentials interface which disables transport security. +// +// Experimental +// +// Notice: This package is EXPERIMENTAL and may be changed or removed in a +// later release. +package insecure + +import ( + "context" + "net" + + "google.golang.org/grpc/credentials" +) + +// NewCredentials returns a credentials which disables transport security. +// +// Note that using this credentials with per-RPC credentials which require +// transport security is incompatible and will cause grpc.Dial() to fail. +func NewCredentials() credentials.TransportCredentials { + return insecureTC{} +} + +// insecureTC implements the insecure transport credentials. The handshake +// methods simply return the passed in net.Conn and set the security level to +// NoSecurity. +type insecureTC struct{} + +func (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { + return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil +} + +func (insecureTC) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) { + return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil +} + +func (insecureTC) Info() credentials.ProtocolInfo { + return credentials.ProtocolInfo{SecurityProtocol: "insecure"} +} + +func (insecureTC) Clone() credentials.TransportCredentials { + return insecureTC{} +} + +func (insecureTC) OverrideServerName(string) error { + return nil +} + +// info contains the auth information for an insecure connection. +// It implements the AuthInfo interface. +type info struct { + credentials.CommonAuthInfo +} + +// AuthType returns the type of info as a string. +func (info) AuthType() string { + return "insecure" +} diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go index 8ee7124f22..784822d056 100644 --- a/vendor/google.golang.org/grpc/credentials/tls.go +++ b/vendor/google.golang.org/grpc/credentials/tls.go @@ -230,4 +230,7 @@ var cipherSuiteLookup = map[uint16]string{ tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", + tls.TLS_AES_128_GCM_SHA256: "TLS_AES_128_GCM_SHA256", + tls.TLS_AES_256_GCM_SHA384: "TLS_AES_256_GCM_SHA384", + tls.TLS_CHACHA20_POLY1305_SHA256: "TLS_CHACHA20_POLY1305_SHA256", } diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go index 7a497237bb..063f1e903c 100644 --- a/vendor/google.golang.org/grpc/dialoptions.go +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -27,9 +27,9 @@ import ( "google.golang.org/grpc/backoff" "google.golang.org/grpc/balancer" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/internal" internalbackoff "google.golang.org/grpc/internal/backoff" - "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/resolver" @@ -50,7 +50,6 @@ type dialOptions struct { bs internalbackoff.Strategy block bool returnLastError bool - insecure bool timeout time.Duration scChan <-chan ServiceConfig authority string @@ -228,18 +227,14 @@ func WithServiceConfig(c <-chan ServiceConfig) DialOption { }) } -// WithConnectParams configures the dialer to use the provided ConnectParams. +// WithConnectParams configures the ClientConn to use the provided ConnectParams +// for creating and maintaining connections to servers. // // The backoff configuration specified as part of the ConnectParams overrides // all defaults specified in // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. Consider // using the backoff.DefaultConfig as a base, in cases where you want to // override only a subset of the backoff configuration. -// -// Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. func WithConnectParams(p ConnectParams) DialOption { return newFuncDialOption(func(o *dialOptions) { o.bs = internalbackoff.Exponential{Config: p.Backoff} @@ -303,11 +298,17 @@ func WithReturnConnectionError() DialOption { } // WithInsecure returns a DialOption which disables transport security for this -// ClientConn. Note that transport security is required unless WithInsecure is -// set. +// ClientConn. Under the hood, it uses insecure.NewCredentials(). +// +// Note that using this DialOption with per-RPC credentials (through +// WithCredentialsBundle or WithPerRPCCredentials) which require transport +// security is incompatible and will cause grpc.Dial() to fail. +// +// Deprecated: use insecure.NewCredentials() instead. +// Will be supported throughout 1.x. func WithInsecure() DialOption { return newFuncDialOption(func(o *dialOptions) { - o.insecure = true + o.copts.TransportCredentials = insecure.NewCredentials() }) } @@ -482,8 +483,7 @@ func WithChainStreamInterceptor(interceptors ...StreamClientInterceptor) DialOpt } // WithAuthority returns a DialOption that specifies the value to be used as the -// :authority pseudo-header. This value only works with WithInsecure and has no -// effect if TransportCredentials are present. +// :authority pseudo-header and as the server name in authentication handshake. func WithAuthority(a string) DialOption { return newFuncDialOption(func(o *dialOptions) { o.authority = a @@ -519,14 +519,16 @@ func WithDisableServiceConfig() DialOption { // WithDefaultServiceConfig returns a DialOption that configures the default // service config, which will be used in cases where: // -// 1. WithDisableServiceConfig is also used. -// 2. Resolver does not return a service config or if the resolver returns an -// invalid service config. +// 1. WithDisableServiceConfig is also used, or // -// Experimental +// 2. The name resolver does not provide a service config or provides an +// invalid service config. // -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// The parameter s is the JSON representation of the default service config. +// For more information about service configs, see: +// https://github.com/grpc/grpc/blob/master/doc/service_config.md +// For a simple example of usage, see: +// examples/features/load_balancing/client/main.go func WithDefaultServiceConfig(s string) DialOption { return newFuncDialOption(func(o *dialOptions) { o.defaultServiceConfigRawJSON = &s @@ -538,14 +540,8 @@ func WithDefaultServiceConfig(s string) DialOption { // will happen automatically if no data is written to the wire or if the RPC is // unprocessed by the remote server. // -// Retry support is currently disabled by default, but will be enabled by -// default in the future. Until then, it may be enabled by setting the -// environment variable "GRPC_GO_RETRY" to "on". -// -// Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Retry support is currently enabled by default, but may be disabled by +// setting the environment variable "GRPC_GO_RETRY" to "off". func WithDisableRetry() DialOption { return newFuncDialOption(func(o *dialOptions) { o.disableRetry = true @@ -585,7 +581,6 @@ func withHealthCheckFunc(f internal.HealthChecker) DialOption { func defaultDialOptions() dialOptions { return dialOptions{ - disableRetry: !envconfig.Retry, healthCheckFunc: internal.HealthCheckFunc, copts: transport.ConnectOptions{ WriteBufferSize: defaultWriteBufSize, diff --git a/vendor/google.golang.org/grpc/go.mod b/vendor/google.golang.org/grpc/go.mod index 2f2cf1eb76..fcffdceef2 100644 --- a/vendor/google.golang.org/grpc/go.mod +++ b/vendor/google.golang.org/grpc/go.mod @@ -1,11 +1,12 @@ module google.golang.org/grpc -go 1.11 +go 1.14 require ( - github.com/cespare/xxhash v1.1.0 - github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 - github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 + github.com/cespare/xxhash/v2 v2.1.1 + github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 + github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 + github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.0 diff --git a/vendor/google.golang.org/grpc/go.sum b/vendor/google.golang.org/grpc/go.sum index 372b4ea3d2..8b542e0beb 100644 --- a/vendor/google.golang.org/grpc/go.sum +++ b/vendor/google.golang.org/grpc/go.sum @@ -2,27 +2,28 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 h1:zH8ljVhhq7yC0MIeUL/IviMtY8hx2mK8cN9wEYb8ggw= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 h1:dulLQAYQFYtG5MTplgNGHWuV2D+OBD+Z8lmDBmbLg+s= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -54,11 +55,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -122,7 +122,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/google.golang.org/grpc/grpclog/loggerv2.go b/vendor/google.golang.org/grpc/grpclog/loggerv2.go index 4ee33171e0..34098bb8eb 100644 --- a/vendor/google.golang.org/grpc/grpclog/loggerv2.go +++ b/vendor/google.golang.org/grpc/grpclog/loggerv2.go @@ -19,11 +19,14 @@ package grpclog import ( + "encoding/json" + "fmt" "io" "io/ioutil" "log" "os" "strconv" + "strings" "google.golang.org/grpc/internal/grpclog" ) @@ -95,8 +98,9 @@ var severityName = []string{ // loggerT is the default logger used by grpclog. type loggerT struct { - m []*log.Logger - v int + m []*log.Logger + v int + jsonFormat bool } // NewLoggerV2 creates a loggerV2 with the provided writers. @@ -105,19 +109,32 @@ type loggerT struct { // Warning logs will be written to warningW and infoW. // Info logs will be written to infoW. func NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 { - return NewLoggerV2WithVerbosity(infoW, warningW, errorW, 0) + return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{}) } // NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and // verbosity level. func NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 { + return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v}) +} + +type loggerV2Config struct { + verbose int + jsonFormat bool +} + +func newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 { var m []*log.Logger - m = append(m, log.New(infoW, severityName[infoLog]+": ", log.LstdFlags)) - m = append(m, log.New(io.MultiWriter(infoW, warningW), severityName[warningLog]+": ", log.LstdFlags)) + flag := log.LstdFlags + if c.jsonFormat { + flag = 0 + } + m = append(m, log.New(infoW, "", flag)) + m = append(m, log.New(io.MultiWriter(infoW, warningW), "", flag)) ew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal. - m = append(m, log.New(ew, severityName[errorLog]+": ", log.LstdFlags)) - m = append(m, log.New(ew, severityName[fatalLog]+": ", log.LstdFlags)) - return &loggerT{m: m, v: v} + m = append(m, log.New(ew, "", flag)) + m = append(m, log.New(ew, "", flag)) + return &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat} } // newLoggerV2 creates a loggerV2 to be used as default logger. @@ -142,58 +159,79 @@ func newLoggerV2() LoggerV2 { if vl, err := strconv.Atoi(vLevel); err == nil { v = vl } - return NewLoggerV2WithVerbosity(infoW, warningW, errorW, v) + + jsonFormat := strings.EqualFold(os.Getenv("GRPC_GO_LOG_FORMATTER"), "json") + + return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{ + verbose: v, + jsonFormat: jsonFormat, + }) +} + +func (g *loggerT) output(severity int, s string) { + sevStr := severityName[severity] + if !g.jsonFormat { + g.m[severity].Output(2, fmt.Sprintf("%v: %v", sevStr, s)) + return + } + // TODO: we can also include the logging component, but that needs more + // (API) changes. + b, _ := json.Marshal(map[string]string{ + "severity": sevStr, + "message": s, + }) + g.m[severity].Output(2, string(b)) } func (g *loggerT) Info(args ...interface{}) { - g.m[infoLog].Print(args...) + g.output(infoLog, fmt.Sprint(args...)) } func (g *loggerT) Infoln(args ...interface{}) { - g.m[infoLog].Println(args...) + g.output(infoLog, fmt.Sprintln(args...)) } func (g *loggerT) Infof(format string, args ...interface{}) { - g.m[infoLog].Printf(format, args...) + g.output(infoLog, fmt.Sprintf(format, args...)) } func (g *loggerT) Warning(args ...interface{}) { - g.m[warningLog].Print(args...) + g.output(warningLog, fmt.Sprint(args...)) } func (g *loggerT) Warningln(args ...interface{}) { - g.m[warningLog].Println(args...) + g.output(warningLog, fmt.Sprintln(args...)) } func (g *loggerT) Warningf(format string, args ...interface{}) { - g.m[warningLog].Printf(format, args...) + g.output(warningLog, fmt.Sprintf(format, args...)) } func (g *loggerT) Error(args ...interface{}) { - g.m[errorLog].Print(args...) + g.output(errorLog, fmt.Sprint(args...)) } func (g *loggerT) Errorln(args ...interface{}) { - g.m[errorLog].Println(args...) + g.output(errorLog, fmt.Sprintln(args...)) } func (g *loggerT) Errorf(format string, args ...interface{}) { - g.m[errorLog].Printf(format, args...) + g.output(errorLog, fmt.Sprintf(format, args...)) } func (g *loggerT) Fatal(args ...interface{}) { - g.m[fatalLog].Fatal(args...) - // No need to call os.Exit() again because log.Logger.Fatal() calls os.Exit(). + g.output(fatalLog, fmt.Sprint(args...)) + os.Exit(1) } func (g *loggerT) Fatalln(args ...interface{}) { - g.m[fatalLog].Fatalln(args...) - // No need to call os.Exit() again because log.Logger.Fatal() calls os.Exit(). + g.output(fatalLog, fmt.Sprintln(args...)) + os.Exit(1) } func (g *loggerT) Fatalf(format string, args ...interface{}) { - g.m[fatalLog].Fatalf(format, args...) - // No need to call os.Exit() again because log.Logger.Fatal() calls os.Exit(). + g.output(fatalLog, fmt.Sprintf(format, args...)) + os.Exit(1) } func (g *loggerT) V(l int) bool { diff --git a/vendor/google.golang.org/grpc/install_gae.sh b/vendor/google.golang.org/grpc/install_gae.sh deleted file mode 100644 index 15ff9facdd..0000000000 --- a/vendor/google.golang.org/grpc/install_gae.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -TMP=$(mktemp -d /tmp/sdk.XXX) \ -&& curl -o $TMP.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip" \ -&& unzip -q $TMP.zip -d $TMP \ -&& export PATH="$PATH:$TMP/go_appengine" \ No newline at end of file diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go index f731413930..cd1807543e 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/funcs.go +++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go @@ -204,9 +204,9 @@ func RegisterChannel(c Channel, pid int64, ref string) int64 { trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, } if pid == 0 { - db.get().addChannel(id, cn, true, pid, ref) + db.get().addChannel(id, cn, true, pid) } else { - db.get().addChannel(id, cn, false, pid, ref) + db.get().addChannel(id, cn, false, pid) } return id } @@ -228,7 +228,7 @@ func RegisterSubChannel(c Channel, pid int64, ref string) int64 { pid: pid, trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, } - db.get().addSubChannel(id, sc, pid, ref) + db.get().addSubChannel(id, sc, pid) return id } @@ -258,7 +258,7 @@ func RegisterListenSocket(s Socket, pid int64, ref string) int64 { } id := idGen.genID() ls := &listenSocket{refName: ref, s: s, id: id, pid: pid} - db.get().addListenSocket(id, ls, pid, ref) + db.get().addListenSocket(id, ls, pid) return id } @@ -273,11 +273,11 @@ func RegisterNormalSocket(s Socket, pid int64, ref string) int64 { } id := idGen.genID() ns := &normalSocket{refName: ref, s: s, id: id, pid: pid} - db.get().addNormalSocket(id, ns, pid, ref) + db.get().addNormalSocket(id, ns, pid) return id } -// RemoveEntry removes an entry with unique channelz trakcing id to be id from +// RemoveEntry removes an entry with unique channelz tracking id to be id from // channelz database. func RemoveEntry(id int64) { db.get().removeEntry(id) @@ -333,7 +333,7 @@ func (c *channelMap) addServer(id int64, s *server) { c.mu.Unlock() } -func (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid int64, ref string) { +func (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid int64) { c.mu.Lock() cn.cm = c cn.trace.cm = c @@ -346,7 +346,7 @@ func (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid in c.mu.Unlock() } -func (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64, ref string) { +func (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64) { c.mu.Lock() sc.cm = c sc.trace.cm = c @@ -355,7 +355,7 @@ func (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64, ref stri c.mu.Unlock() } -func (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64, ref string) { +func (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64) { c.mu.Lock() ls.cm = c c.listenSockets[id] = ls @@ -363,7 +363,7 @@ func (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64, ref c.mu.Unlock() } -func (c *channelMap) addNormalSocket(id int64, ns *normalSocket, pid int64, ref string) { +func (c *channelMap) addNormalSocket(id int64, ns *normalSocket, pid int64) { c.mu.Lock() ns.cm = c c.normalSockets[id] = ns @@ -630,7 +630,7 @@ func (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) if count == 0 { end = true } - var s []*SocketMetric + s := make([]*SocketMetric, 0, len(sks)) for _, ns := range sks { sm := &SocketMetric{} sm.SocketData = ns.s.ChannelzMetric() diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_linux.go b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go index 692dd61817..1b1c4cce34 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/types_linux.go +++ b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go index 19c2fc521d..8b06eed1ab 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go +++ b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * @@ -37,6 +38,6 @@ type SocketOptionData struct { // Windows OS doesn't support Socket Option func (s *SocketOptionData) Getsockopt(fd uintptr) { once.Do(func() { - logger.Warning("Channelz: socket options are not supported on non-linux os and appengine.") + logger.Warning("Channelz: socket options are not supported on non-linux environments") }) } diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_linux.go b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go index fdf409d55d..8d194e44e1 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/util_linux.go +++ b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go @@ -1,5 +1,3 @@ -// +build linux,!appengine - /* * * Copyright 2018 gRPC authors. diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go index 8864a08111..837ddc4024 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go +++ b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * diff --git a/vendor/google.golang.org/grpc/internal/credentials/spiffe.go b/vendor/google.golang.org/grpc/internal/credentials/spiffe.go index be70b6cdfc..25ade62305 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/spiffe.go +++ b/vendor/google.golang.org/grpc/internal/credentials/spiffe.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2020 gRPC authors. diff --git a/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go b/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go deleted file mode 100644 index af6f577197..0000000000 --- a/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go +++ /dev/null @@ -1,31 +0,0 @@ -// +build appengine - -/* - * - * Copyright 2020 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import ( - "crypto/tls" - "net/url" -) - -// SPIFFEIDFromState is a no-op for appengine builds. -func SPIFFEIDFromState(state tls.ConnectionState) *url.URL { - return nil -} diff --git a/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go b/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go index f499a614c2..2919632d65 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go +++ b/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go b/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go deleted file mode 100644 index a6144cd661..0000000000 --- a/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build appengine - -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import ( - "net" -) - -// WrapSyscallConn returns newConn on appengine. -func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { - return newConn -} diff --git a/vendor/google.golang.org/grpc/internal/credentials/util.go b/vendor/google.golang.org/grpc/internal/credentials/util.go index 55664fa46b..f792fd22ca 100644 --- a/vendor/google.golang.org/grpc/internal/credentials/util.go +++ b/vendor/google.golang.org/grpc/internal/credentials/util.go @@ -18,7 +18,9 @@ package credentials -import "crypto/tls" +import ( + "crypto/tls" +) const alpnProtoStrH2 = "h2" diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 73931a94bc..6f02725431 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -26,13 +26,10 @@ import ( const ( prefix = "GRPC_GO_" - retryStr = prefix + "RETRY" txtErrIgnoreStr = prefix + "IGNORE_TXT_ERRORS" ) var ( - // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on". - Retry = strings.EqualFold(os.Getenv(retryStr), "on") // TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false"). TXTErrIgnore = !strings.EqualFold(os.Getenv(txtErrIgnoreStr), "false") ) diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go new file mode 100644 index 0000000000..93522d716d --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go @@ -0,0 +1,90 @@ +/* + * + * Copyright 2020 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package envconfig + +import ( + "os" + "strings" +) + +const ( + // XDSBootstrapFileNameEnv is the env variable to set bootstrap file name. + // Do not use this and read from env directly. Its value is read and kept in + // variable BootstrapFileName. + // + // When both bootstrap FileName and FileContent are set, FileName is used. + XDSBootstrapFileNameEnv = "GRPC_XDS_BOOTSTRAP" + // XDSBootstrapFileContentEnv is the env variable to set bootstrapp file + // content. Do not use this and read from env directly. Its value is read + // and kept in variable BootstrapFileName. + // + // When both bootstrap FileName and FileContent are set, FileName is used. + XDSBootstrapFileContentEnv = "GRPC_XDS_BOOTSTRAP_CONFIG" + + ringHashSupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" + clientSideSecuritySupportEnv = "GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT" + aggregateAndDNSSupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" + rbacSupportEnv = "GRPC_XDS_EXPERIMENTAL_RBAC" + federationEnv = "GRPC_EXPERIMENTAL_XDS_FEDERATION" + + c2pResolverTestOnlyTrafficDirectorURIEnv = "GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI" +) + +var ( + // XDSBootstrapFileName holds the name of the file which contains xDS + // bootstrap configuration. Users can specify the location of the bootstrap + // file by setting the environment variable "GRPC_XDS_BOOTSTRAP". + // + // When both bootstrap FileName and FileContent are set, FileName is used. + XDSBootstrapFileName = os.Getenv(XDSBootstrapFileNameEnv) + // XDSBootstrapFileContent holds the content of the xDS bootstrap + // configuration. Users can specify the bootstrap config by setting the + // environment variable "GRPC_XDS_BOOTSTRAP_CONFIG". + // + // When both bootstrap FileName and FileContent are set, FileName is used. + XDSBootstrapFileContent = os.Getenv(XDSBootstrapFileContentEnv) + // XDSRingHash indicates whether ring hash support is enabled, which can be + // disabled by setting the environment variable + // "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" to "false". + XDSRingHash = !strings.EqualFold(os.Getenv(ringHashSupportEnv), "false") + // XDSClientSideSecurity is used to control processing of security + // configuration on the client-side. + // + // Note that there is no env var protection for the server-side because we + // have a brand new API on the server-side and users explicitly need to use + // the new API to get security integration on the server. + XDSClientSideSecurity = !strings.EqualFold(os.Getenv(clientSideSecuritySupportEnv), "false") + // XDSAggregateAndDNS indicates whether processing of aggregated cluster + // and DNS cluster is enabled, which can be enabled by setting the + // environment variable + // "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" to + // "true". + XDSAggregateAndDNS = strings.EqualFold(os.Getenv(aggregateAndDNSSupportEnv), "true") + + // XDSRBAC indicates whether xDS configured RBAC HTTP Filter is enabled, + // which can be disabled by setting the environment variable + // "GRPC_XDS_EXPERIMENTAL_RBAC" to "false". + XDSRBAC = !strings.EqualFold(os.Getenv(rbacSupportEnv), "false") + + // XDSFederation indicates whether federation support is enabled. + XDSFederation = strings.EqualFold(os.Getenv(federationEnv), "true") + + // C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing. + C2PResolverTestOnlyTrafficDirectorURI = os.Getenv(c2pResolverTestOnlyTrafficDirectorURIEnv) +) diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go b/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go new file mode 100644 index 0000000000..e2f948e8f4 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go @@ -0,0 +1,20 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package grpcutil provides utility functions used across the gRPC codebase. +package grpcutil diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/regex.go b/vendor/google.golang.org/grpc/internal/grpcutil/regex.go new file mode 100644 index 0000000000..2810a8ba2f --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/grpcutil/regex.go @@ -0,0 +1,28 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package grpcutil + +import "regexp" + +// FullMatchWithRegex returns whether the full string matches the regex provided. +func FullMatchWithRegex(re *regexp.Regexp, string string) bool { + re.Longest() + rem := re.FindString(string) + return len(rem) == len(string) +} diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/target.go b/vendor/google.golang.org/grpc/internal/grpcutil/target.go deleted file mode 100644 index 8833021da0..0000000000 --- a/vendor/google.golang.org/grpc/internal/grpcutil/target.go +++ /dev/null @@ -1,89 +0,0 @@ -/* - * - * Copyright 2020 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package grpcutil provides a bunch of utility functions to be used across the -// gRPC codebase. -package grpcutil - -import ( - "strings" - - "google.golang.org/grpc/resolver" -) - -// split2 returns the values from strings.SplitN(s, sep, 2). -// If sep is not found, it returns ("", "", false) instead. -func split2(s, sep string) (string, string, bool) { - spl := strings.SplitN(s, sep, 2) - if len(spl) < 2 { - return "", "", false - } - return spl[0], spl[1], true -} - -// ParseTarget splits target into a resolver.Target struct containing scheme, -// authority and endpoint. skipUnixColonParsing indicates that the parse should -// not parse "unix:[path]" cases. This should be true in cases where a custom -// dialer is present, to prevent a behavior change. -// -// If target is not a valid scheme://authority/endpoint as specified in -// https://github.com/grpc/grpc/blob/master/doc/naming.md, -// it returns {Endpoint: target}. -func ParseTarget(target string, skipUnixColonParsing bool) (ret resolver.Target) { - var ok bool - if strings.HasPrefix(target, "unix-abstract:") { - if strings.HasPrefix(target, "unix-abstract://") { - // Maybe, with Authority specified, try to parse it - var remain string - ret.Scheme, remain, _ = split2(target, "://") - ret.Authority, ret.Endpoint, ok = split2(remain, "/") - if !ok { - // No Authority, add the "//" back - ret.Endpoint = "//" + remain - } else { - // Found Authority, add the "/" back - ret.Endpoint = "/" + ret.Endpoint - } - } else { - // Without Authority specified, split target on ":" - ret.Scheme, ret.Endpoint, _ = split2(target, ":") - } - return ret - } - ret.Scheme, ret.Endpoint, ok = split2(target, "://") - if !ok { - if strings.HasPrefix(target, "unix:") && !skipUnixColonParsing { - // Handle the "unix:[local/path]" and "unix:[/absolute/path]" cases, - // because splitting on :// only handles the - // "unix://[/absolute/path]" case. Only handle if the dialer is nil, - // to avoid a behavior change with custom dialers. - return resolver.Target{Scheme: "unix", Endpoint: target[len("unix:"):]} - } - return resolver.Target{Endpoint: target} - } - ret.Authority, ret.Endpoint, ok = split2(ret.Endpoint, "/") - if !ok { - return resolver.Target{Endpoint: target} - } - if ret.Scheme == "unix" { - // Add the "/" back in the unix case, so the unix resolver receives the - // actual endpoint in the "unix://[/absolute/path]" case. - ret.Endpoint = "/" + ret.Endpoint - } - return ret -} diff --git a/vendor/google.golang.org/grpc/internal/metadata/metadata.go b/vendor/google.golang.org/grpc/internal/metadata/metadata.go index 302262613a..b8733dbf34 100644 --- a/vendor/google.golang.org/grpc/internal/metadata/metadata.go +++ b/vendor/google.golang.org/grpc/internal/metadata/metadata.go @@ -30,14 +30,38 @@ type mdKeyType string const mdKey = mdKeyType("grpc.internal.address.metadata") +type mdValue metadata.MD + +func (m mdValue) Equal(o interface{}) bool { + om, ok := o.(mdValue) + if !ok { + return false + } + if len(m) != len(om) { + return false + } + for k, v := range m { + ov := om[k] + if len(ov) != len(v) { + return false + } + for i, ve := range v { + if ov[i] != ve { + return false + } + } + } + return true +} + // Get returns the metadata of addr. func Get(addr resolver.Address) metadata.MD { attrs := addr.Attributes if attrs == nil { return nil } - md, _ := attrs.Value(mdKey).(metadata.MD) - return md + md, _ := attrs.Value(mdKey).(mdValue) + return metadata.MD(md) } // Set sets (overrides) the metadata in addr. @@ -45,6 +69,6 @@ func Get(addr resolver.Address) metadata.MD { // When a SubConn is created with this address, the RPCs sent on it will all // have this metadata. func Set(addr resolver.Address, md metadata.MD) resolver.Address { - addr.Attributes = addr.Attributes.WithValues(mdKey, md) + addr.Attributes = addr.Attributes.WithValue(mdKey, mdValue(md)) return addr } diff --git a/vendor/google.golang.org/grpc/internal/resolver/config_selector.go b/vendor/google.golang.org/grpc/internal/resolver/config_selector.go index 5e7f36703d..c7a18a948a 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/config_selector.go +++ b/vendor/google.golang.org/grpc/internal/resolver/config_selector.go @@ -117,9 +117,12 @@ type ClientInterceptor interface { NewStream(ctx context.Context, ri RPCInfo, done func(), newStream func(ctx context.Context, done func()) (ClientStream, error)) (ClientStream, error) } -// ServerInterceptor is unimplementable; do not use. +// ServerInterceptor is an interceptor for incoming RPC's on gRPC server side. type ServerInterceptor interface { - notDefined() + // AllowRPC checks if an incoming RPC is allowed to proceed based on + // information about connection RPC was received on, and HTTP Headers. This + // information will be piped into context. + AllowRPC(ctx context.Context) error // TODO: Make this a real interceptor for filters such as rate limiting. } type csKeyType string @@ -129,7 +132,7 @@ const csKey = csKeyType("grpc.internal.resolver.configSelector") // SetConfigSelector sets the config selector in state and returns the new // state. func SetConfigSelector(state resolver.State, cs ConfigSelector) resolver.State { - state.Attributes = state.Attributes.WithValues(csKey, cs) + state.Attributes = state.Attributes.WithValue(csKey, cs) return state } diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go index 03825bbe7b..75301c5149 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go @@ -277,18 +277,13 @@ func (d *dnsResolver) lookupSRV() ([]resolver.Address, error) { return newAddrs, nil } -var filterError = func(err error) error { +func handleDNSError(err error, lookupType string) error { if dnsErr, ok := err.(*net.DNSError); ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary { // Timeouts and temporary errors should be communicated to gRPC to // attempt another DNS query (with backoff). Other errors should be // suppressed (they may represent the absence of a TXT record). return nil } - return err -} - -func handleDNSError(err error, lookupType string) error { - err = filterError(err) if err != nil { err = fmt.Errorf("dns: %v record lookup error: %v", lookupType, err) logger.Info(err) @@ -323,12 +318,12 @@ func (d *dnsResolver) lookupTXT() *serviceconfig.ParseResult { } func (d *dnsResolver) lookupHost() ([]resolver.Address, error) { - var newAddrs []resolver.Address addrs, err := d.resolver.LookupHost(d.ctx, d.host) if err != nil { err = handleDNSError(err, "A") return nil, err } + newAddrs := make([]resolver.Address, 0, len(addrs)) for _, a := range addrs { ip, ok := formatIP(a) if !ok { diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go b/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go deleted file mode 100644 index 8783a8cf82..0000000000 --- a/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build go1.13 - -/* - * - * Copyright 2019 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package dns - -import "net" - -func init() { - filterError = func(err error) error { - if dnsErr, ok := err.(*net.DNSError); ok && dnsErr.IsNotFound { - // The name does not exist; not an error. - return nil - } - return err - } -} diff --git a/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go index 0d5a811ddf..20852e59df 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go +++ b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go @@ -37,7 +37,17 @@ func (b *builder) Build(target resolver.Target, cc resolver.ClientConn, _ resolv if target.Authority != "" { return nil, fmt.Errorf("invalid (non-empty) authority: %v", target.Authority) } - addr := resolver.Address{Addr: target.Endpoint} + + // gRPC was parsing the dial target manually before PR #4817, and we + // switched to using url.Parse() in that PR. To avoid breaking existing + // resolver implementations we ended up stripping the leading "/" from the + // endpoint. This obviously does not work for the "unix" scheme. Hence we + // end up using the parsed URL instead. + endpoint := target.URL.Path + if endpoint == "" { + endpoint = target.URL.Opaque + } + addr := resolver.Address{Addr: endpoint} if b.scheme == unixAbstractScheme { // prepend "\x00" to address for unix-abstract addr.Addr = "\x00" + addr.Addr diff --git a/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go b/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go index c0634d152c..badbdbf597 100644 --- a/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go +++ b/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go @@ -78,6 +78,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { return err } + var names []string for i, lbcfg := range ir { if len(lbcfg) != 1 { return fmt.Errorf("invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q", i, lbcfg) @@ -92,6 +93,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { for name, jsonCfg = range lbcfg { } + names = append(names, name) builder := balancer.Get(name) if builder == nil { // If the balancer is not registered, move on to the next config. @@ -120,7 +122,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { // return. This means we had a loadBalancingConfig slice but did not // encounter a registered policy. The config is considered invalid in this // case. - return fmt.Errorf("invalid loadBalancingConfig: no supported policies found") + return fmt.Errorf("invalid loadBalancingConfig: no supported policies found in %v", names) } // MethodConfig defines the configuration recommended by the service providers for a diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go index 4b2964f2a1..b3a72276de 100644 --- a/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go index 7913ef1dbf..999f52cd75 100644 --- a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * @@ -35,41 +36,41 @@ var logger = grpclog.Component("core") func log() { once.Do(func() { - logger.Info("CPU time info is unavailable on non-linux or appengine environment.") + logger.Info("CPU time info is unavailable on non-linux environments.") }) } -// GetCPUTime returns the how much CPU time has passed since the start of this process. -// It always returns 0 under non-linux or appengine environment. +// GetCPUTime returns the how much CPU time has passed since the start of this +// process. It always returns 0 under non-linux environments. func GetCPUTime() int64 { log() return 0 } -// Rusage is an empty struct under non-linux or appengine environment. +// Rusage is an empty struct under non-linux environments. type Rusage struct{} -// GetRusage is a no-op function under non-linux or appengine environment. +// GetRusage is a no-op function under non-linux environments. func GetRusage() *Rusage { log() return nil } // CPUTimeDiff returns the differences of user CPU time and system CPU time used -// between two Rusage structs. It a no-op function for non-linux or appengine environment. +// between two Rusage structs. It a no-op function for non-linux environments. func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { log() return 0, 0 } -// SetTCPUserTimeout is a no-op function under non-linux or appengine environments +// SetTCPUserTimeout is a no-op function under non-linux environments. func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { log() return nil } -// GetTCPUserTimeout is a no-op function under non-linux or appengine environments -// a negative return value indicates the operation is not supported +// GetTCPUserTimeout is a no-op function under non-linux environments. +// A negative return value indicates the operation is not supported func GetTCPUserTimeout(conn net.Conn) (int, error) { log() return -1, nil diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index 45532f8aea..8394d252df 100644 --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -133,6 +133,7 @@ type cleanupStream struct { func (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM type earlyAbortStream struct { + httpStatus uint32 streamID uint32 contentSubtype string status *status.Status @@ -771,9 +772,12 @@ func (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error { if l.side == clientSide { return errors.New("earlyAbortStream not handled on client") } - + // In case the caller forgets to set the http status, default to 200. + if eas.httpStatus == 0 { + eas.httpStatus = 200 + } headerFields := []hpack.HeaderField{ - {Name: ":status", Value: "200"}, + {Name: ":status", Value: strconv.Itoa(int(eas.httpStatus))}, {Name: "content-type", Value: grpcutil.ContentType(eas.contentSubtype)}, {Name: "grpc-status", Value: strconv.Itoa(int(eas.status.Code()))}, {Name: "grpc-message", Value: encodeGrpcMessage(eas.status.Message())}, diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go index f262edd8ec..97198c5158 100644 --- a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go +++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go @@ -136,12 +136,10 @@ type inFlow struct { // newLimit updates the inflow window to a new value n. // It assumes that n is always greater than the old limit. -func (f *inFlow) newLimit(n uint32) uint32 { +func (f *inFlow) newLimit(n uint32) { f.mu.Lock() - d := n - f.limit f.limit = n f.mu.Unlock() - return d } func (f *inFlow) maybeAdjust(n uint32) uint32 { diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index 0cd6da1e73..f0c72d3371 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -25,6 +25,7 @@ import ( "math" "net" "net/http" + "path/filepath" "strconv" "strings" "sync" @@ -146,13 +147,20 @@ func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error address := addr.Addr networkType, ok := networktype.Get(addr) if fn != nil { + // Special handling for unix scheme with custom dialer. Back in the day, + // we did not have a unix resolver and therefore targets with a unix + // scheme would end up using the passthrough resolver. So, user's used a + // custom dialer in this case and expected the original dial target to + // be passed to the custom dialer. Now, we have a unix resolver. But if + // a custom dialer is specified, we want to retain the old behavior in + // terms of the address being passed to the custom dialer. if networkType == "unix" && !strings.HasPrefix(address, "\x00") { - // For backward compatibility, if the user dialed "unix:///path", - // the passthrough resolver would be used and the user's custom - // dialer would see "unix:///path". Since the unix resolver is used - // and the address is now "/path", prepend "unix://" so the user's - // custom dialer sees the same address. - return fn(ctx, "unix://"+address) + // Supported unix targets are either "unix://absolute-path" or + // "unix:relative-path". + if filepath.IsAbs(address) { + return fn(ctx, "unix://"+address) + } + return fn(ctx, "unix:"+address) } return fn(ctx, address) } @@ -193,6 +201,12 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } }() + // gRPC, resolver, balancer etc. can specify arbitrary data in the + // Attributes field of resolver.Address, which is shoved into connectCtx + // and passed to the dialer and credential handshaker. This makes it possible for + // address specific arbitrary data to reach custom dialers and credential handshakers. + connectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes}) + conn, err := dial(connectCtx, opts.Dialer, addr, opts.UseProxy, opts.UserAgent) if err != nil { if opts.FailOnNonTempDialError { @@ -237,11 +251,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } } if transportCreds != nil { - // gRPC, resolver, balancer etc. can specify arbitrary data in the - // Attributes field of resolver.Address, which is shoved into connectCtx - // and passed to the credential handshaker. This makes it possible for - // address specific arbitrary data to reach the credential handshaker. - connectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes}) rawConn := conn // Pull the deadline from the connectCtx, which will be used for // timeouts in the authentication protocol handshake. Can ignore the @@ -579,7 +588,7 @@ func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[s return nil, err } - return nil, status.Errorf(codes.Unauthenticated, "transport: %v", err) + return nil, status.Errorf(codes.Unauthenticated, "transport: per-RPC creds failed due to error: %v", err) } for k, v := range data { // Capital header names are illegal in HTTP/2. @@ -616,12 +625,22 @@ func (t *http2Client) getCallAuthData(ctx context.Context, audience string, call return callAuthData, nil } -// NewStreamError wraps an error and reports additional information. +// NewStreamError wraps an error and reports additional information. Typically +// NewStream errors result in transparent retry, as they mean nothing went onto +// the wire. However, there are two notable exceptions: +// +// 1. If the stream headers violate the max header list size allowed by the +// server. In this case there is no reason to retry at all, as it is +// assumed the RPC would continue to fail on subsequent attempts. +// 2. If the credentials errored when requesting their headers. In this case, +// it's possible a retry can fix the problem, but indefinitely transparently +// retrying is not appropriate as it is likely the credentials, if they can +// eventually succeed, would need I/O to do so. type NewStreamError struct { Err error - DoNotRetry bool - PerformedIO bool + DoNotRetry bool + DoNotTransparentRetry bool } func (e NewStreamError) Error() string { @@ -631,24 +650,10 @@ func (e NewStreamError) Error() string { // NewStream creates a stream and registers it into the transport as "active" // streams. All non-nil errors returned will be *NewStreamError. func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Stream, err error) { - defer func() { - if err != nil { - nse, ok := err.(*NewStreamError) - if !ok { - nse = &NewStreamError{Err: err} - } - if len(t.perRPCCreds) > 0 || callHdr.Creds != nil { - // We may have performed I/O in the per-RPC creds callback, so do not - // allow transparent retry. - nse.PerformedIO = true - } - err = nse - } - }() ctx = peer.NewContext(ctx, t.getPeer()) headerFields, err := t.createHeaderFields(ctx, callHdr) if err != nil { - return nil, err + return nil, &NewStreamError{Err: err, DoNotTransparentRetry: true} } s := t.newStream(ctx, callHdr) cleanup := func(err error) { @@ -748,7 +753,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return true }, hdr) if err != nil { - return nil, err + return nil, &NewStreamError{Err: err} } if success { break @@ -759,12 +764,12 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea firstTry = false select { case <-ch: - case <-s.ctx.Done(): - return nil, ContextErr(s.ctx.Err()) + case <-ctx.Done(): + return nil, &NewStreamError{Err: ContextErr(ctx.Err())} case <-t.goAway: - return nil, errStreamDrain + return nil, &NewStreamError{Err: errStreamDrain} case <-t.ctx.Done(): - return nil, ErrConnClosing + return nil, &NewStreamError{Err: ErrConnClosing} } } if t.statsHandler != nil { @@ -1077,7 +1082,7 @@ func (t *http2Client) handleData(f *http2.DataFrame) { } // The server has closed the stream without sending trailers. Record that // the read direction is closed, and set the status appropriately. - if f.FrameHeader.Flags.Has(http2.FlagDataEndStream) { + if f.StreamEnded() { t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.New(codes.Internal, "server closed the stream without sending trailers"), nil, true) } } @@ -1407,26 +1412,6 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { } isHeader := false - defer func() { - if t.statsHandler != nil { - if isHeader { - inHeader := &stats.InHeader{ - Client: true, - WireLength: int(frame.Header().Length), - Header: s.header.Copy(), - Compression: s.recvCompress, - } - t.statsHandler.HandleRPC(s.ctx, inHeader) - } else { - inTrailer := &stats.InTrailer{ - Client: true, - WireLength: int(frame.Header().Length), - Trailer: s.trailer.Copy(), - } - t.statsHandler.HandleRPC(s.ctx, inTrailer) - } - } - }() // If headerChan hasn't been closed yet if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { @@ -1448,6 +1433,25 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { close(s.headerChan) } + if t.statsHandler != nil { + if isHeader { + inHeader := &stats.InHeader{ + Client: true, + WireLength: int(frame.Header().Length), + Header: metadata.MD(mdata).Copy(), + Compression: s.recvCompress, + } + t.statsHandler.HandleRPC(s.ctx, inHeader) + } else { + inTrailer := &stats.InTrailer{ + Client: true, + WireLength: int(frame.Header().Length), + Trailer: metadata.MD(mdata).Copy(), + } + t.statsHandler.HandleRPC(s.ctx, inTrailer) + } + } + if !endStream { return } @@ -1553,7 +1557,7 @@ func minTime(a, b time.Duration) time.Duration { return b } -// keepalive running in a separate goroutune makes sure the connection is alive by sending pings. +// keepalive running in a separate goroutine makes sure the connection is alive by sending pings. func (t *http2Client) keepalive() { p := &ping{data: [8]byte{}} // True iff a ping has been sent, and no data has been received since then. diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index e3799d50aa..2c6eaf0e59 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -73,7 +73,6 @@ type http2Server struct { writerDone chan struct{} // sync point to enable testing. remoteAddr net.Addr localAddr net.Addr - maxStreamID uint32 // max stream ID ever seen authInfo credentials.AuthInfo // auth info about the connection inTapHandle tap.ServerInHandle framer *framer @@ -123,16 +122,37 @@ type http2Server struct { bufferPool *bufferPool connectionID uint64 + + // maxStreamMu guards the maximum stream ID + // This lock may not be taken if mu is already held. + maxStreamMu sync.Mutex + maxStreamID uint32 // max stream ID ever seen } // NewServerTransport creates a http2 transport with conn and configuration // options from config. // // It returns a non-nil transport and a nil error on success. On failure, it -// returns a non-nil transport and a nil-error. For a special case where the +// returns a nil transport and a non-nil error. For a special case where the // underlying conn gets closed before the client preface could be read, it // returns a nil transport and a nil error. func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { + var authInfo credentials.AuthInfo + rawConn := conn + if config.Credentials != nil { + var err error + conn, authInfo, err = config.Credentials.ServerHandshake(rawConn) + if err != nil { + // ErrConnDispatched means that the connection was dispatched away + // from gRPC; those connections should be left open. io.EOF means + // the connection was closed before handshaking completed, which can + // happen naturally from probers. Return these errors directly. + if err == credentials.ErrConnDispatched || err == io.EOF { + return nil, err + } + return nil, connectionErrorf(false, err, "ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) + } + } writeBufSize := config.WriteBufferSize readBufSize := config.ReadBufferSize maxHeaderListSize := defaultServerMaxHeaderListSize @@ -215,14 +235,15 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, if kep.MinTime == 0 { kep.MinTime = defaultKeepalivePolicyMinTime } + done := make(chan struct{}) t := &http2Server{ - ctx: context.Background(), + ctx: setConnection(context.Background(), rawConn), done: done, conn: conn, remoteAddr: conn.RemoteAddr(), localAddr: conn.LocalAddr(), - authInfo: config.AuthInfo, + authInfo: authInfo, framer: framer, readerDone: make(chan struct{}), writerDone: make(chan struct{}), @@ -273,10 +294,11 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, if _, err := io.ReadFull(t.conn, preface); err != nil { // In deployments where a gRPC server runs behind a cloud load balancer // which performs regular TCP level health checks, the connection is - // closed immediately by the latter. Skipping the error here will help - // reduce log clutter. + // closed immediately by the latter. Returning io.EOF here allows the + // grpc server implementation to recognize this scenario and suppress + // logging to reduce spam. if err == io.EOF { - return nil, nil + return nil, io.EOF } return nil, connectionErrorf(false, err, "transport: http2Server.HandleStreams failed to receive the preface from client: %v", err) } @@ -316,6 +338,10 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, // operateHeader takes action on the decoded headers. func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (fatal bool) { + // Acquire max stream ID lock for entire duration + t.maxStreamMu.Lock() + defer t.maxStreamMu.Unlock() + streamID := frame.Header().StreamID // frame.Truncated is set to true when framer detects that the current header @@ -330,6 +356,15 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( return false } + if streamID%2 != 1 || streamID <= t.maxStreamID { + // illegal gRPC stream id. + if logger.V(logLevel) { + logger.Errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID) + } + return true + } + t.maxStreamID = streamID + buf := newRecvBuffer() s := &Stream{ id: streamID, @@ -337,7 +372,6 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( buf: buf, fc: &inFlow{limit: uint32(t.initialWindowSize)}, } - var ( // If a gRPC Response-Headers has already been received, then it means // that the peer is speaking gRPC and we are in gRPC mode. @@ -373,6 +407,13 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( if timeout, err = decodeTimeout(hf.Value); err != nil { headerError = true } + // "Transports must consider requests containing the Connection header + // as malformed." - A41 + case "connection": + if logger.V(logLevel) { + logger.Errorf("transport: http2Server.operateHeaders parsed a :connection header which makes a request malformed as per the HTTP/2 spec") + } + headerError = true default: if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) { break @@ -387,6 +428,25 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( } } + // "If multiple Host headers or multiple :authority headers are present, the + // request must be rejected with an HTTP status code 400 as required by Host + // validation in RFC 7230 §5.4, gRPC status code INTERNAL, or RST_STREAM + // with HTTP/2 error code PROTOCOL_ERROR." - A41. Since this is a HTTP/2 + // error, this takes precedence over a client not speaking gRPC. + if len(mdata[":authority"]) > 1 || len(mdata["host"]) > 1 { + errMsg := fmt.Sprintf("num values of :authority: %v, num values of host: %v, both must only have 1 value as per HTTP/2 spec", len(mdata[":authority"]), len(mdata["host"])) + if logger.V(logLevel) { + logger.Errorf("transport: %v", errMsg) + } + t.controlBuf.put(&earlyAbortStream{ + httpStatus: 400, + streamID: streamID, + contentSubtype: s.contentSubtype, + status: status.New(codes.Internal, errMsg), + }) + return false + } + if !isGRPC || headerError { t.controlBuf.put(&cleanupStream{ streamID: streamID, @@ -397,6 +457,19 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( return false } + // "If :authority is missing, Host must be renamed to :authority." - A41 + if len(mdata[":authority"]) == 0 { + // No-op if host isn't present, no eventual :authority header is a valid + // RPC. + if host, ok := mdata["host"]; ok { + mdata[":authority"] = host + delete(mdata, "host") + } + } else { + // "If :authority is present, Host must be discarded" - A41 + delete(mdata, "host") + } + if frame.StreamEnded() { // s is just created by the caller. No lock needed. s.state = streamReadDone @@ -441,16 +514,6 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( s.cancel() return false } - if streamID%2 != 1 || streamID <= t.maxStreamID { - t.mu.Unlock() - // illegal gRPC stream id. - if logger.V(logLevel) { - logger.Errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID) - } - s.cancel() - return true - } - t.maxStreamID = streamID if httpMethod != http.MethodPost { t.mu.Unlock() if logger.V(logLevel) { @@ -477,6 +540,7 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( stat = status.New(codes.PermissionDenied, err.Error()) } t.controlBuf.put(&earlyAbortStream{ + httpStatus: 200, streamID: s.id, contentSubtype: s.contentSubtype, status: stat, @@ -717,7 +781,7 @@ func (t *http2Server) handleData(f *http2.DataFrame) { s.write(recvMsg{buffer: buffer}) } } - if f.Header().Flags.Has(http2.FlagDataEndStream) { + if f.StreamEnded() { // Received the end of stream from the client. s.compareAndSwapState(streamActive, streamReadDone) s.write(recvMsg{err: io.EOF}) @@ -1235,20 +1299,23 @@ var goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}} // Handles outgoing GoAway and returns true if loopy needs to put itself // in draining mode. func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { + t.maxStreamMu.Lock() t.mu.Lock() if t.state == closing { // TODO(mmukhi): This seems unnecessary. t.mu.Unlock() + t.maxStreamMu.Unlock() // The transport is closing. return false, ErrConnClosing } - sid := t.maxStreamID if !g.headsUp { // Stop accepting more streams now. t.state = draining + sid := t.maxStreamID if len(t.activeStreams) == 0 { g.closeConn = true } t.mu.Unlock() + t.maxStreamMu.Unlock() if err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil { return false, err } @@ -1261,6 +1328,7 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { return true, nil } t.mu.Unlock() + t.maxStreamMu.Unlock() // For a graceful close, send out a GoAway with stream ID of MaxUInt32, // Follow that with a ping and wait for the ack to come back or a timer // to expire. During this time accept new streams since they might have @@ -1345,3 +1413,18 @@ func getJitter(v time.Duration) time.Duration { j := grpcrand.Int63n(2*r) - r return time.Duration(j) } + +type connectionKey struct{} + +// GetConnection gets the connection from the context. +func GetConnection(ctx context.Context) net.Conn { + conn, _ := ctx.Value(connectionKey{}).(net.Conn) + return conn +} + +// SetConnection adds the connection to the context to be able to get +// information about the destination ip and port for an incoming RPC. This also +// allows any unary or streaming interceptors to see the connection. +func setConnection(ctx context.Context, conn net.Conn) context.Context { + return context.WithValue(ctx, connectionKey{}, conn) +} diff --git a/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go b/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go index 7bb53cff10..c11b527827 100644 --- a/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go +++ b/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go @@ -31,7 +31,7 @@ const key = keyType("grpc.internal.transport.networktype") // Set returns a copy of the provided address with attributes containing networkType. func Set(address resolver.Address, networkType string) resolver.Address { - address.Attributes = address.Attributes.WithValues(key, networkType) + address.Attributes = address.Attributes.WithValue(key, networkType) return address } diff --git a/vendor/google.golang.org/grpc/internal/transport/proxy.go b/vendor/google.golang.org/grpc/internal/transport/proxy.go index a662bf39a6..4159619878 100644 --- a/vendor/google.golang.org/grpc/internal/transport/proxy.go +++ b/vendor/google.golang.org/grpc/internal/transport/proxy.go @@ -37,7 +37,7 @@ var ( httpProxyFromEnvironment = http.ProxyFromEnvironment ) -func mapAddress(ctx context.Context, address string) (*url.URL, error) { +func mapAddress(address string) (*url.URL, error) { req := &http.Request{ URL: &url.URL{ Scheme: "https", @@ -114,7 +114,7 @@ func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr stri // connection. func proxyDial(ctx context.Context, addr string, grpcUA string) (conn net.Conn, err error) { newAddr := addr - proxyURL, err := mapAddress(ctx, addr) + proxyURL, err := mapAddress(addr) if err != nil { return nil, err } diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index 1419812645..d3bf65b2bd 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -30,6 +30,7 @@ import ( "net" "sync" "sync/atomic" + "time" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -518,7 +519,8 @@ const ( // ServerConfig consists of all the configurations to establish a server transport. type ServerConfig struct { MaxStreams uint32 - AuthInfo credentials.AuthInfo + ConnectionTimeout time.Duration + Credentials credentials.TransportCredentials InTapHandle tap.ServerInHandle StatsHandler stats.Handler KeepaliveParams keepalive.ServerParameters diff --git a/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go b/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go index 3677c3f04f..e8b492774d 100644 --- a/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go +++ b/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go @@ -28,7 +28,7 @@ type handshakeClusterNameKey struct{} // SetXDSHandshakeClusterName returns a copy of addr in which the Attributes field // is updated with the cluster name. func SetXDSHandshakeClusterName(addr resolver.Address, clusterName string) resolver.Address { - addr.Attributes = addr.Attributes.WithValues(handshakeClusterNameKey{}, clusterName) + addr.Attributes = addr.Attributes.WithValue(handshakeClusterNameKey{}, clusterName) return addr } diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go index 0878ada9db..e8367cb899 100644 --- a/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/vendor/google.golang.org/grpc/picker_wrapper.go @@ -144,7 +144,7 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer. acw, ok := pickResult.SubConn.(*acBalancerWrapper) if !ok { - logger.Error("subconn returned from pick is not *acBalancerWrapper") + logger.Errorf("subconn returned from pick is type %T, not *acBalancerWrapper", pickResult.SubConn) continue } if t := acw.getAddrConn().getReadyTransport(); t != nil { diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go index b858c2a5e6..5168b62b07 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/pickfirst.go @@ -107,10 +107,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S } switch s.ConnectivityState { - case connectivity.Ready, connectivity.Idle: + case connectivity.Ready: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{result: balancer.PickResult{SubConn: sc}}}) case connectivity.Connecting: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{err: balancer.ErrNoSubConnAvailable}}) + case connectivity.Idle: + b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &idlePicker{sc: sc}}) case connectivity.TransientFailure: b.cc.UpdateState(balancer.State{ ConnectivityState: s.ConnectivityState, @@ -122,6 +124,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S func (b *pickfirstBalancer) Close() { } +func (b *pickfirstBalancer) ExitIdle() { + if b.sc != nil && b.state == connectivity.Idle { + b.sc.Connect() + } +} + type picker struct { result balancer.PickResult err error @@ -131,6 +139,17 @@ func (p *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { return p.result, p.err } +// idlePicker is used when the SubConn is IDLE and kicks the SubConn into +// CONNECTING when Pick is called. +type idlePicker struct { + sc balancer.SubConn +} + +func (i *idlePicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { + i.sc.Connect() + return balancer.PickResult{}, balancer.ErrNoSubConnAvailable +} + func init() { balancer.Register(newPickfirstBuilder()) } diff --git a/vendor/google.golang.org/grpc/regenerate.sh b/vendor/google.golang.org/grpc/regenerate.sh index dfd3226a1d..a0a71aae96 100644 --- a/vendor/google.golang.org/grpc/regenerate.sh +++ b/vendor/google.golang.org/grpc/regenerate.sh @@ -102,8 +102,8 @@ done # The go_package option in grpc/lookup/v1/rls.proto doesn't match the # current location. Move it into the right place. -mkdir -p ${WORKDIR}/out/google.golang.org/grpc/balancer/rls/internal/proto/grpc_lookup_v1 -mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/balancer/rls/internal/proto/grpc_lookup_v1 +mkdir -p ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 +mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 # grpc_testingv3/testv3.pb.go is not re-generated because it was # intentionally generated by an older version of protoc-gen-go. diff --git a/vendor/google.golang.org/grpc/resolver/map.go b/vendor/google.golang.org/grpc/resolver/map.go new file mode 100644 index 0000000000..e87ecd0eeb --- /dev/null +++ b/vendor/google.golang.org/grpc/resolver/map.go @@ -0,0 +1,109 @@ +/* + * + * Copyright 2021 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package resolver + +type addressMapEntry struct { + addr Address + value interface{} +} + +// AddressMap is a map of addresses to arbitrary values taking into account +// Attributes. BalancerAttributes are ignored, as are Metadata and Type. +// Multiple accesses may not be performed concurrently. Must be created via +// NewAddressMap; do not construct directly. +type AddressMap struct { + m map[string]addressMapEntryList +} + +type addressMapEntryList []*addressMapEntry + +// NewAddressMap creates a new AddressMap. +func NewAddressMap() *AddressMap { + return &AddressMap{m: make(map[string]addressMapEntryList)} +} + +// find returns the index of addr in the addressMapEntry slice, or -1 if not +// present. +func (l addressMapEntryList) find(addr Address) int { + if len(l) == 0 { + return -1 + } + for i, entry := range l { + if entry.addr.ServerName == addr.ServerName && + entry.addr.Attributes.Equal(addr.Attributes) { + return i + } + } + return -1 +} + +// Get returns the value for the address in the map, if present. +func (a *AddressMap) Get(addr Address) (value interface{}, ok bool) { + entryList := a.m[addr.Addr] + if entry := entryList.find(addr); entry != -1 { + return entryList[entry].value, true + } + return nil, false +} + +// Set updates or adds the value to the address in the map. +func (a *AddressMap) Set(addr Address, value interface{}) { + entryList := a.m[addr.Addr] + if entry := entryList.find(addr); entry != -1 { + a.m[addr.Addr][entry].value = value + return + } + a.m[addr.Addr] = append(a.m[addr.Addr], &addressMapEntry{addr: addr, value: value}) +} + +// Delete removes addr from the map. +func (a *AddressMap) Delete(addr Address) { + entryList := a.m[addr.Addr] + entry := entryList.find(addr) + if entry == -1 { + return + } + if len(entryList) == 1 { + entryList = nil + } else { + copy(entryList[entry:], entryList[entry+1:]) + entryList = entryList[:len(entryList)-1] + } + a.m[addr.Addr] = entryList +} + +// Len returns the number of entries in the map. +func (a *AddressMap) Len() int { + ret := 0 + for _, entryList := range a.m { + ret += len(entryList) + } + return ret +} + +// Keys returns a slice of all current map keys. +func (a *AddressMap) Keys() []Address { + ret := make([]Address, 0, a.Len()) + for _, entryList := range a.m { + for _, entry := range entryList { + ret = append(ret, entry.addr) + } + } + return ret +} diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go index 6a9d234a59..e28b680260 100644 --- a/vendor/google.golang.org/grpc/resolver/resolver.go +++ b/vendor/google.golang.org/grpc/resolver/resolver.go @@ -23,6 +23,7 @@ package resolver import ( "context" "net" + "net/url" "google.golang.org/grpc/attributes" "google.golang.org/grpc/credentials" @@ -116,9 +117,14 @@ type Address struct { ServerName string // Attributes contains arbitrary data about this address intended for - // consumption by the load balancing policy. + // consumption by the SubConn. Attributes *attributes.Attributes + // BalancerAttributes contains arbitrary data about this address intended + // for consumption by the LB policy. These attribes do not affect SubConn + // creation, connection establishment, handshaking, etc. + BalancerAttributes *attributes.Attributes + // Type is the type of this address. // // Deprecated: use Attributes instead. @@ -131,6 +137,15 @@ type Address struct { Metadata interface{} } +// Equal returns whether a and o are identical. Metadata is compared directly, +// not with any recursive introspection. +func (a *Address) Equal(o Address) bool { + return a.Addr == o.Addr && a.ServerName == o.ServerName && + a.Attributes.Equal(o.Attributes) && + a.BalancerAttributes.Equal(o.BalancerAttributes) && + a.Type == o.Type && a.Metadata == o.Metadata +} + // BuildOptions includes additional information for the builder to create // the resolver. type BuildOptions struct { @@ -204,25 +219,36 @@ type ClientConn interface { // Target represents a target for gRPC, as specified in: // https://github.com/grpc/grpc/blob/master/doc/naming.md. -// It is parsed from the target string that gets passed into Dial or DialContext by the user. And -// grpc passes it to the resolver and the balancer. +// It is parsed from the target string that gets passed into Dial or DialContext +// by the user. And gRPC passes it to the resolver and the balancer. // -// If the target follows the naming spec, and the parsed scheme is registered with grpc, we will -// parse the target string according to the spec. e.g. "dns://some_authority/foo.bar" will be parsed -// into &Target{Scheme: "dns", Authority: "some_authority", Endpoint: "foo.bar"} +// If the target follows the naming spec, and the parsed scheme is registered +// with gRPC, we will parse the target string according to the spec. If the +// target does not contain a scheme or if the parsed scheme is not registered +// (i.e. no corresponding resolver available to resolve the endpoint), we will +// apply the default scheme, and will attempt to reparse it. // -// If the target does not contain a scheme, we will apply the default scheme, and set the Target to -// be the full target string. e.g. "foo.bar" will be parsed into -// &Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "foo.bar"}. +// Examples: // -// If the parsed scheme is not registered (i.e. no corresponding resolver available to resolve the -// endpoint), we set the Scheme to be the default scheme, and set the Endpoint to be the full target -// string. e.g. target string "unknown_scheme://authority/endpoint" will be parsed into -// &Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "unknown_scheme://authority/endpoint"}. +// - "dns://some_authority/foo.bar" +// Target{Scheme: "dns", Authority: "some_authority", Endpoint: "foo.bar"} +// - "foo.bar" +// Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "foo.bar"} +// - "unknown_scheme://authority/endpoint" +// Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "unknown_scheme://authority/endpoint"} type Target struct { - Scheme string + // Deprecated: use URL.Scheme instead. + Scheme string + // Deprecated: use URL.Host instead. Authority string - Endpoint string + // Deprecated: use URL.Path or URL.Opaque instead. The latter is set when + // the former is empty. + Endpoint string + // URL contains the parsed dial target with an optional default scheme added + // to it if the original dial target contained no scheme or contained an + // unregistered scheme. Any query params specified in the original dial + // target can be accessed from here. + URL url.URL } // Builder creates a resolver that will be used to watch name resolution updates. diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index 87987a2e65..5d407b004b 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -712,13 +712,11 @@ func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxRecei if err != nil { return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) } - } else { - size = len(d) - } - if size > maxReceiveMessageSize { - // TODO: Revisit the error code. Currently keep it consistent with java - // implementation. - return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", size, maxReceiveMessageSize) + if size > maxReceiveMessageSize { + // TODO: Revisit the error code. Currently keep it consistent with java + // implementation. + return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) + } } return d, nil } diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index 0251f48daf..eadf9e05fd 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -710,13 +710,6 @@ func (s *Server) GetServiceInfo() map[string]ServiceInfo { // the server being stopped. var ErrServerStopped = errors.New("grpc: the server has been stopped") -func (s *Server) useTransportAuthenticator(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - if s.opts.creds == nil { - return rawConn, nil, nil - } - return s.opts.creds.ServerHandshake(rawConn) -} - type listenSocket struct { net.Listener channelzID int64 @@ -839,35 +832,14 @@ func (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) { return } rawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout)) - conn, authInfo, err := s.useTransportAuthenticator(rawConn) - if err != nil { - // ErrConnDispatched means that the connection was dispatched away from - // gRPC; those connections should be left open. - if err != credentials.ErrConnDispatched { - // In deployments where a gRPC server runs behind a cloud load - // balancer which performs regular TCP level health checks, the - // connection is closed immediately by the latter. Skipping the - // error here will help reduce log clutter. - if err != io.EOF { - s.mu.Lock() - s.errorf("ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) - s.mu.Unlock() - channelz.Warningf(logger, s.channelzID, "grpc: Server.Serve failed to complete security handshake from %q: %v", rawConn.RemoteAddr(), err) - } - rawConn.Close() - } - rawConn.SetDeadline(time.Time{}) - return - } // Finish handshaking (HTTP2) - st := s.newHTTP2Transport(conn, authInfo) + st := s.newHTTP2Transport(rawConn) + rawConn.SetDeadline(time.Time{}) if st == nil { - conn.Close() return } - rawConn.SetDeadline(time.Time{}) if !s.addConn(lisAddr, st) { return } @@ -888,10 +860,11 @@ func (s *Server) drainServerTransports(addr string) { // newHTTP2Transport sets up a http/2 transport (using the // gRPC http2 server transport in transport/http2_server.go). -func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) transport.ServerTransport { +func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { config := &transport.ServerConfig{ MaxStreams: s.opts.maxConcurrentStreams, - AuthInfo: authInfo, + ConnectionTimeout: s.opts.connectionTimeout, + Credentials: s.opts.creds, InTapHandle: s.opts.inTapHandle, StatsHandler: s.opts.statsHandler, KeepaliveParams: s.opts.keepaliveParams, @@ -909,8 +882,15 @@ func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) tr s.mu.Lock() s.errorf("NewServerTransport(%q) failed: %v", c.RemoteAddr(), err) s.mu.Unlock() - c.Close() - channelz.Warning(logger, s.channelzID, "grpc: Server.Serve failed to create ServerTransport: ", err) + // ErrConnDispatched means that the connection was dispatched away from + // gRPC; those connections should be left open. + if err != credentials.ErrConnDispatched { + // Don't log on ErrConnDispatched and io.EOF to prevent log spam. + if err != io.EOF { + channelz.Warning(logger, s.channelzID, "grpc: Server.Serve failed to create ServerTransport: ", err) + } + c.Close() + } return nil } @@ -1124,16 +1104,21 @@ func chainUnaryServerInterceptors(s *Server) { func chainUnaryInterceptors(interceptors []UnaryServerInterceptor) UnaryServerInterceptor { return func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (interface{}, error) { - var i int - var next UnaryHandler - next = func(ctx context.Context, req interface{}) (interface{}, error) { - if i == len(interceptors)-1 { - return interceptors[i](ctx, req, info, handler) + // the struct ensures the variables are allocated together, rather than separately, since we + // know they should be garbage collected together. This saves 1 allocation and decreases + // time/call by about 10% on the microbenchmark. + var state struct { + i int + next UnaryHandler + } + state.next = func(ctx context.Context, req interface{}) (interface{}, error) { + if state.i == len(interceptors)-1 { + return interceptors[state.i](ctx, req, info, handler) } - i++ - return interceptors[i-1](ctx, req, info, next) + state.i++ + return interceptors[state.i-1](ctx, req, info, state.next) } - return next(ctx, req) + return state.next(ctx, req) } } @@ -1409,16 +1394,21 @@ func chainStreamServerInterceptors(s *Server) { func chainStreamInterceptors(interceptors []StreamServerInterceptor) StreamServerInterceptor { return func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error { - var i int - var next StreamHandler - next = func(srv interface{}, ss ServerStream) error { - if i == len(interceptors)-1 { - return interceptors[i](srv, ss, info, handler) + // the struct ensures the variables are allocated together, rather than separately, since we + // know they should be garbage collected together. This saves 1 allocation and decreases + // time/call by about 10% on the microbenchmark. + var state struct { + i int + next StreamHandler + } + state.next = func(srv interface{}, ss ServerStream) error { + if state.i == len(interceptors)-1 { + return interceptors[state.i](srv, ss, info, handler) } - i++ - return interceptors[i-1](srv, ss, info, next) + state.i++ + return interceptors[state.i-1](srv, ss, info, state.next) } - return next(srv, ss) + return state.next(srv, ss) } } diff --git a/vendor/google.golang.org/grpc/stats/stats.go b/vendor/google.golang.org/grpc/stats/stats.go index a5ebeeb693..0285dcc6a2 100644 --- a/vendor/google.golang.org/grpc/stats/stats.go +++ b/vendor/google.golang.org/grpc/stats/stats.go @@ -36,12 +36,12 @@ type RPCStats interface { IsClient() bool } -// Begin contains stats when an RPC begins. +// Begin contains stats when an RPC attempt begins. // FailFast is only valid if this Begin is from client side. type Begin struct { // Client is true if this Begin is from client side. Client bool - // BeginTime is the time when the RPC begins. + // BeginTime is the time when the RPC attempt begins. BeginTime time.Time // FailFast indicates if this RPC is failfast. FailFast bool @@ -49,6 +49,9 @@ type Begin struct { IsClientStream bool // IsServerStream indicates whether the RPC is a server streaming RPC. IsServerStream bool + // IsTransparentRetryAttempt indicates whether this attempt was initiated + // due to transparently retrying a previous attempt. + IsTransparentRetryAttempt bool } // IsClient indicates if the stats information is from client side. diff --git a/vendor/google.golang.org/grpc/status/status.go b/vendor/google.golang.org/grpc/status/status.go index 54d187186b..6d163b6e38 100644 --- a/vendor/google.golang.org/grpc/status/status.go +++ b/vendor/google.golang.org/grpc/status/status.go @@ -29,6 +29,7 @@ package status import ( "context" + "errors" "fmt" spb "google.golang.org/genproto/googleapis/rpc/status" @@ -73,11 +74,16 @@ func FromProto(s *spb.Status) *Status { return status.FromProto(s) } -// FromError returns a Status representing err if it was produced by this -// package or has a method `GRPCStatus() *Status`. -// If err is nil, a Status is returned with codes.OK and no message. -// Otherwise, ok is false and a Status is returned with codes.Unknown and -// the original error message. +// FromError returns a Status representation of err. +// +// - If err was produced by this package or implements the method `GRPCStatus() +// *Status`, the appropriate Status is returned. +// +// - If err is nil, a Status is returned with codes.OK and no message. +// +// - Otherwise, err is an error not compatible with this package. In this +// case, a Status is returned with codes.Unknown and err's Error() message, +// and ok is false. func FromError(err error) (s *Status, ok bool) { if err == nil { return nil, true @@ -112,18 +118,18 @@ func Code(err error) codes.Code { return codes.Unknown } -// FromContextError converts a context error into a Status. It returns a -// Status with codes.OK if err is nil, or a Status with codes.Unknown if err is -// non-nil and not a context error. +// FromContextError converts a context error or wrapped context error into a +// Status. It returns a Status with codes.OK if err is nil, or a Status with +// codes.Unknown if err is non-nil and not a context error. func FromContextError(err error) *Status { - switch err { - case nil: + if err == nil { return nil - case context.DeadlineExceeded: + } + if errors.Is(err, context.DeadlineExceeded) { return New(codes.DeadlineExceeded, err.Error()) - case context.Canceled: + } + if errors.Is(err, context.Canceled) { return New(codes.Canceled, err.Error()) - default: - return New(codes.Unknown, err.Error()) } + return New(codes.Unknown, err.Error()) } diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index e224af12d2..625d47b34e 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -274,35 +274,6 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client if c.creds != nil { callHdr.Creds = c.creds } - var trInfo *traceInfo - if EnableTracing { - trInfo = &traceInfo{ - tr: trace.New("grpc.Sent."+methodFamily(method), method), - firstLine: firstLine{ - client: true, - }, - } - if deadline, ok := ctx.Deadline(); ok { - trInfo.firstLine.deadline = time.Until(deadline) - } - trInfo.tr.LazyLog(&trInfo.firstLine, false) - ctx = trace.NewContext(ctx, trInfo.tr) - } - ctx = newContextWithRPCInfo(ctx, c.failFast, c.codec, cp, comp) - sh := cc.dopts.copts.StatsHandler - var beginTime time.Time - if sh != nil { - ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: c.failFast}) - beginTime = time.Now() - begin := &stats.Begin{ - Client: true, - BeginTime: beginTime, - FailFast: c.failFast, - IsClientStream: desc.ClientStreams, - IsServerStream: desc.ServerStreams, - } - sh.HandleRPC(ctx, begin) - } cs := &clientStream{ callHdr: callHdr, @@ -316,7 +287,6 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client cp: cp, comp: comp, cancel: cancel, - beginTime: beginTime, firstAttempt: true, onCommit: onCommit, } @@ -325,9 +295,7 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client } cs.binlog = binarylog.GetMethodLogger(method) - // Only this initial attempt has stats/tracing. - // TODO(dfawley): move to newAttempt when per-attempt stats are implemented. - if err := cs.newAttemptLocked(sh, trInfo); err != nil { + if err := cs.newAttemptLocked(false /* isTransparent */); err != nil { cs.finish(err) return nil, err } @@ -375,8 +343,43 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client // newAttemptLocked creates a new attempt with a transport. // If it succeeds, then it replaces clientStream's attempt with this new attempt. -func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (retErr error) { +func (cs *clientStream) newAttemptLocked(isTransparent bool) (retErr error) { + ctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.cp, cs.comp) + method := cs.callHdr.Method + sh := cs.cc.dopts.copts.StatsHandler + var beginTime time.Time + if sh != nil { + ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast}) + beginTime = time.Now() + begin := &stats.Begin{ + Client: true, + BeginTime: beginTime, + FailFast: cs.callInfo.failFast, + IsClientStream: cs.desc.ClientStreams, + IsServerStream: cs.desc.ServerStreams, + IsTransparentRetryAttempt: isTransparent, + } + sh.HandleRPC(ctx, begin) + } + + var trInfo *traceInfo + if EnableTracing { + trInfo = &traceInfo{ + tr: trace.New("grpc.Sent."+methodFamily(method), method), + firstLine: firstLine{ + client: true, + }, + } + if deadline, ok := ctx.Deadline(); ok { + trInfo.firstLine.deadline = time.Until(deadline) + } + trInfo.tr.LazyLog(&trInfo.firstLine, false) + ctx = trace.NewContext(ctx, trInfo.tr) + } + newAttempt := &csAttempt{ + ctx: ctx, + beginTime: beginTime, cs: cs, dc: cs.cc.dopts.dc, statsHandler: sh, @@ -391,15 +394,14 @@ func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (r } }() - if err := cs.ctx.Err(); err != nil { + if err := ctx.Err(); err != nil { return toRPCErr(err) } - ctx := cs.ctx if cs.cc.parsedTarget.Scheme == "xds" { // Add extra metadata (metadata that will be added by transport) to context // so the balancer can see them. - ctx = grpcutil.WithExtraMetadata(cs.ctx, metadata.Pairs( + ctx = grpcutil.WithExtraMetadata(ctx, metadata.Pairs( "content-type", grpcutil.ContentType(cs.callHdr.ContentSubtype), )) } @@ -419,7 +421,7 @@ func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (r func (a *csAttempt) newStream() error { cs := a.cs cs.callHdr.PreviousAttempts = cs.numRetries - s, err := a.t.NewStream(cs.ctx, cs.callHdr) + s, err := a.t.NewStream(a.ctx, cs.callHdr) if err != nil { // Return without converting to an RPC error so retry code can // inspect. @@ -444,8 +446,7 @@ type clientStream struct { cancel context.CancelFunc // cancels all attempts - sentLast bool // sent an end stream - beginTime time.Time + sentLast bool // sent an end stream methodConfig *MethodConfig @@ -485,6 +486,7 @@ type clientStream struct { // csAttempt implements a single transport stream attempt within a // clientStream. type csAttempt struct { + ctx context.Context cs *clientStream t transport.ClientTransport s *transport.Stream @@ -503,6 +505,7 @@ type csAttempt struct { trInfo *traceInfo statsHandler stats.Handler + beginTime time.Time } func (cs *clientStream) commitAttemptLocked() { @@ -520,15 +523,16 @@ func (cs *clientStream) commitAttempt() { } // shouldRetry returns nil if the RPC should be retried; otherwise it returns -// the error that should be returned by the operation. -func (cs *clientStream) shouldRetry(err error) error { +// the error that should be returned by the operation. If the RPC should be +// retried, the bool indicates whether it is being retried transparently. +func (cs *clientStream) shouldRetry(err error) (bool, error) { if cs.attempt.s == nil { // Error from NewClientStream. nse, ok := err.(*transport.NewStreamError) if !ok { // Unexpected, but assume no I/O was performed and the RPC is not // fatal, so retry indefinitely. - return nil + return true, nil } // Unwrap and convert error. @@ -537,19 +541,19 @@ func (cs *clientStream) shouldRetry(err error) error { // Never retry DoNotRetry errors, which indicate the RPC should not be // retried due to max header list size violation, etc. if nse.DoNotRetry { - return err + return false, err } // In the event of a non-IO operation error from NewStream, we never // attempted to write anything to the wire, so we can retry // indefinitely. - if !nse.PerformedIO { - return nil + if !nse.DoNotTransparentRetry { + return true, nil } } if cs.finished || cs.committed { // RPC is finished or committed; cannot retry. - return err + return false, err } // Wait for the trailers. unprocessed := false @@ -559,17 +563,17 @@ func (cs *clientStream) shouldRetry(err error) error { } if cs.firstAttempt && unprocessed { // First attempt, stream unprocessed: transparently retry. - return nil + return true, nil } if cs.cc.dopts.disableRetry { - return err + return false, err } pushback := 0 hasPushback := false if cs.attempt.s != nil { if !cs.attempt.s.TrailersOnly() { - return err + return false, err } // TODO(retry): Move down if the spec changes to not check server pushback @@ -580,13 +584,13 @@ func (cs *clientStream) shouldRetry(err error) error { if pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 { channelz.Infof(logger, cs.cc.channelzID, "Server retry pushback specified to abort (%q).", sps[0]) cs.retryThrottler.throttle() // This counts as a failure for throttling. - return err + return false, err } hasPushback = true } else if len(sps) > 1 { channelz.Warningf(logger, cs.cc.channelzID, "Server retry pushback specified multiple values (%q); not retrying.", sps) cs.retryThrottler.throttle() // This counts as a failure for throttling. - return err + return false, err } } @@ -599,16 +603,16 @@ func (cs *clientStream) shouldRetry(err error) error { rp := cs.methodConfig.RetryPolicy if rp == nil || !rp.RetryableStatusCodes[code] { - return err + return false, err } // Note: the ordering here is important; we count this as a failure // only if the code matched a retryable code. if cs.retryThrottler.throttle() { - return err + return false, err } if cs.numRetries+1 >= rp.MaxAttempts { - return err + return false, err } var dur time.Duration @@ -631,10 +635,10 @@ func (cs *clientStream) shouldRetry(err error) error { select { case <-t.C: cs.numRetries++ - return nil + return false, nil case <-cs.ctx.Done(): t.Stop() - return status.FromContextError(cs.ctx.Err()).Err() + return false, status.FromContextError(cs.ctx.Err()).Err() } } @@ -642,12 +646,13 @@ func (cs *clientStream) shouldRetry(err error) error { func (cs *clientStream) retryLocked(lastErr error) error { for { cs.attempt.finish(toRPCErr(lastErr)) - if err := cs.shouldRetry(lastErr); err != nil { + isTransparent, err := cs.shouldRetry(lastErr) + if err != nil { cs.commitAttemptLocked() return err } cs.firstAttempt = false - if err := cs.newAttemptLocked(nil, nil); err != nil { + if err := cs.newAttemptLocked(isTransparent); err != nil { return err } if lastErr = cs.replayBufferLocked(); lastErr == nil { @@ -937,7 +942,7 @@ func (a *csAttempt) sendMsg(m interface{}, hdr, payld, data []byte) error { return io.EOF } if a.statsHandler != nil { - a.statsHandler.HandleRPC(cs.ctx, outPayload(true, m, data, payld, time.Now())) + a.statsHandler.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now())) } if channelz.IsOn() { a.t.IncrMsgSent() @@ -985,7 +990,7 @@ func (a *csAttempt) recvMsg(m interface{}, payInfo *payloadInfo) (err error) { a.mu.Unlock() } if a.statsHandler != nil { - a.statsHandler.HandleRPC(cs.ctx, &stats.InPayload{ + a.statsHandler.HandleRPC(a.ctx, &stats.InPayload{ Client: true, RecvTime: time.Now(), Payload: m, @@ -1047,12 +1052,12 @@ func (a *csAttempt) finish(err error) { if a.statsHandler != nil { end := &stats.End{ Client: true, - BeginTime: a.cs.beginTime, + BeginTime: a.beginTime, EndTime: time.Now(), Trailer: tr, Error: err, } - a.statsHandler.HandleRPC(a.cs.ctx, end) + a.statsHandler.HandleRPC(a.ctx, end) } if a.trInfo != nil && a.trInfo.tr != nil { if err == nil { diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index e3510e10f1..8ef0958797 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.40.0" +const Version = "1.43.0" diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh index 5eaa8b05d6..d923187a7b 100644 --- a/vendor/google.golang.org/grpc/vet.sh +++ b/vendor/google.golang.org/grpc/vet.sh @@ -89,10 +89,6 @@ not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go" # - Ensure all xds proto imports are renamed to *pb or *grpc. git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "' -# - Check imports that are illegal in appengine (until Go 1.11). -# TODO: Remove when we drop Go 1.10 support -go list -f {{.Dir}} ./... | xargs go run test/go_vet/vet.go - misspell -error . # - Check that generated proto files are up to date. diff --git a/vendor/modules.txt b/vendor/modules.txt index 43cb7192c2..aa31e08083 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -80,7 +80,7 @@ github.com/containerd/containerd/sys # github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe github.com/containerd/continuity/fs github.com/containerd/continuity/sysx -# github.com/cpuguy83/go-md2man/v2 v2.0.0 +# github.com/cpuguy83/go-md2man/v2 v2.0.1 github.com/cpuguy83/go-md2man/v2/md2man # github.com/creack/pty v1.1.15 ## explicit @@ -179,6 +179,9 @@ github.com/evanphx/json-patch/v5 github.com/form3tech-oss/jwt-go # github.com/fsnotify/fsnotify v1.4.9 github.com/fsnotify/fsnotify +# github.com/gertd/go-pluralize v0.2.0 +## explicit +github.com/gertd/go-pluralize # github.com/ghodss/yaml v1.0.0 ## explicit github.com/ghodss/yaml @@ -229,6 +232,8 @@ github.com/gorilla/mux # github.com/gorilla/websocket v1.4.2 ## explicit github.com/gorilla/websocket +# github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 +github.com/iancoleman/orderedmap # github.com/imdario/mergo v0.3.12 github.com/imdario/mergo # github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf @@ -238,6 +243,9 @@ github.com/inconshreveable/go-update/internal/binarydist github.com/inconshreveable/go-update/internal/osext # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap +# github.com/invopop/jsonschema v0.3.0 +## explicit +github.com/invopop/jsonschema # github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 github.com/jbenet/go-context/io # github.com/jessevdk/go-flags v1.4.0 @@ -366,7 +374,7 @@ github.com/otiai10/copy # github.com/pkg/errors v0.9.1 ## explicit github.com/pkg/errors -# github.com/pkg/sftp v1.10.1 +# github.com/pkg/sftp v1.13.1 ## explicit github.com/pkg/sftp # github.com/prometheus/client_golang v1.11.0 @@ -386,22 +394,20 @@ github.com/prometheus/procfs/internal/util # github.com/rhysd/go-github-selfupdate v0.0.0-20180520142321-41c1bbb0804a ## explicit github.com/rhysd/go-github-selfupdate/selfupdate -# github.com/russross/blackfriday/v2 v2.0.1 +# github.com/russross/blackfriday/v2 v2.1.0 github.com/russross/blackfriday/v2 # github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 ## explicit github.com/sabhiram/go-gitignore # github.com/sergi/go-diff v1.1.0 github.com/sergi/go-diff/diffmatchpatch -# github.com/shurcooL/sanitized_anchor_name v1.0.0 -github.com/shurcooL/sanitized_anchor_name # github.com/sirupsen/logrus v1.8.1 ## explicit github.com/sirupsen/logrus # github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c ## explicit github.com/skratchdot/open-golang/open -# github.com/spf13/cobra v1.2.1 +# github.com/spf13/cobra v1.4.0 ## explicit github.com/spf13/cobra github.com/spf13/cobra/doc @@ -542,7 +548,7 @@ google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch # google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.40.0 +# google.golang.org/grpc v1.43.0 ## explicit google.golang.org/grpc google.golang.org/grpc/attributes @@ -555,6 +561,7 @@ google.golang.org/grpc/binarylog/grpc_binarylog_v1 google.golang.org/grpc/codes google.golang.org/grpc/connectivity google.golang.org/grpc/credentials +google.golang.org/grpc/credentials/insecure google.golang.org/grpc/encoding google.golang.org/grpc/encoding/proto google.golang.org/grpc/grpclog