Repository: PrefectHQ/prefect

Issue:
CLI: Update `prefect deploy` options to support a `--jv/job-variable` option 
### First check

- [X] I am a contributor to the Prefect codebase

### Description

In https://github.com/PrefectHQ/prefect/pull/12195/ we introduced a new option to `prefect deployment run` called `--jv/--job-variable` for providing job variables. This is out of sync with the `prefect`deploy` command's `--v/--variable` flag but the new flags are clearer to use. 



### Impact

If we migrate the command options on `prefect deploy` to use `--jv/--job-variable` we will remain consistent and improve the CLI interface's clarity. 

### Additional context

N/A


Discussion:

Resolving patch:
diff --git a/src/prefect/cli/deploy.py b/src/prefect/cli/deploy.py
--- a/src/prefect/cli/deploy.py
+++ b/src/prefect/cli/deploy.py
@@ -147,6 +147,12 @@ async def deploy(
         None,
         "-v",
         "--variable",
+        help=("DEPRECATED: Please use --jv/--job-variable for similar functionality "),
+    ),
+    job_variables: List[str] = typer.Option(
+        None,
+        "-jv",
+        "--job-variable",
         help=(
             "One or more job variable overrides for the work pool provided in the"
             " format of key=value string or a JSON object"
@@ -254,6 +260,25 @@ async def deploy(
             style="yellow",
         )
 
+    if variables is not None:
+        app.console.print(
+            generate_deprecation_message(
+                name="The `--variable` flag",
+                start_date="Mar 2024",
+                help=(
+                    "Please use the `--job-variable foo=bar` argument instead: `prefect"
+                    " deploy --job-variable`."
+                ),
+            ),
+            style="yellow",
+        )
+
+    if variables is None:
+        variables = list()
+    if job_variables is None:
+        job_variables = list()
+    job_variables.extend(variables)
+
     options = {
         "entrypoint": entrypoint,
         "flow_name": flow_name,
@@ -262,7 +287,7 @@ async def deploy(
         "tags": tags,
         "work_pool_name": work_pool_name,
         "work_queue_name": work_queue_name,
-        "variables": variables,
+        "variables": job_variables,
         "cron": cron,
         "interval": interval,
         "anchor_date": interval_anchor,


Test patch:
diff --git a/tests/cli/test_deploy.py b/tests/cli/test_deploy.py
--- a/tests/cli/test_deploy.py
+++ b/tests/cli/test_deploy.py
@@ -277,7 +277,7 @@ async def test_project_deploy(
             invoke_and_assert,
             command=(
                 "deploy ./flows/hello.py:my_flow -n test-name -p test-pool --version"
-                " 1.0.0 -v env=prod -t foo-bar"
+                " 1.0.0 -v env=prod -jv kind=single -t foo-bar"
             ),
             expected_code=0,
             # check for deprecation message
@@ -301,7 +301,7 @@ async def test_project_deploy(
         assert deployment.work_pool_name == "test-pool"
         assert deployment.version == "1.0.0"
         assert deployment.tags == ["foo-bar"]
-        assert deployment.infra_overrides == {"env": "prod"}
+        assert deployment.infra_overrides == {"env": "prod", "kind": "single"}
 
     async def test_project_deploy_with_no_deployment_file(
         self, project_dir, prefect_client