docs: detailed workflow explanation
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									9d15b0038f
								
							
						
					
					
						commit
						6348a0807b
					
				
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							|  | @ -2,7 +2,11 @@ | |||
| 
 | ||||
| ## Quick Start | ||||
| 
 | ||||
| To register the sandbox executor, you need to run go-judge before running this program. | ||||
| To register the sandbox executor, you need to run [go-judge](https://github.com/criyle/go-judge) before running this program. | ||||
| 
 | ||||
| **Hint for `go-judge`:** `go build -o ./tmp/go-judge ./cmd/go-judge && ./tmp/go-judge -enable-grpc -enable-debug -enable-metrics` | ||||
| 
 | ||||
| Then you can check the functions of `joj3` with the `make test`. The cases used here are in `/examples`. | ||||
| 
 | ||||
| ```bash | ||||
| $ make test | ||||
|  | @ -49,13 +53,12 @@ pre-commit installed at .git/hooks/pre-commit | |||
| ``` | ||||
| 
 | ||||
| ## Models | ||||
| The program parses the TOML file to run multiple stages. | ||||
| 
 | ||||
| Each stage contains an executor and parser. | ||||
| The program parses the configuration file to run multiple stages. It can create an issue on Gitea to report the result of each stage after all stages are done. | ||||
| 
 | ||||
| Executor takes a `Cmd` and returns an `ExecutorResult`. | ||||
| Each stage contains an executor and parser. An executor just executes a command and returns the original result (stdout, stderr, output files). We can limit the time and memory used by each command in the executor. We run all kinds of commands in executors of different stages, including code formatting, static check, compilation, and execution. A parser takes the result and the configuration of the stage to parse the result and return the score and comment. e.g. If in the current stage, the executor runs a `clang-tidy` command, then we can use the clang-tidy parser in the configuration file to parse the stdout of the executor result and check whether some of the rules are followed. We can deduct the score and add some comments based on the result, and return the score and comment as the output of this stage. This stage ends here and the next stage starts. | ||||
| 
 | ||||
| Parser takes an `ExecutorResult` and its conf and returns a `ParserResult` and `bool` to indicate whether we should skip the rest stages. | ||||
| In codes, an executor takes a `Cmd` and returns an `ExecutorResult`, while a parser takes an `ExecutorResult` and its conf and returns a `ParserResult` and `bool` to indicate whether we should skip the rest stages. | ||||
| 
 | ||||
| ### `Cmd` | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user