extension_ci: Move shared workflows into nested folder (#45828)

This makes the rollout as well as distinguishing this in the future
easier.

Release Notes:

- N/A
This commit is contained in:
Finn Evers
2025-12-29 17:44:47 +01:00
committed by GitHub
parent f53b01d5a2
commit fc89e19098
5 changed files with 29 additions and 15 deletions

View File

@@ -68,7 +68,7 @@ jobs:
- name: extension_workflow_rollout::rollout_workflows_to_extension::copy_workflow_files
run: |
mkdir -p extension/.github/workflows
cp zed/extensions/workflows/*.yml extension/.github/workflows/
cp zed/extensions/workflows/shared/*.yml extension/.github/workflows/
shell: bash -euxo pipefail {0}
- id: short-sha
name: extension_workflow_rollout::rollout_workflows_to_extension::get_short_sha

View File

@@ -40,16 +40,29 @@ impl WorkflowFile {
r#type: WorkflowType::Zed,
}
}
fn extension(f: fn() -> Workflow) -> WorkflowFile {
WorkflowFile {
source: f,
r#type: WorkflowType::Extensions,
r#type: WorkflowType::ExtensionCI,
}
}
fn extension_shared(f: fn() -> Workflow) -> WorkflowFile {
WorkflowFile {
source: f,
r#type: WorkflowType::ExtensionsShared,
}
}
fn generate_file(&self) -> Result<()> {
let workflow = (self.source)();
let workflow_folder = self.r#type.folder_path();
fs::create_dir_all(&workflow_folder).with_context(|| {
format!("Failed to create directory: {}", workflow_folder.display())
})?;
let workflow_name = workflow
.name
.as_ref()
@@ -72,9 +85,16 @@ impl WorkflowFile {
}
}
#[derive(PartialEq, Eq)]
enum WorkflowType {
/// Workflows living in the Zed repository
Zed,
Extensions,
/// Workflows living in the `zed-extensions/workflows` repository that are
/// required workflows for PRs to the extension organization
ExtensionCI,
/// Workflows living in each of the extensions to perform checks and version
/// bumps until a better, more centralized system for that is in place.
ExtensionsShared,
}
impl WorkflowType {
@@ -85,7 +105,7 @@ impl WorkflowType {
"# Rebuild with `cargo xtask workflows`.",
),
workflow_name,
matches!(self, WorkflowType::Extensions)
(*self != WorkflowType::Zed)
.then_some(" within the Zed repository.")
.unwrap_or_default(),
)
@@ -94,7 +114,8 @@ impl WorkflowType {
fn folder_path(&self) -> PathBuf {
match self {
WorkflowType::Zed => PathBuf::from(".github/workflows"),
WorkflowType::Extensions => PathBuf::from("extensions/workflows"),
WorkflowType::ExtensionCI => PathBuf::from("extensions/workflows"),
WorkflowType::ExtensionsShared => PathBuf::from("extensions/workflows/shared"),
}
}
}
@@ -103,8 +124,6 @@ pub fn run_workflows(_: GenerateWorkflowArgs) -> Result<()> {
if !Path::new("crates/zed/").is_dir() {
anyhow::bail!("xtask workflows must be ran from the project root");
}
let workflow_dir = Path::new(".github/workflows");
let extension_workflow_dir = Path::new("extensions/workflows");
let workflows = [
WorkflowFile::zed(danger::danger),
@@ -125,15 +144,10 @@ pub fn run_workflows(_: GenerateWorkflowArgs) -> Result<()> {
WorkflowFile::zed(extension_workflow_rollout::extension_workflow_rollout),
/* workflows used for CI/CD in extension repositories */
WorkflowFile::extension(extensions::run_tests::run_tests),
WorkflowFile::extension(extensions::bump_version::bump_version),
WorkflowFile::extension(extensions::release_version::release_version),
WorkflowFile::extension_shared(extensions::bump_version::bump_version),
WorkflowFile::extension_shared(extensions::release_version::release_version),
];
for directory in [&workflow_dir, &extension_workflow_dir] {
fs::create_dir_all(directory)
.with_context(|| format!("Failed to create directory: {}", directory.display()))?;
}
for workflow_file in workflows {
workflow_file.generate_file()?;
}

View File

@@ -89,7 +89,7 @@ fn rollout_workflows_to_extension(fetch_repos_job: &NamedJob) -> NamedJob {
fn copy_workflow_files() -> Step<Run> {
named::bash(indoc! {r#"
mkdir -p extension/.github/workflows
cp zed/extensions/workflows/*.yml extension/.github/workflows/
cp zed/extensions/workflows/shared/*.yml extension/.github/workflows/
"#})
}