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:
@@ -68,7 +68,7 @@ jobs:
|
|||||||
- name: extension_workflow_rollout::rollout_workflows_to_extension::copy_workflow_files
|
- name: extension_workflow_rollout::rollout_workflows_to_extension::copy_workflow_files
|
||||||
run: |
|
run: |
|
||||||
mkdir -p extension/.github/workflows
|
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}
|
shell: bash -euxo pipefail {0}
|
||||||
- id: short-sha
|
- id: short-sha
|
||||||
name: extension_workflow_rollout::rollout_workflows_to_extension::get_short_sha
|
name: extension_workflow_rollout::rollout_workflows_to_extension::get_short_sha
|
||||||
|
|||||||
@@ -40,16 +40,29 @@ impl WorkflowFile {
|
|||||||
r#type: WorkflowType::Zed,
|
r#type: WorkflowType::Zed,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extension(f: fn() -> Workflow) -> WorkflowFile {
|
fn extension(f: fn() -> Workflow) -> WorkflowFile {
|
||||||
WorkflowFile {
|
WorkflowFile {
|
||||||
source: f,
|
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<()> {
|
fn generate_file(&self) -> Result<()> {
|
||||||
let workflow = (self.source)();
|
let workflow = (self.source)();
|
||||||
let workflow_folder = self.r#type.folder_path();
|
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
|
let workflow_name = workflow
|
||||||
.name
|
.name
|
||||||
.as_ref()
|
.as_ref()
|
||||||
@@ -72,9 +85,16 @@ impl WorkflowFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(PartialEq, Eq)]
|
||||||
enum WorkflowType {
|
enum WorkflowType {
|
||||||
|
/// Workflows living in the Zed repository
|
||||||
Zed,
|
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 {
|
impl WorkflowType {
|
||||||
@@ -85,7 +105,7 @@ impl WorkflowType {
|
|||||||
"# Rebuild with `cargo xtask workflows`.",
|
"# Rebuild with `cargo xtask workflows`.",
|
||||||
),
|
),
|
||||||
workflow_name,
|
workflow_name,
|
||||||
matches!(self, WorkflowType::Extensions)
|
(*self != WorkflowType::Zed)
|
||||||
.then_some(" within the Zed repository.")
|
.then_some(" within the Zed repository.")
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
)
|
)
|
||||||
@@ -94,7 +114,8 @@ impl WorkflowType {
|
|||||||
fn folder_path(&self) -> PathBuf {
|
fn folder_path(&self) -> PathBuf {
|
||||||
match self {
|
match self {
|
||||||
WorkflowType::Zed => PathBuf::from(".github/workflows"),
|
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() {
|
if !Path::new("crates/zed/").is_dir() {
|
||||||
anyhow::bail!("xtask workflows must be ran from the project root");
|
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 = [
|
let workflows = [
|
||||||
WorkflowFile::zed(danger::danger),
|
WorkflowFile::zed(danger::danger),
|
||||||
@@ -125,15 +144,10 @@ pub fn run_workflows(_: GenerateWorkflowArgs) -> Result<()> {
|
|||||||
WorkflowFile::zed(extension_workflow_rollout::extension_workflow_rollout),
|
WorkflowFile::zed(extension_workflow_rollout::extension_workflow_rollout),
|
||||||
/* workflows used for CI/CD in extension repositories */
|
/* workflows used for CI/CD in extension repositories */
|
||||||
WorkflowFile::extension(extensions::run_tests::run_tests),
|
WorkflowFile::extension(extensions::run_tests::run_tests),
|
||||||
WorkflowFile::extension(extensions::bump_version::bump_version),
|
WorkflowFile::extension_shared(extensions::bump_version::bump_version),
|
||||||
WorkflowFile::extension(extensions::release_version::release_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 {
|
for workflow_file in workflows {
|
||||||
workflow_file.generate_file()?;
|
workflow_file.generate_file()?;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ fn rollout_workflows_to_extension(fetch_repos_job: &NamedJob) -> NamedJob {
|
|||||||
fn copy_workflow_files() -> Step<Run> {
|
fn copy_workflow_files() -> Step<Run> {
|
||||||
named::bash(indoc! {r#"
|
named::bash(indoc! {r#"
|
||||||
mkdir -p extension/.github/workflows
|
mkdir -p extension/.github/workflows
|
||||||
cp zed/extensions/workflows/*.yml extension/.github/workflows/
|
cp zed/extensions/workflows/shared/*.yml extension/.github/workflows/
|
||||||
"#})
|
"#})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user