1use gh_workflow::*;
2
3use crate::tasks::workflows::{
4 runners::{self, Arch, Platform},
5 steps::{self, CommonJobConditions, NamedJob, named},
6 vars::{WorkflowInput, bundle_envs},
7};
8
9pub fn reupload_sentry_symbols() -> Workflow {
10 let tag = WorkflowInput::string("tag", None)
11 .description("Git tag to rebuild and upload symbols for (e.g. v0.200.0-pre)");
12
13 let jobs = [
14 upload_job(&tag, Platform::Linux, Arch::X86_64),
15 upload_job(&tag, Platform::Linux, Arch::AARCH64),
16 upload_job(&tag, Platform::Mac, Arch::X86_64),
17 upload_job(&tag, Platform::Mac, Arch::AARCH64),
18 upload_job(&tag, Platform::Windows, Arch::X86_64),
19 upload_job(&tag, Platform::Windows, Arch::AARCH64),
20 ];
21
22 let mut workflow = named::workflow()
23 .on(Event::default()
24 .workflow_dispatch(WorkflowDispatch::default().add_input(tag.name, tag.input())))
25 .add_env(("CARGO_TERM_COLOR", "always"))
26 .add_env(("RUST_BACKTRACE", "1"));
27
28 for job in jobs {
29 workflow = workflow.add_job(job.name, job.job);
30 }
31
32 workflow
33}
34
35fn upload_job(tag: &WorkflowInput, platform: Platform, arch: Arch) -> NamedJob {
36 fn upload_symbols_unix() -> Step<Run> {
37 named::bash("./script/upload-sentry-symbols --verify")
38 }
39
40 fn upload_symbols_windows() -> Step<Run> {
41 named::pwsh("./script/upload-sentry-symbols.ps1 -Verify")
42 }
43
44 let runner = match platform {
45 Platform::Linux => arch.linux_bundler(),
46 Platform::Mac => runners::MAC_DEFAULT,
47 Platform::Windows => runners::WINDOWS_DEFAULT,
48 };
49
50 let mut job = Job::default()
51 .runs_on(runner)
52 .timeout_minutes(60u32)
53 .with_repository_owner_guard()
54 .envs(bundle_envs(platform))
55 .add_step(steps::checkout_repo().with_ref(tag))
56 .add_step(steps::setup_sentry());
57
58 if platform == Platform::Linux {
59 job = steps::install_linux_dependencies(job);
60 }
61
62 job = match platform {
63 Platform::Windows => job.add_step(upload_symbols_windows()),
64 _ => job.add_step(upload_symbols_unix()),
65 };
66
67 NamedJob {
68 name: format!("upload_{platform}_{arch}"),
69 job,
70 }
71}