NAME
    gcloud workflows deploy - create or update a workflow

SYNOPSIS
    gcloud workflows deploy (WORKFLOW : --location=LOCATION) [--async]
        [--call-log-level=CALL_LOG_LEVEL; default="none"]
        [--description=DESCRIPTION]
        [--execution-history-level=EXECUTION_HISTORY_LEVEL; default="none"]
        [--labels=[KEY=VALUE,...]] [--service-account=SERVICE_ACCOUNT]
        [--source=SOURCE] [--tags=[KEY=VALUE,...]]
        [--clear-env-vars | --env-vars-file=FILE_PATH
          | --remove-env-vars=[KEY,...] | --set-env-vars=[KEY=VALUE,...]
          | --update-env-vars=[KEY=VALUE,...]] [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    Create or update a workflow.

EXAMPLES
    To deploy a workflow with source code myWorkflow.yaml on Workflows:

        $ gcloud workflows deploy my-workflow --source=myWorkflow.yaml

    You may also skip waiting for the operation to finish:

        $ gcloud workflows deploy my-workflow --source=myWorkflow.yaml \
            --async

    To specify a service account as the workflow identity:

        $ gcloud workflows deploy my-workflow --source=myWorkflow.yaml \
            --service-account=my-account@my-project.iam.gserviceaccount.com

POSITIONAL ARGUMENTS
     Workflow resource - Name of the workflow to deploy. The arguments in this
     group can be used to specify the attributes of this resource. (NOTE) Some
     attributes are not given arguments in this group but can be set in other
     ways.

     To set the project attribute:
      ◆ provide the argument workflow on the command line with a fully
        specified name;
      ◆ provide the argument --project on the command line;
      ◆ set the property core/project.

     This must be specified.

       WORKFLOW
          ID of the workflow or fully qualified identifier for the workflow.

          To set the workflow attribute:
          ▸ provide the argument workflow on the command line.

          This positional argument must be specified if any of the other
          arguments in this group are specified.

       --location=LOCATION
          Cloud location for the workflow. Alternatively, set the property
          [workflows/location].

          To set the location attribute:
          ▸ provide the argument workflow on the command line with a fully
            specified name;
          ▸ provide the argument --location on the command line;
          ▸ set the property workflows/location.

FLAGS
     --async
        Return immediately, without waiting for the operation in progress to
        complete.

     --call-log-level=CALL_LOG_LEVEL; default="none"
        Level of call logging to apply by default for the workflow.
        CALL_LOG_LEVEL must be one of:

         log-all-calls
            Log all calls to subworkflows or library functions and their
            results.
         log-errors-only
            Log when a call is stopped due to an exception.
         log-none
            Perform no call logging.
         none
            No logging level specified.

     --description=DESCRIPTION
        The description of the workflow to deploy.

     --execution-history-level=EXECUTION_HISTORY_LEVEL; default="none"
        Level of execution history to apply for the workflow.
        EXECUTION_HISTORY_LEVEL must be one of:

         execution-history-basic
            Enable basic execution history.
         execution-history-detailed
            Enable detailed execution history, including expected iterations
            and in-scope variable values.
         none
            No execution history level specified.

     --labels=[KEY=VALUE,...]
        List of label KEY=VALUE pairs to add.

        Keys must start with a lowercase character and contain only hyphens
        (-), underscores (_), lowercase characters, and numbers. Values must
        contain only hyphens (-), underscores (_), lowercase characters, and
        numbers.

     --service-account=SERVICE_ACCOUNT
        The service account that should be used as the workflow identity.
        "projects/PROJECT_ID/serviceAccounts/" prefix may be skipped from the
        full resource name, in that case "projects/-/serviceAccounts/" is
        prepended to the service account ID.

     --source=SOURCE
        Location of a workflow source code to deploy. Required on first
        deployment. Location needs to be defined as a path to a local file with
        the source code.

     --tags=[KEY=VALUE,...]
        List of tags KEY=VALUE pairs to bind. Each item must be expressed as
        "<tag-key-namespaced-name>=<tag-value-short-name>".

        Example: 123/environment=production,123/costCenter=marketing

     Flags to configure user-defined environment variables for a workflow.

         Keys can't be empty strings and can't start with `GOOGLE`
         or `WORKFLOWS`. We recommend that environment variable keys consist
         solely of uppercase letters, digits, and underscores (`_`), and that
         they don't begin with a digit. Consider prefixing your user-defined
         environment variables with a unique key to avoid conflicts with other
         variables.

         If your value contains commas, prefix the mapping with a different
         delimiter character enclosed between `^` (example 1). Use special
         characters in your shell with caution as they might not work as
         intended or need escaping (example 2 escapes a `$` in Bash).

         Example 1: --set-env-vars ^@^KEY1=ONE,VALUE,WITH,COMMAS@KEY2=VALUE2

         Example 2: --set-env-vars ^$^KEY1=VALUE1\$KEY2=VALUE,WITH,COMMAS,TOO

         A maximum of 20 user-defined environment variables can be defined.
         Each definition string (`KEY=value`) is limited to 4 KiB.
         All keys and values are converted to strings.

     At most one of these can be specified:

       --clear-env-vars
          Clears all user-defined environment variables previously set for the
          workflow.

          Example: gcloud workflows deploy ${workflow_name} --clear-env-vars

       --env-vars-file=FILE_PATH
          Sets environment variables for the workflow to those stored in a
          local YAML file at the given path. All existing environment variables
          are removed before the new environment variables are added.

          Example: gcloud workflows deploy ${workflow_name}
          --env-vars-file=/path/to/env_vars.yaml

          Inside env_vars.yaml:

          policy: global

          retry_count: 5 # Service converts this to string "5"

       --remove-env-vars=[KEY,...]
          Removes user-defined environment variables from a workflow based on a
          list of environment variable keys to be removed.

          Example: gcloud workflows deploy ${workflow_name} --remove-env-vars
          policy,retry_count...

       --set-env-vars=[KEY=VALUE,...]
          Sets environment variables for the workflow based on a
          comma-separated list of key-value pairs. Will overwrite a workflow's
          existing environment variables.

          Example: gcloud workflows deploy ${workflow_name} --set-env-vars
          policy=global,retry_count=5

       --update-env-vars=[KEY=VALUE,...]
          Updates existing or adds new user-defined environment variables based
          on a comma-separated list of key-value pairs.

          Example: gcloud workflows deploy ${workflow_name} --update-env-vars
          policy=regional,retry_count=2

GCLOUD WIDE FLAGS
    These flags are available to all commands: --access-token-file, --account,
    --billing-project, --configuration, --flags-file, --flatten, --format,
    --help, --impersonate-service-account, --log-http, --project, --quiet,
    --trace-token, --user-output-enabled, --verbosity.

    Run $ gcloud help for details.

NOTES
    This variant is also available:

        $ gcloud beta workflows deploy

