diff --git a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall index 8568d017c9cc..86176fd8ffd1 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnet.dhall @@ -28,6 +28,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 f10877ffb065..b16dc98a455d 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormDevnetDevnetArm64.dhall @@ -31,6 +31,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 cab8f6bfc0fe..238dc6dbbb76 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBookwormMainnetMainnet.dhall @@ -31,6 +31,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 2bdd99eb1a2d..e8de51d2e426 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnet.dhall @@ -24,6 +24,9 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Docker , 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 d19bcb1c712a..eeeb6eb9ebb3 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyDevnetInstrumented.dhall @@ -23,6 +23,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 7551cb020390..9d99a36ca60a 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeBerkeleyLightnet.dhall @@ -6,10 +6,20 @@ 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 + , PipelineTag.Type.Bullseye + ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall index cb8857283fa8..e1069f8516b4 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeDevnetDevnet.dhall @@ -25,6 +25,9 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Docker , 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 415da4814e1e..b432219a0a9e 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactBullseyeMainnetMainnet.dhall @@ -30,6 +30,9 @@ in Pipeline.build , PipelineTag.Type.Release , PipelineTag.Type.Stable , 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 798cf2c354ae..58e49cabe56b 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,14 @@ 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 + , PipelineTag.Type.Focal + ] } ) diff --git a/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall b/buildkite/src/Jobs/Release/MinaArtifactFocalDevnetDevnet.dhall index de06795a87f3..536d104939be 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,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 4202addec7e2..89b43f2de38d 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactFocalMainnetMainnet.dhall @@ -32,6 +32,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 d30ceeac1e2b..606a838ba4fb 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyDevnetDevnet.dhall @@ -28,6 +28,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 9fa61949f23f..93a6641a6568 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactJammyMainnetMainnet.dhall @@ -31,6 +31,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 83521742ea97..228fc40e966a 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnet.dhall @@ -28,6 +28,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 0cd580e71da5..64b21f3239f8 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleDevnetDevnetArm64.dhall @@ -31,6 +31,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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 74e269aad77b..1cf1731a8383 100644 --- a/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall +++ b/buildkite/src/Jobs/Release/MinaArtifactNobleMainnetMainnet.dhall @@ -30,6 +30,9 @@ in Pipeline.build [ PipelineTag.Type.Long , PipelineTag.Type.Release , 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/Monorepo.dhall b/buildkite/src/Monorepo.dhall index 75c0e988bb5c..5202a034f5d3 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 targetTags job.tags 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 83079b02d328..7ab06a32a677 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 @@ -22,6 +26,16 @@ let Tag | Hardfork | Promote | Rosetta + | Devnet + | Lightnet + | Arm64 + | Amd64 + | Mainnet + | Bullseye + | Bookworm + | Noble + | Focal + | Jammy > let toNatural @@ -42,6 +56,16 @@ let toNatural , Debian = 12 , Docker = 13 , Rosetta = 14 + , Devnet = 15 + , Lightnet = 16 + , Arm64 = 17 + , Amd64 = 18 + , Mainnet = 19 + , Bullseye = 20 + , Bookworm = 21 + , Noble = 22 + , Focal = 23 + , Jammy = 24 } tag @@ -57,12 +81,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 @@ -80,6 +123,16 @@ let capitalName = , Docker = "Docker" , Debian = "Debian" , Rosetta = "Rosetta" + , Devnet = "Devnet" + , Lightnet = "Lightnet" + , Arm64 = "Arm64" + , Amd64 = "Amd64" + , Mainnet = "Mainnet" + , Bullseye = "Bullseye" + , Bookworm = "Bookworm" + , Noble = "Noble" + , Focal = "Focal" + , Jammy = "Jammy" } tag @@ -100,6 +153,16 @@ let lowerName = , Docker = "docker" , Debian = "debian" , Rosetta = "rosetta" + , Devnet = "devnet" + , Lightnet = "lightnet" + , Arm64 = "arm64" + , Amd64 = "amd64" + , Mainnet = "mainnet" + , Bullseye = "bullseye" + , Bookworm = "bookworm" + , Noble = "noble" + , Focal = "focal" + , Jammy = "jammy" } tag @@ -109,5 +172,7 @@ in { Type = Tag , toNatural = toNatural , equal = equal , hasAny = hasAny + , containsAny = containsAny + , containsAll = containsAll , contains = contains } diff --git a/buildkite/src/Pipeline/TagFilter.dhall b/buildkite/src/Pipeline/TagFilter.dhall index 1ac25524c6a6..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,6 +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 @@ -34,6 +59,122 @@ 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 = + [ Tag.Type.Docker, Tag.Type.Devnet, Tag.Type.Amd64 ] + , DockerBuildArm64Mainnet = + [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Arm64 ] + , DockerBuildAmd64Mainnet = + [ Tag.Type.Docker, Tag.Type.Mainnet, Tag.Type.Amd64 ] + , DockerBuildArm64Lightnet = + [ 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 @@ -52,6 +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 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/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 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}") diff --git a/frontend/ci-build-me/src/index.js b/frontend/ci-build-me/src/index.js index 57b51d600704..863da1a5107c 100644 --- a/frontend/ci-build-me/src/index.js +++ b/frontend/ci-build-me/src/index.js @@ -62,182 +62,253 @@ 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, 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)) { + 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: filter, BUILDKITE_PIPELINE_FILTER_MODE: "All" }; +}; +// ------------------- + 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: Actually look at @MinaProtocol/stakeholder-reviewers team instead of hardcoding the users here - if ( - 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" - ) { - 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", - {} - ); - 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", + ]; } + } - 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 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", + ]; } - - return null; - }; + } + + 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", + ]; + } + } + + // 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; +}; /** * HTTP Cloud Function for GitHub Webhook events.