From 6f017f65b11d62481bf1e26143987da645fd8df7 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 13:33:37 +0200 Subject: [PATCH 01/10] expand jobs tagging --- .../MinaArtifactBookwormDevnetDevnet.dhall | 1 + ...inaArtifactBookwormDevnetDevnetArm64.dhall | 2 ++ .../MinaArtifactBookwormMainnetMainnet.dhall | 2 ++ .../MinaArtifactBullseyeBerkeleyDevnet.dhall | 2 ++ ...ctBullseyeBerkeleyDevnetInstrumented.dhall | 2 ++ ...MinaArtifactBullseyeBerkeleyLightnet.dhall | 9 +++++++++ .../MinaArtifactBullseyeDevnetDevnet.dhall | 2 ++ .../MinaArtifactBullseyeMainnetMainnet.dhall | 2 ++ .../MinaArtifactFocalBerkeleyDevnet.dhall | 10 ++++++++++ .../MinaArtifactFocalDevnetDevnet.dhall | 6 ++++-- .../MinaArtifactFocalMainnetMainnet.dhall | 2 ++ .../MinaArtifactJammyDevnetDevnet.dhall | 2 ++ .../MinaArtifactJammyMainnetMainnet.dhall | 2 ++ .../MinaArtifactNobleDevnetDevnet.dhall | 2 ++ .../MinaArtifactNobleDevnetDevnetArm64.dhall | 2 ++ .../MinaArtifactNobleMainnetMainnet.dhall | 2 ++ buildkite/src/Pipeline/Tag.dhall | 20 +++++++++++++++++++ 17 files changed, 68 insertions(+), 2 deletions(-) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall index 8568d017c9cc..7d37a0e47975 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall @@ -28,6 +28,7 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet ] , debVersion = DebianVersions.DebVersion.Bookworm , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall index f10877ffb065..19627ddd0c9e 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall @@ -31,6 +31,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Arm64 ] , debVersion = DebianVersions.DebVersion.Bookworm , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall index cab8f6bfc0fe..20d082d288e0 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall @@ -31,6 +31,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Stable + , PipelineTag.Type.Mainnet + , PipelineTag.Type.Amd64 ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall index 2bdd99eb1a2d..02d5f481df02 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall @@ -24,6 +24,8 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Docker , PipelineTag.Type.Rosetta + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall index d19bcb1c712a..0de8ccf863ae 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall @@ -23,6 +23,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall index 7551cb020390..5413f820f20c 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall @@ -6,10 +6,19 @@ let Artifacts = ../../Constants/Artifacts.dhall let Pipeline = ../../Pipeline/Dsl.dhall +let PipelineTag = ../../Pipeline/Tag.dhall + in Pipeline.build ( ArtifactPipelines.pipeline ArtifactPipelines.MinaBuildSpec::{ , artifacts = [ Artifacts.Type.Daemon, Artifacts.Type.LogProc ] , profile = Profiles.Type.Lightnet + , tags = + [ PipelineTag.Type.Long + , PipelineTag.Type.Release + , PipelineTag.Type.Docker + , PipelineTag.Type.Lightnet + , PipelineTag.Type.Amd64 + ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall index cb8857283fa8..25861c545720 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall @@ -25,6 +25,8 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Docker , PipelineTag.Type.Rosetta + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall index 415da4814e1e..605faf076a51 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall @@ -30,6 +30,8 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Stable , PipelineTag.Type.Rosetta + , PipelineTag.Type.Mainnet + , PipelineTag.Type.Amd64 ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall index 798cf2c354ae..edc7e455a29b 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall @@ -8,6 +8,8 @@ let Pipeline = ../../Pipeline/Dsl.dhall let PipelineScope = ../../Pipeline/Scope.dhall +let PipelineTag = ../../Pipeline/Tag.dhall + in Pipeline.build ( ArtifactPipelines.pipeline ArtifactPipelines.MinaBuildSpec::{ @@ -24,5 +26,13 @@ in Pipeline.build , scope = [ PipelineScope.Type.MainlineNightly, PipelineScope.Type.Release ] , debVersion = DebianVersions.DebVersion.Focal + , tags = + [ PipelineTag.Type.Long + , PipelineTag.Type.Release + , PipelineTag.Type.Docker + , PipelineTag.Type.Rosetta + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 + ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall index de06795a87f3..5d4bbc343820 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall @@ -6,12 +6,12 @@ let Artifacts = ../../Constants/Artifacts.dhall let Pipeline = ../../Pipeline/Dsl.dhall -let PipelineTag = ../../Pipeline/Tag.dhall - let PipelineScope = ../../Pipeline/Scope.dhall let Network = ../../Constants/Network.dhall +let PipelineTag = ../../Pipeline/Tag.dhall + in Pipeline.build ( ArtifactPipelines.pipeline ArtifactPipelines.MinaBuildSpec::{ @@ -31,6 +31,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] , debVersion = DebianVersions.DebVersion.Focal } diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall index 4202addec7e2..060ed6e52ee0 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall @@ -32,6 +32,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Stable + , PipelineTag.Type.Mainnet + , PipelineTag.Type.Amd64 ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall index d30ceeac1e2b..dba2e4195885 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall @@ -28,6 +28,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] , debVersion = DebianVersions.DebVersion.Jammy , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall index 9fa61949f23f..fbd790f40c98 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall @@ -31,6 +31,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Stable + , PipelineTag.Type.Mainnet + , PipelineTag.Type.Amd64 ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall index 83521742ea97..8fc68f261bd9 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall @@ -28,6 +28,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] , debVersion = DebianVersions.DebVersion.Noble , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall index 0cd580e71da5..bfe51a3d98ad 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall @@ -31,6 +31,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Devnet + , PipelineTag.Type.Arm64 ] , debVersion = DebianVersions.DebVersion.Noble , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall index 74e269aad77b..56c49d6f9be6 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall @@ -30,6 +30,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Mainnet + , PipelineTag.Type.Amd64 ] , debVersion = DebianVersions.DebVersion.Noble , profile = Profiles.Type.Mainnet diff --git a/buildkite/src/Pipeline/Tag.dhall b/buildkite/src/Pipeline/Tag.dhall index 83079b02d328..e61f8c76ee1b 100644 --- a/buildkite/src/Pipeline/Tag.dhall +++ b/buildkite/src/Pipeline/Tag.dhall @@ -22,6 +22,11 @@ let Tag | Hardfork | Promote | Rosetta + | Devnet + | Lightnet + | Arm64 + | Amd64 + | Mainnet > let toNatural @@ -42,6 +47,11 @@ let toNatural , Debian = 12 , Docker = 13 , Rosetta = 14 + , Devnet = 15 + , Lightnet = 16 + , Arm64 = 17 + , Amd64 = 18 + , Mainnet = 19 } tag @@ -80,6 +90,11 @@ let capitalName = , Docker = "Docker" , Debian = "Debian" , Rosetta = "Rosetta" + , Devnet = "Devnet" + , Lightnet = "Lightnet" + , Arm64 = "Arm64" + , Amd64 = "Amd64" + , Mainnet = "Mainnet" } tag @@ -100,6 +115,11 @@ let lowerName = , Docker = "docker" , Debian = "debian" , Rosetta = "rosetta" + , Devnet = "devnet" + , Lightnet = "lightnet" + , Arm64 = "arm64" + , Amd64 = "amd64" + , Mainnet = "mainnet" } tag From 87b387865ea00886322f4e5c9060ca570e056131 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 13:43:26 +0200 Subject: [PATCH 02/10] update index.js based on actual cloud function source --- frontend/ci-build-me/src/index.js | 79 ++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/frontend/ci-build-me/src/index.js b/frontend/ci-build-me/src/index.js index 57b51d600704..088587a63d8d 100644 --- a/frontend/ci-build-me/src/index.js +++ b/frontend/ci-build-me/src/index.js @@ -74,14 +74,13 @@ const handler = async (event, req) => { // and the comment contents is exactly the slug we are looking for req.body.comment.body == "!approved-for-mainnet" ) { - // TODO: Actually look at @MinaProtocol/stakeholder-reviewers team instead of hardcoding the users here + // TODO #7711: Actually look at @MinaProtocol/stakeholder-reviewers team instead of hardcoding the users here if ( + req.body.sender.login == "amc-ie" || req.body.sender.login == "bkase" || - req.body.sender.login == "dannywillems" || req.body.sender.login == "deepthiskumar" || req.body.sender.login == "georgeee" || - req.body.sender.login == "mrmr1993" || - req.body.sender.login == "nholland94" + req.body.sender.login == "dannywillems" ) { const prData = await getRequest(req.body.issue.pull_request.url); const buildkite = await runBuild( @@ -156,7 +155,7 @@ const handler = async (event, req) => { sender: req.body.sender, pull_request: prData.data, }, - "mina", + "mina-o-1-labs", {} ); return [buildkite]; @@ -203,6 +202,74 @@ const handler = async (event, req) => { } } + // Mina CI Debian Build section + else if ( + // we are creating the comment + req.body.action == "created" && + // and this is actually a pull request + req.body.issue.pull_request && + req.body.issue.pull_request.url && + // and the comment contents is exactly the slug we are looking for + req.body.comment.body == "!ci-debian-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + // and the comment author is part of the core team + if ( + orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 + ) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-build-debian", + {} + ); + return [buildkite]; + } else { + // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; + } + } + + // Mina CI Docker Build section + else if ( + // we are creating the comment + req.body.action == "created" && + // and this is actually a pull request + req.body.issue.pull_request && + req.body.issue.pull_request.url && + // and the comment contents is exactly the slug we are looking for + req.body.comment.body == "!ci-docker-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + // and the comment author is part of the core team + if ( + orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 + ) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-build-docker", + {} + ); + return [buildkite]; + } else { + // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; + } + } + else if ( // we are creating the comment req.body.action == "created" && @@ -284,4 +351,4 @@ exports.githubWebhookHandler = async (req, res) => { console.error(`HTTP 500: ${e.message}`); } } -}; +}; \ No newline at end of file From c7cdbb88c52bdd582784107c1d11f58d5be20242 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 14:40:13 +0200 Subject: [PATCH 03/10] add tag filters --- .../MinaArtifactBookwormDevnetDevnet.dhall | 1 + buildkite/src/Pipeline/TagFilter.dhall | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall index 7d37a0e47975..dfba5a2580a0 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall @@ -29,6 +29,7 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Docker , PipelineTag.Type.Devnet + , PipelineTag.Type.Amd64 ] , debVersion = DebianVersions.DebVersion.Bookworm , scope = diff --git a/buildkite/src/Pipeline/TagFilter.dhall b/buildkite/src/Pipeline/TagFilter.dhall index 1ac25524c6a6..4204268de0e0 100644 --- a/buildkite/src/Pipeline/TagFilter.dhall +++ b/buildkite/src/Pipeline/TagFilter.dhall @@ -17,6 +17,12 @@ let Filter | DebianBuild | DockerBuild | Rosetta + | DockerBuildDevnetArm64 + | DockerBuildDevnetAmd64 + | DockerBuildMainnetArm64 + | DockerBuildMainnetAmd64 + | DockerBuildLightnetArm64 + | DockerBuildLightnetAmd64 > let tags @@ -34,6 +40,18 @@ let tags , Release = [ Tag.Type.Release ] , Promote = [ Tag.Type.Promote ] , Rosetta = [ Tag.Type.Rosetta ] + , DockerBuildDevnetArm64 = + [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Arm64 ] + , DockerBuildDevnetAmd64 = + [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Amd64 ] + , DockerBuildMainnetArm64 = + [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Arm64 ] + , DockerBuildMainnetAmd64 = + [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Amd64 ] + , DockerBuildLightnetArm64 = + [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Arm64 ] + , DockerBuildLightnetAmd64 = + [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Amd64 ] } filter @@ -52,6 +70,12 @@ let show , DebianBuild = "DebianBuild" , DockerBuild = "DockerBuild" , Rosetta = "Rosetta" + , DockerBuildDevnetArm64 = "DockerBuildDevnetArm64" + , DockerBuildDevnetAmd64 = "DockerBuildDevnetAmd64" + , DockerBuildMainnetArm64 = "DockerBuildMainnetArm64" + , DockerBuildMainnetAmd64 = "DockerBuildMainnetAmd64" + , DockerBuildLightnetArm64 = "DockerBuildLightnetArm64" + , DockerBuildLightnetAmd64 = "DockerBuildLightnetAmd64" } filter From 50d07eadf9bbe6815f370db2c67c79371c256eb4 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 14:55:10 +0200 Subject: [PATCH 04/10] update index.js --- frontend/ci-build-me/src/index.js | 446 +++++++++++++++--------------- 1 file changed, 221 insertions(+), 225 deletions(-) diff --git a/frontend/ci-build-me/src/index.js b/frontend/ci-build-me/src/index.js index 088587a63d8d..de26954bfc49 100644 --- a/frontend/ci-build-me/src/index.js +++ b/frontend/ci-build-me/src/index.js @@ -62,249 +62,245 @@ const getRequest = async (url) => { return request; }; +const parseParams = (comment) => { + // comment looks like: "!ci-docker-me arch=amd64 profile=devnet" + const parts = comment.split(/\s+/).slice(1); // drop the "!ci-docker-me" + const params = {}; + for (const part of parts) { + const [key, value] = part.split("="); + if (key && value) { + params[key.trim()] = value.trim(); + } + } + return params; +}; + +const buildEnvFromParams = ({ arch, profile }) => { + if (!arch || !profile) { + return { BUILDKITE_PIPELINE_FILTER: "DockerBuild" }; + } + + const profiles = ["devnet", "lightnet", "mainnet"]; + const arches = ["amd64", "arm64"]; + + if (arches.includes(arch) && profiles.includes(profile)) { + const filter = + "DockerBuild" + + arch.charAt(0).toUpperCase() + arch.slice(1) + // Amd64 / Arm64 + profile.charAt(0).toUpperCase() + profile.slice(1); // Devnet / Lightnet / Mainnet + return { BUILDKITE_PIPELINE_FILTER: filter }; + } + + return { BUILDKITE_PIPELINE_FILTER: "DockerBuild" }; +}; +// ------------------- + const handler = async (event, req) => { const buildkiteTrigger = {}; // PR Gating Lifting section if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!approved-for-mainnet" + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!approved-for-mainnet" + ) { + if ( + req.body.sender.login == "amc-ie" || + req.body.sender.login == "bkase" || + req.body.sender.login == "deepthiskumar" || + req.body.sender.login == "georgeee" || + req.body.sender.login == "dannywillems" ) { - // TODO #7711: Actually look at @MinaProtocol/stakeholder-reviewers team instead of hardcoding the users here - if ( - req.body.sender.login == "amc-ie" || - req.body.sender.login == "bkase" || - req.body.sender.login == "deepthiskumar" || - req.body.sender.login == "georgeee" || - req.body.sender.login == "dannywillems" - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-pr-gating", - { PR_GATE: "lifted" } - ); - return buildkite; - } else { - return [ - "comment author is not authorized to approve for mainnet", - "comment author is not authorized to approve for mainnet", - ]; - } + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-pr-gating", + { PR_GATE: "lifted" } + ); + return buildkite; + } else { + return [ + "comment author is not authorized to approve for mainnet", + "comment author is not authorized to approve for mainnet", + ]; } + } - // Mina CI Build section (nix-based) - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-nix-me" - ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-nix-experimental", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + // Mina CI Build section (nix-based) + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!ci-nix-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if (orgData.data.filter((org) => org.login == "MinaProtocol").length > 0) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-nix-experimental", + {} + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } + } - // Mina CI Build section - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-build-me" + // Mina CI Build section + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!ci-build-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if ( + orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 || + req.body.sender.login == "ylecornec" || + req.body.sender.login == "balsoft" || + req.body.sender.login == "bryanhonof" ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-o-1-labs", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-o-1-labs", + {} + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } + } - // Mina CI Nightly Build section - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-nightly-me" - ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-end-to-end-nightlies", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + // Mina CI Nightly Build section + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!ci-nightly-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if (orgData.data.filter((org) => org.login == "MinaProtocol").length > 0) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-end-to-end-nightlies", + {} + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } + } - // Mina CI Debian Build section - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-debian-me" - ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-build-debian", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + // Mina CI Debian Build section + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!ci-debian-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if (orgData.data.filter((org) => org.login == "MinaProtocol").length > 0) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-build-debian", + {} + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } + } - // Mina CI Docker Build section - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-docker-me" - ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-build-docker", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body.startsWith("!ci-docker-me") + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if (orgData.data.filter((org) => org.login == "MinaProtocol").length > 0) { + const prData = await getRequest(req.body.issue.pull_request.url); + + const params = parseParams(req.body.comment.body); + const env = buildEnvFromParams(params); + + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-build-docker", + env + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } + } - else if ( - // we are creating the comment - req.body.action == "created" && - // and this is actually a pull request - req.body.issue.pull_request && - req.body.issue.pull_request.url && - // and the comment contents is exactly the slug we are looking for - req.body.comment.body == "!ci-toolchain-me" - ) { - const orgData = await getRequest(req.body.sender.organizations_url); - // and the comment author is part of the core team - if ( - orgData.data.filter((org) => org.login == "MinaProtocol").length > 0 - ) { - const prData = await getRequest(req.body.issue.pull_request.url); - const buildkite = await runBuild( - { - sender: req.body.sender, - pull_request: prData.data, - }, - "mina-toolchains-build", - {} - ); - return [buildkite]; - } else { - // NB: Users that are 'privately' a member of the org will not be able to trigger CI jobs - return [ - "comment author is not (publically) a member of the core team", - "comment author is not (publically) a member of the core team", - ]; - } + // Mina Toolchain Build section + else if ( + req.body.action == "created" && + req.body.issue.pull_request && + req.body.issue.pull_request.url && + req.body.comment.body == "!ci-toolchain-me" + ) { + const orgData = await getRequest(req.body.sender.organizations_url); + if (orgData.data.filter((org) => org.login == "MinaProtocol").length > 0) { + const prData = await getRequest(req.body.issue.pull_request.url); + const buildkite = await runBuild( + { + sender: req.body.sender, + pull_request: prData.data, + }, + "mina-toolchains-build", + {} + ); + return [buildkite]; + } else { + return [ + "comment author is not (publically) a member of the core team", + "comment author is not (publically) a member of the core team", + ]; } - - return null; - }; + } + + return null; +}; /** * HTTP Cloud Function for GitHub Webhook events. @@ -351,4 +347,4 @@ exports.githubWebhookHandler = async (req, res) => { console.error(`HTTP 500: ${e.message}`); } } -}; \ No newline at end of file +}; From 444a73ebee6e88aa6ecc6875f49a3d7582afccad Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 14:56:30 +0200 Subject: [PATCH 05/10] invert arch with profile --- buildkite/src/Pipeline/TagFilter.dhall | 36 +++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/buildkite/src/Pipeline/TagFilter.dhall b/buildkite/src/Pipeline/TagFilter.dhall index 4204268de0e0..5158a7cf669b 100644 --- a/buildkite/src/Pipeline/TagFilter.dhall +++ b/buildkite/src/Pipeline/TagFilter.dhall @@ -17,12 +17,12 @@ let Filter | DebianBuild | DockerBuild | Rosetta - | DockerBuildDevnetArm64 - | DockerBuildDevnetAmd64 - | DockerBuildMainnetArm64 - | DockerBuildMainnetAmd64 - | DockerBuildLightnetArm64 - | DockerBuildLightnetAmd64 + | DockerBuildArm64Devnet + | DockerBuildAmd64Devnet + | DockerBuildArm64Mainnet + | DockerBuildAmd64Mainnet + | DockerBuildArm64Lightnet + | DockerBuildAmd64Lightnet > let tags @@ -40,17 +40,17 @@ let tags , Release = [ Tag.Type.Release ] , Promote = [ Tag.Type.Promote ] , Rosetta = [ Tag.Type.Rosetta ] - , DockerBuildDevnetArm64 = + , DockerBuildArm64Devnet = [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Arm64 ] - , DockerBuildDevnetAmd64 = + , DockerBuildAmd64Devnet = [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Amd64 ] - , DockerBuildMainnetArm64 = + , DockerBuildArm64Mainnet = [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Arm64 ] - , DockerBuildMainnetAmd64 = + , DockerBuildAmd64Mainnet = [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Amd64 ] - , DockerBuildLightnetArm64 = + , DockerBuildArm64Lightnet = [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Arm64 ] - , DockerBuildLightnetAmd64 = + , DockerBuildAmd64Lightnet = [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Amd64 ] } filter @@ -70,12 +70,12 @@ let show , DebianBuild = "DebianBuild" , DockerBuild = "DockerBuild" , Rosetta = "Rosetta" - , DockerBuildDevnetArm64 = "DockerBuildDevnetArm64" - , DockerBuildDevnetAmd64 = "DockerBuildDevnetAmd64" - , DockerBuildMainnetArm64 = "DockerBuildMainnetArm64" - , DockerBuildMainnetAmd64 = "DockerBuildMainnetAmd64" - , DockerBuildLightnetArm64 = "DockerBuildLightnetArm64" - , DockerBuildLightnetAmd64 = "DockerBuildLightnetAmd64" + , DockerBuildArm64Devnet = "DockerBuildArm64Devnet" + , DockerBuildAmd64Devnet = "DockerBuildAmd64Devnet" + , DockerBuildArm64Mainnet = "DockerBuildArm64Mainnet" + , DockerBuildAmd64Mainnet = "DockerBuildAmd64Mainnet" + , DockerBuildArm64Lightnet = "DockerBuildArm64Lightnet" + , DockerBuildAmd64Lightnet = "DockerBuildAmd64Lightnet" } filter From 403cc6562a728c2dfe512ca9193170b3c244589f Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 18:45:48 +0200 Subject: [PATCH 06/10] introduce filter mode (all,any) which defining if we are matching any job tag or all job tags --- buildkite/src/Monorepo.dhall | 8 ++- buildkite/src/Pipeline/FilterMode.dhall | 8 +++ buildkite/src/Pipeline/Tag.dhall | 27 +++++++++- buildkite/src/Pipeline/TagTest.dhall | 70 +++++++++++++++++++++++++ buildkite/src/Prepare.dhall | 5 +- buildkite/unit-tests/parse_triage.py | 2 +- 6 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 buildkite/src/Pipeline/FilterMode.dhall create mode 100644 buildkite/src/Pipeline/TagTest.dhall diff --git a/buildkite/src/Monorepo.dhall b/buildkite/src/Monorepo.dhall index 75c0e988bb5c..d9556e387b6f 100644 --- a/buildkite/src/Monorepo.dhall +++ b/buildkite/src/Monorepo.dhall @@ -14,6 +14,8 @@ let JobSpec = ./Pipeline/JobSpec.dhall let Pipeline = ./Pipeline/Dsl.dhall +let PipelineFilterMode = ./Pipeline/FilterMode.dhall + let PipelineJobSelection = ./Pipeline/JobSelection.dhall let PipelineTagFilter = ./Pipeline/TagFilter.dhall @@ -46,10 +48,12 @@ let prefixCommands = let commands : PipelineJobSelection.Type -> PipelineTagFilter.Type + -> PipelineFilterMode.Type -> PipelineScopeFilter.Type -> List Cmd.Type = \(selection : PipelineJobSelection.Type) -> \(filter : PipelineTagFilter.Type) + -> \(filterMode : PipelineFilterMode.Type) -> \(scope : PipelineScopeFilter.Type) -> List/map JobSpec.Type @@ -61,7 +65,7 @@ let commands let isIncludedInTag = Prelude.Bool.show - (PipelineTag.contains job.tags targetTags) + (PipelineTag.contains job.tags targetTags filterMode) let targetScopes = PipelineScopeFilter.tags scope @@ -112,6 +116,7 @@ in \ ( args : { selection : PipelineJobSelection.Type , tagFilter : PipelineTagFilter.Type , scopeFilter : PipelineScopeFilter.Type + , filterMode : PipelineFilterMode.Type } ) -> let pipelineType = @@ -133,6 +138,7 @@ in \ ( args # commands args.selection args.tagFilter + args.filterMode args.scopeFilter , label = "Monorepo triage ${PipelineTagFilter.show diff --git a/buildkite/src/Pipeline/FilterMode.dhall b/buildkite/src/Pipeline/FilterMode.dhall new file mode 100644 index 000000000000..a360eb951ed9 --- /dev/null +++ b/buildkite/src/Pipeline/FilterMode.dhall @@ -0,0 +1,8 @@ +-- Mode defines pipeline filter fetch mode + +let Mode = < Any | All > + +in { Type = Mode + , any = \(mode : Mode) -> merge { Any = True, All = False } mode + , all = \(mode : Mode) -> merge { Any = False, All = True } mode + } diff --git a/buildkite/src/Pipeline/Tag.dhall b/buildkite/src/Pipeline/Tag.dhall index e61f8c76ee1b..cfa0ac701018 100644 --- a/buildkite/src/Pipeline/Tag.dhall +++ b/buildkite/src/Pipeline/Tag.dhall @@ -4,8 +4,12 @@ let Prelude = ../External/Prelude.dhall +let FilterMode = ./FilterMode.dhall + let List/any = Prelude.List.any +let List/all = Prelude.List.all + let Tag : Type = < Fast @@ -67,12 +71,31 @@ let hasAny -> \(tags : List Tag) -> List/any Tag (\(x : Tag) -> equal x input) tags -let contains +let hasAll + : List Tag -> List Tag -> Bool + = \(input : List Tag) + -> \(tags : List Tag) + -> List/all Tag (\(x : Tag) -> hasAny x tags) input == True + +let containsAll + : List Tag -> List Tag -> Bool + = \(input : List Tag) -> \(tags : List Tag) -> hasAll input tags + +let containsAny : List Tag -> List Tag -> Bool = \(input : List Tag) -> \(tags : List Tag) -> List/any Tag (\(x : Tag) -> hasAny x tags) input +let contains + : List Tag -> List Tag -> FilterMode.Type -> Bool + = \(input : List Tag) + -> \(tags : List Tag) + -> \(filterMode : FilterMode.Type) + -> merge + { Any = containsAny input tags, All = containsAll input tags } + filterMode + let capitalName = \(tag : Tag) -> merge @@ -129,5 +152,7 @@ in { Type = Tag , toNatural = toNatural , equal = equal , hasAny = hasAny + , containsAny = containsAny + , containsAll = containsAll , contains = contains } diff --git a/buildkite/src/Pipeline/TagTest.dhall b/buildkite/src/Pipeline/TagTest.dhall new file mode 100644 index 000000000000..f67e99e0039b --- /dev/null +++ b/buildkite/src/Pipeline/TagTest.dhall @@ -0,0 +1,70 @@ +-- filepath: /home/darek/work/minaprotocol/mina/buildkite/src/Pipeline/TagTest.dhall +let Tag = ./Tag.dhall + +let fastTag = Tag.Type.Fast + +let longTag = Tag.Type.Long + +let lintTag = Tag.Type.Lint + +let testTag = Tag.Type.Test + +let dockerTag = Tag.Type.Docker + +let emptyTagList = [] : List Tag.Type + +let testContainsAnyTrue = + assert : Tag.containsAny [ fastTag ] [ fastTag, longTag ] === True + +let testContainsAnyFalse = + assert : Tag.containsAny [ testTag ] [ fastTag, longTag ] === False + +let testContainsAnyMultipleTrue = + assert + : Tag.containsAny [ fastTag, testTag ] [ fastTag, longTag ] === True + +let testContainsAnyMultipleFalse = + assert + : Tag.containsAny [ testTag, dockerTag ] [ fastTag, longTag ] === False + +let testContainsAnyEmpty = + assert : Tag.containsAny emptyTagList [ fastTag, longTag ] === False + +let testContainsAnyAgainstEmpty = + assert : Tag.containsAny [ fastTag ] emptyTagList === False + +let testContainsAllTrue = + assert : Tag.containsAll [ fastTag ] [ fastTag, longTag ] === True + +let testContainsAllFalse = + assert + : Tag.containsAll [ fastTag, testTag ] [ fastTag, longTag ] === False + +let testContainsAllMultipleTrue = + assert + : Tag.containsAll [ fastTag, longTag ] [ fastTag, longTag, lintTag ] + === True + +let testContainsAllMultipleFalse = + assert + : Tag.containsAll [ fastTag, testTag ] [ fastTag, longTag ] === False + +let testContainsAllEmpty = + assert : Tag.containsAll emptyTagList [ fastTag, longTag ] === True + +let testContainsAllAgainstEmpty = + assert : Tag.containsAll [ fastTag ] emptyTagList === False + +in { testContainsAnyTrue = testContainsAnyTrue + , testContainsAnyFalse = testContainsAnyFalse + , testContainsAnyMultipleTrue = testContainsAnyMultipleTrue + , testContainsAnyMultipleFalse = testContainsAnyMultipleFalse + , testContainsAnyEmpty = testContainsAnyEmpty + , testContainsAnyAgainstEmpty = testContainsAnyAgainstEmpty + , testContainsAllTrue = testContainsAllTrue + , testContainsAllFalse = testContainsAllFalse + , testContainsAllMultipleTrue = testContainsAllMultipleTrue + , testContainsAllMultipleFalse = testContainsAllMultipleFalse + , testContainsAllEmpty = testContainsAllEmpty + , testContainsAllAgainstEmpty = testContainsAllAgainstEmpty + } diff --git a/buildkite/src/Prepare.dhall b/buildkite/src/Prepare.dhall index 0b77b179bb5a..b772c74f641a 100644 --- a/buildkite/src/Prepare.dhall +++ b/buildkite/src/Prepare.dhall @@ -23,6 +23,8 @@ let tagFilter = env:BUILDKITE_PIPELINE_FILTER as Text ? "FastOnly" let scopeFilter = env:BUILDKITE_PIPELINE_SCOPE as Text ? "All" +let filterMode = env:BUILDKITE_PIPELINE_FILTER_MODE as Text ? "Any" + let config : Pipeline.Config.Type = Pipeline.Config::{ @@ -38,10 +40,11 @@ let config , Cmd.run "export BUILDKITE_PIPELINE_JOB_SELECTION=${selection}" , Cmd.run "export BUILDKITE_PIPELINE_FILTER=${tagFilter}" , Cmd.run "export BUILDKITE_PIPELINE_SCOPE=${scopeFilter}" + , Cmd.run "export BUILDKITE_PIPELINE_FILTER_MODE=${filterMode}" , Cmd.run "./buildkite/scripts/generate-jobs.sh > buildkite/src/gen/Jobs.dhall" , Cmd.quietly - "dhall-to-yaml --quoted <<< '(./buildkite/src/Monorepo.dhall) { selection=(./buildkite/src/Pipeline/JobSelection.dhall).Type.${selection}, tagFilter=(./buildkite/src/Pipeline/TagFilter.dhall).Type.${tagFilter}, scopeFilter=(./buildkite/src/Pipeline/ScopeFilter.dhall).Type.${scopeFilter} }' | buildkite-agent pipeline upload" + "dhall-to-yaml --quoted <<< '(./buildkite/src/Monorepo.dhall) { selection=(./buildkite/src/Pipeline/JobSelection.dhall).Type.${selection}, tagFilter=(./buildkite/src/Pipeline/TagFilter.dhall).Type.${tagFilter}, scopeFilter=(./buildkite/src/Pipeline/ScopeFilter.dhall).Type.${scopeFilter}, filterMode=(./buildkite/src/Pipeline/FilterMode.dhall).Type.${filterMode} }' | buildkite-agent pipeline upload" ] , label = "Prepare monorepo triage" , key = "monorepo-${selection}-${tagFilter}-${scopeFilter}" diff --git a/buildkite/unit-tests/parse_triage.py b/buildkite/unit-tests/parse_triage.py index 330d9fd745e4..5026261b4f34 100755 --- a/buildkite/unit-tests/parse_triage.py +++ b/buildkite/unit-tests/parse_triage.py @@ -21,7 +21,7 @@ yaml_contents = [] for tag in tag_filters: - dhall_cmd = f"""dhall-to-yaml --quoted <<< '(./src/Monorepo.dhall) {{ selection=(./src/Pipeline/JobSelection.dhall).Type.Full, tagFilter=(./src/Pipeline/TagFilter.dhall).Type.{tag}, scopeFilter=(./src/Pipeline/ScopeFilter.dhall).Type.All }}'""" + dhall_cmd = f"""dhall-to-yaml --quoted <<< '(./src/Monorepo.dhall) {{ selection=(./src/Pipeline/JobSelection.dhall).Type.Full, tagFilter=(./src/Pipeline/TagFilter.dhall).Type.{tag}, filterMode=(./src/Pipeline/FilterMode.dhall).Type.Any, scopeFilter=(./src/Pipeline/ScopeFilter.dhall).Type.All }}'""" result = subprocess.run(dhall_cmd, shell=True, capture_output=True, text=True, executable="/bin/bash") if result.returncode != 0: print(f"Failed to generate YAML from dhall-to-yaml for tagFilter {tag}") From 1932deb1fb8eaa98a8b90feef0cc222d81029401 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 19:50:57 +0200 Subject: [PATCH 07/10] inverse collections --- buildkite/src/Monorepo.dhall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/src/Monorepo.dhall b/buildkite/src/Monorepo.dhall index d9556e387b6f..5202a034f5d3 100644 --- a/buildkite/src/Monorepo.dhall +++ b/buildkite/src/Monorepo.dhall @@ -65,7 +65,7 @@ let commands let isIncludedInTag = Prelude.Bool.show - (PipelineTag.contains job.tags targetTags filterMode) + (PipelineTag.contains targetTags job.tags filterMode) let targetScopes = PipelineScopeFilter.tags scope From 4c890564fb02fa5d24abbbf76681df24364640b1 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 20:27:23 +0200 Subject: [PATCH 08/10] added filter for codename as well --- .../MinaArtifactBookwormDevnetDevnet.dhall | 1 + ...inaArtifactBookwormDevnetDevnetArm64.dhall | 1 + ...naArtifactBookwormDevnetLegacyDevnet.dhall | 2 + ...ArtifactBookwormMainnetLegacyMainnet.dhall | 2 + .../MinaArtifactBookwormMainnetMainnet.dhall | 1 + .../MinaArtifactBullseyeBerkeleyDevnet.dhall | 1 + ...ctBullseyeBerkeleyDevnetInstrumented.dhall | 1 + ...MinaArtifactBullseyeBerkeleyLightnet.dhall | 1 + .../MinaArtifactBullseyeDevnetDevnet.dhall | 1 + ...naArtifactBullseyeDevnetLegacyDevnet.dhall | 2 + ...ArtifactBullseyeMainnetLegacyMainnet.dhall | 2 + .../MinaArtifactBullseyeMainnetMainnet.dhall | 1 + .../MinaArtifactFocalBerkeleyDevnet.dhall | 1 + .../MinaArtifactFocalDevnetDevnet.dhall | 1 + .../MinaArtifactFocalDevnetLegacyDevnet.dhall | 2 + ...inaArtifactFocalMainnetLegacyMainnet.dhall | 2 + .../MinaArtifactFocalMainnetMainnet.dhall | 1 + .../MinaArtifactJammyDevnetDevnet.dhall | 1 + .../MinaArtifactJammyDevnetLegacyDevnet.dhall | 2 + ...inaArtifactJammyMainnetLegacyMainnet.dhall | 2 + .../MinaArtifactJammyMainnetMainnet.dhall | 1 + .../MinaArtifactNobleDevnetDevnet.dhall | 1 + .../MinaArtifactNobleDevnetDevnetArm64.dhall | 1 + .../MinaArtifactNobleDevnetLegacyDevnet.dhall | 2 + ...inaArtifactNobleMainnetLegacyMainnet.dhall | 2 + .../MinaArtifactNobleMainnetMainnet.dhall | 1 + buildkite/src/Pipeline/Tag.dhall | 20 +++ buildkite/src/Pipeline/TagFilter.dhall | 150 +++++++++++++++++- 28 files changed, 205 insertions(+), 1 deletion(-) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall index dfba5a2580a0..86176fd8ffd1 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall @@ -30,6 +30,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bookworm ] , debVersion = DebianVersions.DebVersion.Bookworm , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall index 19627ddd0c9e..b16dc98a455d 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Arm64 + , PipelineTag.Type.Bookworm ] , debVersion = DebianVersions.DebVersion.Bookworm , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetLegacyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetLegacyDevnet.dhall index 00298e186426..56c19102b8e4 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetLegacyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetLegacyDevnet.dhall @@ -20,6 +20,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bookworm ] , network = Network.Type.DevnetLegacy , debVersion = DebianVersions.DebVersion.Bookworm diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetLegacyMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetLegacyMainnet.dhall index c930bf6223b8..fb0297728ac2 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetLegacyMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetLegacyMainnet.dhall @@ -22,6 +22,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bookworm ] , debVersion = DebianVersions.DebVersion.Bookworm , network = Network.Type.MainnetLegacy diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall index 20d082d288e0..238dc6dbbb76 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Stable , PipelineTag.Type.Mainnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bookworm ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall index 02d5f481df02..e8de51d2e426 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall @@ -26,6 +26,7 @@ in Pipeline.build , PipelineTag.Type.Rosetta , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall index 0de8ccf863ae..eeeb6eb9ebb3 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall @@ -25,6 +25,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall index 5413f820f20c..9d99a36ca60a 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall @@ -19,6 +19,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Lightnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall index 25861c545720..e1069f8516b4 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall @@ -27,6 +27,7 @@ in Pipeline.build , PipelineTag.Type.Rosetta , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetLegacyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetLegacyDevnet.dhall index ef5078d26db5..a35c5f23fa42 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetLegacyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetLegacyDevnet.dhall @@ -18,6 +18,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] , network = Network.Type.DevnetLegacy , debVersion = DebianVersions.DebVersion.Bullseye diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetLegacyMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetLegacyMainnet.dhall index f832577aed87..ca555cdc0896 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetLegacyMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetLegacyMainnet.dhall @@ -22,6 +22,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] , debVersion = DebianVersions.DebVersion.Bullseye , network = Network.Type.MainnetLegacy diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall index 605faf076a51..b432219a0a9e 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall @@ -32,6 +32,7 @@ in Pipeline.build , PipelineTag.Type.Rosetta , PipelineTag.Type.Mainnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Bullseye ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall index edc7e455a29b..58e49cabe56b 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalBerkeleyDevnet.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Rosetta , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Focal ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall index 5d4bbc343820..536d104939be 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Focal ] , debVersion = DebianVersions.DebVersion.Focal } diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetLegacyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetLegacyDevnet.dhall index 557301a05fdc..fbc6bf7867b2 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetLegacyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetLegacyDevnet.dhall @@ -20,6 +20,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Focal ] , network = Network.Type.DevnetLegacy , debVersion = DebianVersions.DebVersion.Focal diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetLegacyMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetLegacyMainnet.dhall index 7a5fb50b4c11..027d233c2ff8 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetLegacyMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetLegacyMainnet.dhall @@ -22,6 +22,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Focal ] , debVersion = DebianVersions.DebVersion.Focal , network = Network.Type.MainnetLegacy diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall index 060ed6e52ee0..89b43f2de38d 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall @@ -34,6 +34,7 @@ in Pipeline.build , PipelineTag.Type.Stable , PipelineTag.Type.Mainnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Focal ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall index dba2e4195885..606a838ba4fb 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall @@ -30,6 +30,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Jammy ] , debVersion = DebianVersions.DebVersion.Jammy , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetLegacyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetLegacyDevnet.dhall index aa9130e92983..e140434e5eee 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetLegacyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetLegacyDevnet.dhall @@ -20,6 +20,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Jammy ] , network = Network.Type.DevnetLegacy , debVersion = DebianVersions.DebVersion.Jammy diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetLegacyMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetLegacyMainnet.dhall index 6117f537776b..f1bc638edc4d 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetLegacyMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetLegacyMainnet.dhall @@ -22,6 +22,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Jammy ] , debVersion = DebianVersions.DebVersion.Jammy , network = Network.Type.MainnetLegacy diff --git a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall index fbd790f40c98..93a6641a6568 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Stable , PipelineTag.Type.Mainnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Jammy ] , profile = Profiles.Type.Mainnet , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall index 8fc68f261bd9..228fc40e966a 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall @@ -30,6 +30,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Noble ] , debVersion = DebianVersions.DebVersion.Noble , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall index bfe51a3d98ad..64b21f3239f8 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall @@ -33,6 +33,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Devnet , PipelineTag.Type.Arm64 + , PipelineTag.Type.Noble ] , debVersion = DebianVersions.DebVersion.Noble , scope = diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetLegacyDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetLegacyDevnet.dhall index ee85d115faee..7f47d0ffe059 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetLegacyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetLegacyDevnet.dhall @@ -20,6 +20,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Noble ] , network = Network.Type.DevnetLegacy , debVersion = DebianVersions.DebVersion.Noble diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetLegacyMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetLegacyMainnet.dhall index f6b165b44bac..8ce272220654 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetLegacyMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetLegacyMainnet.dhall @@ -22,6 +22,8 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , PipelineTag.Type.Docker + , PipelineTag.Type.Amd64 + , PipelineTag.Type.Noble ] , debVersion = DebianVersions.DebVersion.Noble , network = Network.Type.MainnetLegacy diff --git a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall index 56c49d6f9be6..1cf1731a8383 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall @@ -32,6 +32,7 @@ in Pipeline.build , PipelineTag.Type.Docker , PipelineTag.Type.Mainnet , PipelineTag.Type.Amd64 + , PipelineTag.Type.Noble ] , debVersion = DebianVersions.DebVersion.Noble , profile = Profiles.Type.Mainnet diff --git a/buildkite/src/Pipeline/Tag.dhall b/buildkite/src/Pipeline/Tag.dhall index cfa0ac701018..7ab06a32a677 100644 --- a/buildkite/src/Pipeline/Tag.dhall +++ b/buildkite/src/Pipeline/Tag.dhall @@ -31,6 +31,11 @@ let Tag | Arm64 | Amd64 | Mainnet + | Bullseye + | Bookworm + | Noble + | Focal + | Jammy > let toNatural @@ -56,6 +61,11 @@ let toNatural , Arm64 = 17 , Amd64 = 18 , Mainnet = 19 + , Bullseye = 20 + , Bookworm = 21 + , Noble = 22 + , Focal = 23 + , Jammy = 24 } tag @@ -118,6 +128,11 @@ let capitalName = , Arm64 = "Arm64" , Amd64 = "Amd64" , Mainnet = "Mainnet" + , Bullseye = "Bullseye" + , Bookworm = "Bookworm" + , Noble = "Noble" + , Focal = "Focal" + , Jammy = "Jammy" } tag @@ -143,6 +158,11 @@ let lowerName = , Arm64 = "arm64" , Amd64 = "amd64" , Mainnet = "mainnet" + , Bullseye = "bullseye" + , Bookworm = "bookworm" + , Noble = "noble" + , Focal = "focal" + , Jammy = "jammy" } tag diff --git a/buildkite/src/Pipeline/TagFilter.dhall b/buildkite/src/Pipeline/TagFilter.dhall index 5158a7cf669b..f5d113fcf854 100644 --- a/buildkite/src/Pipeline/TagFilter.dhall +++ b/buildkite/src/Pipeline/TagFilter.dhall @@ -1,6 +1,6 @@ -- Tag defines pipeline -- Using tags one can tailor pipeline for any need. Each job should be tagged with one or several tags --- then on pipeline settings we can define which tagged jobs to include or exclue in pipeline +-- then on pipeline settings we can define which tagged jobs to include or exclude in pipeline let Tag = ./Tag.dhall @@ -17,12 +17,31 @@ let Filter | DebianBuild | DockerBuild | Rosetta + | DockerBuildArm64 + | DockerBuildAmd64 | DockerBuildArm64Devnet + | DockerBuildArm64DevnetNoble + | DockerBuildArm64DevnetBookworm | DockerBuildAmd64Devnet + | DockerBuildAmd64DevnetNoble + | DockerBuildAmd64DevnetJammy + | DockerBuildAmd64DevnetBookworm + | DockerBuildAmd64DevnetBullseye + | DockerBuildAmd64DevnetFocal | DockerBuildArm64Mainnet + | DockerBuildArm64MainnetNoble + | DockerBuildArm64MainnetBookworm | DockerBuildAmd64Mainnet + | DockerBuildAmd64MainnetNoble + | DockerBuildAmd64MainnetJammy + | DockerBuildAmd64MainnetBookworm + | DockerBuildAmd64MainnetBullseye + | DockerBuildAmd64MainnetFocal | DockerBuildArm64Lightnet + | DockerBuildAmd64LightnetBookworm + | DockerBuildAmd64LightnetBullseye | DockerBuildAmd64Lightnet + | DockerBuildArm64LightnetBookworm > let tags @@ -40,6 +59,8 @@ let tags , Release = [ Tag.Type.Release ] , Promote = [ Tag.Type.Promote ] , Rosetta = [ Tag.Type.Rosetta ] + , DockerBuildArm64 = [ Tag.Type.Docker, Tag.Type.Arm64 ] + , DockerBuildAmd64 = [ Tag.Type.Docker, Tag.Type.Amd64 ] , DockerBuildArm64Devnet = [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Arm64 ] , DockerBuildAmd64Devnet = @@ -52,6 +73,108 @@ let tags [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Arm64 ] , DockerBuildAmd64Lightnet = [ Tag.Type.Docker, Tag.Type.Lightnet, Tag.Type.Amd64 ] + , DockerBuildArm64DevnetNoble = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Arm64 + , Tag.Type.Noble + ] + , DockerBuildAmd64DevnetNoble = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Amd64 + , Tag.Type.Noble + ] + , DockerBuildArm64MainnetNoble = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Arm64 + , Tag.Type.Noble + ] + , DockerBuildAmd64MainnetNoble = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Amd64 + , Tag.Type.Noble + ] + , DockerBuildAmd64DevnetJammy = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Amd64 + , Tag.Type.Jammy + ] + , DockerBuildAmd64MainnetJammy = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Amd64 + , Tag.Type.Jammy + ] + , DockerBuildArm64DevnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Arm64 + , Tag.Type.Bookworm + ] + , DockerBuildAmd64DevnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Amd64 + , Tag.Type.Bookworm + ] + , DockerBuildArm64MainnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Arm64 + , Tag.Type.Bookworm + ] + , DockerBuildAmd64MainnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Amd64 + , Tag.Type.Bookworm + ] + , DockerBuildArm64LightnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Lightnet + , Tag.Type.Arm64 + , Tag.Type.Bookworm + ] + , DockerBuildAmd64LightnetBookworm = + [ Tag.Type.Docker + , Tag.Type.Lightnet + , Tag.Type.Amd64 + , Tag.Type.Bookworm + ] + , DockerBuildAmd64DevnetBullseye = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Amd64 + , Tag.Type.Bullseye + ] + , DockerBuildAmd64MainnetBullseye = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Amd64 + , Tag.Type.Bullseye + ] + , DockerBuildAmd64LightnetBullseye = + [ Tag.Type.Docker + , Tag.Type.Lightnet + , Tag.Type.Amd64 + , Tag.Type.Bullseye + ] + , DockerBuildAmd64DevnetFocal = + [ Tag.Type.Docker + , Tag.Type.Devnet + , Tag.Type.Amd64 + , Tag.Type.Focal + ] + , DockerBuildAmd64MainnetFocal = + [ Tag.Type.Docker + , Tag.Type.Mainnet + , Tag.Type.Amd64 + , Tag.Type.Focal + ] } filter @@ -70,12 +193,37 @@ let show , DebianBuild = "DebianBuild" , DockerBuild = "DockerBuild" , Rosetta = "Rosetta" + , DockerBuildArm64 = "DockerBuildArm64" + , DockerBuildAmd64 = "DockerBuildAmd64" , DockerBuildArm64Devnet = "DockerBuildArm64Devnet" , DockerBuildAmd64Devnet = "DockerBuildAmd64Devnet" , DockerBuildArm64Mainnet = "DockerBuildArm64Mainnet" , DockerBuildAmd64Mainnet = "DockerBuildAmd64Mainnet" , DockerBuildArm64Lightnet = "DockerBuildArm64Lightnet" , DockerBuildAmd64Lightnet = "DockerBuildAmd64Lightnet" + , DockerBuildArm64DevnetNoble = "DockerBuildArm64DevnetNoble" + , DockerBuildAmd64DevnetNoble = "DockerBuildAmd64DevnetNoble" + , DockerBuildArm64MainnetNoble = "DockerBuildArm64MainnetNoble" + , DockerBuildAmd64MainnetNoble = "DockerBuildAmd64MainnetNoble" + , DockerBuildAmd64DevnetJammy = "DockerBuildAmd64DevnetJammy" + , DockerBuildAmd64MainnetJammy = "DockerBuildAmd64MainnetJammy" + , DockerBuildArm64DevnetBookworm = "DockerBuildArm64DevnetBookworm" + , DockerBuildAmd64DevnetBookworm = "DockerBuildAmd64DevnetBookworm" + , DockerBuildArm64MainnetBookworm = + "DockerBuildArm64MainnetBookworm" + , DockerBuildAmd64MainnetBookworm = + "DockerBuildAmd64MainnetBookworm" + , DockerBuildArm64LightnetBookworm = + "DockerBuildArm64LightnetBookworm" + , DockerBuildAmd64LightnetBookworm = + "DockerBuildAmd64LightnetBookworm" + , DockerBuildAmd64DevnetBullseye = "DockerBuildAmd64DevnetBullseye" + , DockerBuildAmd64MainnetBullseye = + "DockerBuildAmd64MainnetBullseye" + , DockerBuildAmd64LightnetBullseye = + "DockerBuildAmd64LightnetBullseye" + , DockerBuildAmd64DevnetFocal = "DockerBuildAmd64DevnetFocal" + , DockerBuildAmd64MainnetFocal = "DockerBuildAmd64MainnetFocal" } filter From 1452beb2571aa22870aa874efca4bc3c3c6a76e1 Mon Sep 17 00:00:00 2001 From: dkijania Date: Thu, 18 Sep 2025 20:37:58 +0200 Subject: [PATCH 09/10] added codename handling --- frontend/ci-build-me/src/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/frontend/ci-build-me/src/index.js b/frontend/ci-build-me/src/index.js index de26954bfc49..863da1a5107c 100644 --- a/frontend/ci-build-me/src/index.js +++ b/frontend/ci-build-me/src/index.js @@ -75,23 +75,31 @@ const parseParams = (comment) => { return params; }; -const buildEnvFromParams = ({ arch, profile }) => { - if (!arch || !profile) { - return { BUILDKITE_PIPELINE_FILTER: "DockerBuild" }; +const buildEnvFromParams = ({ arch, profile, codename }) => { + var filter = "DockerBuild"; + + if (!arch || !profile || !codename ) { + return { BUILDKITE_PIPELINE_FILTER: filter }; } const profiles = ["devnet", "lightnet", "mainnet"]; const arches = ["amd64", "arm64"]; + const codenames = ["jammy", "noble", "bullseye", "focal", "bookworm"]; - if (arches.includes(arch) && profiles.includes(profile)) { - const filter = - "DockerBuild" + - arch.charAt(0).toUpperCase() + arch.slice(1) + // Amd64 / Arm64 - profile.charAt(0).toUpperCase() + profile.slice(1); // Devnet / Lightnet / Mainnet - return { BUILDKITE_PIPELINE_FILTER: filter }; + + if (arches.includes(arch)) { + filter += arch.charAt(0).toUpperCase() + arch.slice(1); // Amd64 / Arm64 + } + + if (profiles.includes(profile)) { + filter += profile.charAt(0).toUpperCase() + profile.slice(1); // Devnet / Lightnet / Mainnet + } + + if (codenames.includes(codename)) { + filter += codename.charAt(0).toUpperCase() + codename.slice(1); // Jammy / Noble / Bullseye / Focal / Bookworm } - return { BUILDKITE_PIPELINE_FILTER: "DockerBuild" }; + return { BUILDKITE_PIPELINE_FILTER: filter, BUILDKITE_PIPELINE_FILTER_MODE: "All" }; }; // ------------------- From 242fd6456d180dc6307b8adb73729129631a9bd5 Mon Sep 17 00:00:00 2001 From: dkijania Date: Fri, 19 Sep 2025 08:50:29 +0200 Subject: [PATCH 10/10] debug --- buildkite/src/Pipeline/TriggerCommand.dhall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/src/Pipeline/TriggerCommand.dhall b/buildkite/src/Pipeline/TriggerCommand.dhall index 37bcd389ebc3..f64b2f3208d7 100644 --- a/buildkite/src/Pipeline/TriggerCommand.dhall +++ b/buildkite/src/Pipeline/TriggerCommand.dhall @@ -2,6 +2,6 @@ let Cmd = ../Lib/Cmds.dhall in ( \(dhallPipelineRelativeToBuildKiteDir : Text) -> Cmd.quietly - "dhall-to-yaml --quoted <<< '(./buildkite/${dhallPipelineRelativeToBuildKiteDir}).pipeline' | buildkite-agent pipeline upload" + "dhall-to-yaml --quoted <<< '(./buildkite/${dhallPipelineRelativeToBuildKiteDir}).pipeline'" ) : Text -> Cmd.Type