From 19435f514728e11862127df1d00279d477642946 Mon Sep 17 00:00:00 2001 From: popcorny Date: Fri, 20 Dec 2024 11:21:12 +0800 Subject: [PATCH 1/2] Update the state file for save function Signed-off-by: popcorny --- docs/docs/features/state-file.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/docs/features/state-file.md b/docs/docs/features/state-file.md index 749e3b05..7a82b620 100644 --- a/docs/docs/features/state-file.md +++ b/docs/docs/features/state-file.md @@ -18,8 +18,8 @@ In the PR review process, the state file can serve as a medium of communication ### Create a State File for Review +- **Save from Web UI**: Click the **Save** button at the top of the app to save the file in the directory where you run Recce. - **Export from Web UI**: To export the current Recce state, you can use the **Export** button located in the top right corner of the Web UI to export the state to a file. - - **Output of the Recce Run**: A more mature dbt project may have a CI/CD process in place where dbt transformations are run, and the results are placed in a PR-specific environment. In such cases, you can integrate [recce run](./recce-run.md) in your automation workflow, making it convenient for reviewers to audit the results to determine whether the merge can proceed. @@ -44,13 +44,21 @@ In this mode, the Recce instance won't use the dbt artifacts inside `target` and ![State File For Development](../../assets/images/features/state-file-dev.png) -When running the Recce server, you can specify an additional file argument -``` -recce server recce_issue_1.json -``` +When running the Recce server, you have the following options: + +1. Run without specifying a state file: + ``` + recce server + ``` + In this case, you can choose to save the state to a file if you decide it should be stored. +1. Run with a specified state file: + ``` + recce server recce_issue_1.json + ``` + If the specified file exists, Recce will use it as the initial state. Otherwise, Recce will create a new one. -If this file exists, Recce will use it as the initial state. If it doesn't exist, Recce will create a new one. When the server is terminated, the final state will be written into this file. +When the server is terminated, the final state will be written to the specified file. ## Recce Cloud From b022927dd88106da357e20c53283a039c299dca5 Mon Sep 17 00:00:00 2001 From: popcorny Date: Fri, 20 Dec 2024 11:32:53 +0800 Subject: [PATCH 2/2] Update the doc for continue dev Signed-off-by: popcorny --- .../images/features/state-file-save.png | Bin 0 -> 86187 bytes docs/docs/features/state-file.md | 89 ++++++++++++------ docs/docs/guides/scenario-dev.md | 16 +++- docs/docs/guides/scenario-pr-review.md | 2 +- 4 files changed, 71 insertions(+), 36 deletions(-) create mode 100644 docs/assets/images/features/state-file-save.png diff --git a/docs/assets/images/features/state-file-save.png b/docs/assets/images/features/state-file-save.png new file mode 100644 index 0000000000000000000000000000000000000000..89c6a0b444ac3616f85f46698d6a82dd06d7016f GIT binary patch literal 86187 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

9iLd_kRhowhROl^7Odk^DbK&mh~oO{YbQQ!Wev} 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

@9-|lv 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 literal 0 HcmV?d00001 diff --git a/docs/docs/features/state-file.md b/docs/docs/features/state-file.md index 7a82b620..19ff7346 100644 --- a/docs/docs/features/state-file.md +++ b/docs/docs/features/state-file.md @@ -5,60 +5,89 @@ icon: material/file ## Introduction -The state file is the serialized state of a recce instance. There are two scenarios where we need to export the state file: +The state file represents the serialized state of a Recce instance. It is a JSON-formatted file containing the following information: -- [PR Review](#pr-review): We can include the state file in the PR Review Comment. If the reviewer wants to further connect to the PR environment, they can use this file to see the final results and perform deeper audits. -- [Development](#development): During development, we often need to save the state and even switch between different branches for development. +- **Checks**: Data from the checks added to the checklist on the Checklist page. +- **Runs**: Each diff execution in Recce corresponds to a run, similar to a query in a data warehouse. Typically, a single run submits a series of queries to the warehouse and retrieves the final results. +- **Environment Artifacts**: Includes `manifest.json` and `catalog.json` files for both the base and current environments. +- **Runtime Information**: Metadata such as Git branch details and pull request (PR) information from the CI runner. -## PR Review +## How to Save the State File -In the PR review process, the state file can serve as a medium of communication between the submitter and the reviewer. +There are multiple ways to save the state file. -![State File For PR Review](../../assets/images/features/state-file-pr.png) +1. **Save from the Web UI**: Click the **Save** button at the top of the app. Recce will continuously write updates to the state file, effectively working like an auto-save feature, and persist the state until the Recce instance is closed. The file is saved with the specified filename in the directory where the recce server command is run. + +1. **Export from the Web UI**: Click the **Export** button located in the top-right corner to download the current Recce state to any location on your machine. + ![](../../assets/images/features/state-file-save.png){: .shadow} -### Create a State File for Review +1. **Start Recce from a State File**: You can provide a state file as an argument when launching Recce. If the file does not exist, Recce will create a state file and start with an empty state. If the file exists, Recce will load the state and continue working from it. + ``` + recce server my_recce_state.json + ``` -- **Save from Web UI**: Click the **Save** button at the top of the app to save the file in the directory where you run Recce. -- **Export from Web UI**: To export the current Recce state, you can use the **Export** button located in the top right corner of the Web UI to export the state to a file. -- **Output of the Recce Run**: - A more mature dbt project may have a CI/CD process in place where dbt transformations are run, and the results are placed in a PR-specific environment. In such cases, you can integrate [recce run](./recce-run.md) in your automation workflow, making it convenient for reviewers to audit the results to determine whether the merge can proceed. +1. **Use the `run` Command**: For more complex dbt projects with a CI/CD process, where dbt transformations are executed and results are placed in a PR-specific environment, you can integrate the [recce run](./recce-run.md) command into your workflow. This allows reviewers to easily audit results and decide whether a merge can proceed. + ``` + # create state file at recce_state.json + recce run + ``` -### What's in the State File -- **Checks**: These are the data from the checks that have been added to the checklist on the Checks page. -- **Runs**: Each execution in Recce represents a run, analogous to a query in the warehouse. However, typically, a single run may submit series of queries in the warehouse and get the final run result. -- **Environments' Artifacts**: The base and current environments' `manifest.json` and `catalog.json`. -- **Runtime Information**: Such as git branch information, PR information in the CI runner. +## How to Use the State File -### Review the State File +The state file can be used in several ways: -To review a PR, you can download the corresponding state file and open the file with additional `--review` option. +1. **Continue the state**: Launch Recce with the specified state file. + ``` + recce server my_recce_state.json + ``` +1. **Review the state**: Running Recce with the `--review` option enables review mode. In this mode, Recce uses the dbt artifacts in the state file instead of those in the `target/` and `target-base/` directories. This option is useful for distinguishing between development and review purposes. + ``` + recce server --review my_recce_state.json + ``` +1. **Import checklist from file**: To preserve favorite checks across different branches, you can import a checklist by clicking the **Import** button at the top of the checklist. +1. **Continue the state from `recce run`**: This will execute the checks in the specified state file. + ``` + recce run --state-file my_recce_state.json + ``` -``` -recce server --review recce_state.json -``` +## Scenario: Development -In this mode, the Recce instance won't use the dbt artifacts inside `target` and `target-base`. Instead, it will use the artifacts from the Recce state file. +In the development workflow, the state file acts as a session for developing a feature. It allows you to store checks to verify the diff results against the base environment. -## Development +Common development workflow: + +1. Run the recce server without a state file. + ``` + recce server + ``` +1. Add checks to the checklist. +1. Save the state by clicking the **Save** or **Export** button. +1. Resume your session by launching Recce with the specific state file. + ``` + recce server recce_issue_1.json + ``` ![State File For Development](../../assets/images/features/state-file-dev.png) +## Scenario: PR Review -When running the Recce server, you have the following options: +During the PR review process, the state file serves as a communication medium between the submitter and the reviewer. -1. Run without specifying a state file: +1. Start the Recce server without a state file. ``` recce server ``` - In this case, you can choose to save the state to a file if you decide it should be stored. -1. Run with a specified state file: +1. Add checks to the checklist. +1. Save the state by clicking the **Save** or **Export** button. +1. Share the state file with the reviewer or attach it as a comment in the pull request. +1. The reviewer reviews the results using the state file + ``` - recce server recce_issue_1.json + recce server --review recce_issue_1.json ``` - If the specified file exists, Recce will use it as the initial state. Otherwise, Recce will create a new one. -When the server is terminated, the final state will be written to the specified file. +![State File For PR Review](../../assets/images/features/state-file-pr.png) ## Recce Cloud diff --git a/docs/docs/guides/scenario-dev.md b/docs/docs/guides/scenario-dev.md index b4cc0eea..ddc487d8 100644 --- a/docs/docs/guides/scenario-dev.md +++ b/docs/docs/guides/scenario-dev.md @@ -95,15 +95,21 @@ ORDER BY Next, you can add this check to your [checklist](../features/checklist.md). After modifying your code each time, rerun this check until it meets your requirements. -## Store your data +## Save Your State -During development, we may inevitably switch branches. If you want to preserve the current state, you can use the [Export the state file](../features/state-file.md) for later loading. +Switching branches is often unavoidable during development. To preserve the current state for future use, save or export the [state file](../features/state-file.md). To resume the state, start the Recce server with the state file as an argument: - -Another technique is to specify the file directly when opening it. ``` recce server recce_issue_123.json ``` -When you close the Recce instance, it saves your current session to this file. The next time you open it using the same file, it will restore to the previous state. +![alt text](../../assets/images/features/state-file-save.png){: .shadow} + +## Import Checklist +You can import a checklist from a state file by following these steps: + +1. Go to the **Checklist** page. +1. Click the **Import** icon at the top of the checklist. +1. Select the state file you want to import. +This is particularly useful for preserving your favorite checks across different branches. diff --git a/docs/docs/guides/scenario-pr-review.md b/docs/docs/guides/scenario-pr-review.md index ea0ac05e..5b386300 100644 --- a/docs/docs/guides/scenario-pr-review.md +++ b/docs/docs/guides/scenario-pr-review.md @@ -41,7 +41,7 @@ If you want the reviewer to access your environment, you can also attach the [Re **As a Submitter** -1. Export the recce state file +1. Save or export the recce state file 2. Attach the state file into the PR comment **As a Reviewer**