compare_perf.rs

 1use gh_workflow::*;
 2
 3use crate::tasks::workflows::{
 4    runners,
 5    steps::{self, NamedJob, named, upload_artifact},
 6    vars::Input,
 7};
 8
 9/// Generates the danger.yml workflow
10pub fn compare_perf() -> Workflow {
11    let head = Input::string("head", None);
12    let base = Input::string("base", None);
13    let run_perf = run_perf(&base, &head);
14    named::workflow()
15        .on(Event::default().workflow_dispatch(
16            WorkflowDispatch::default()
17                .add_input(head.name, head.input())
18                .add_input(base.name, base.input()),
19        ))
20        .add_job(run_perf.name, run_perf.job)
21}
22
23pub fn run_perf(base: &Input, head: &Input) -> NamedJob {
24    fn echo_inputs(base: &Input, head: &Input) -> Step<Run> {
25        named::bash(&format!("echo {} {}", base.var(), head.var()))
26    }
27
28    fn create_results() -> Step<Run> {
29        named::bash("mkdir -p target; echo 'Perf is *much* better now' > target/results.md")
30    }
31
32    named::job(
33        Job::default()
34            .runs_on(runners::LINUX_SMALL)
35            .add_step(steps::checkout_repo())
36            .add_step(echo_inputs(base, head))
37            .add_step(create_results())
38            .add_step(upload_artifact("results.md", "target/results.md")),
39    )
40}