2019-08-10 21:29:25 +00:00
// This file contains the logic for building our CI for Drone. The idea here is
// that we create a pipeline for all of the major tasks we need to perform
// (e.g. builds, E2E testing, conformance testing, releases). Each pipeline
// after the default builds on a previous pipeline.
2019-09-06 22:37:37 -05:00
// Generate with `drone jsonnet --source ./hack/drone.jsonnet --stream --format`
2022-11-02 15:06:45 +04:00
// Sign with `drone sign siderolabs/talos --save`
2019-08-10 21:29:25 +00:00
2019-08-02 16:08:24 -05:00
local build_container = ' a u t o n o m y / b u i l d - c o n t a i n e r : l a t e s t ' ;
2023-08-08 20:25:23 +05:30
local downstream_image = ' g h c r . i o / s i d e r o l a b s / d r o n e - d o w n s t r e a m : v 1 . 2 . 0 - 3 3 - g 2 3 0 6 1 7 6 ' ;
2020-09-26 00:00:43 +03:00
local local_registry = ' r e g i s t r y . d e v . t a l o s - s y s t e m s . i o ' ;
2019-12-23 10:36:14 -08:00
2019-08-10 21:29:25 +00:00
local volumes = {
dockersock : {
pipeline : {
2019-08-02 16:08:24 -05:00
name : ' d o c k e r s o c k ' ,
2019-08-10 21:29:25 +00:00
temp : { } ,
} ,
step : {
name : $ . dockersock . pipeline . name ,
2019-08-02 16:08:24 -05:00
path : ' / v a r / r u n ' ,
2019-08-10 21:29:25 +00:00
} ,
2019-08-09 03:45:13 +00:00
} ,
2019-08-10 21:29:25 +00:00
2020-07-27 23:24:07 +03:00
outerdockersock : {
pipeline : {
name : ' o u t e r d o c k e r s o c k ' ,
host : {
2023-02-17 23:10:28 +05:30
path : ' / v a r / c i - d o c k e r ' ,
2020-07-27 23:24:07 +03:00
} ,
} ,
step : {
name : $ . outerdockersock . pipeline . name ,
path : ' / v a r / o u t e r - r u n ' ,
} ,
} ,
2019-12-23 10:36:14 -08:00
docker : {
pipeline : {
name : ' d o c k e r ' ,
temp : { } ,
} ,
step : {
name : $ . docker . pipeline . name ,
path : ' / r o o t / . d o c k e r / b u i l d x ' ,
} ,
} ,
kube : {
pipeline : {
name : ' k u b e ' ,
temp : { } ,
} ,
step : {
name : $ . kube . pipeline . name ,
path : ' / r o o t / . k u b e ' ,
} ,
} ,
2019-08-10 21:29:25 +00:00
dev : {
pipeline : {
2019-08-02 16:08:24 -05:00
name : ' d e v ' ,
2019-08-10 21:29:25 +00:00
host : {
2019-08-02 16:08:24 -05:00
path : ' / d e v ' ,
2019-08-10 21:29:25 +00:00
} ,
} ,
step : {
name : $ . dev . pipeline . name ,
2019-08-02 16:08:24 -05:00
path : ' / d e v ' ,
2019-08-10 21:29:25 +00:00
} ,
2019-08-09 03:45:13 +00:00
} ,
2019-08-10 21:29:25 +00:00
2020-06-29 21:36:51 +03:00
tmp : {
pipeline : {
name : ' t m p ' ,
2020-07-30 16:21:38 +03:00
temp : {
2023-02-17 23:10:28 +05:30
medium : ' m e m o r y ' ,
2020-07-30 16:21:38 +03:00
} ,
2020-06-29 21:36:51 +03:00
} ,
step : {
name : $ . tmp . pipeline . name ,
path : ' / t m p ' ,
} ,
} ,
2019-08-10 21:29:25 +00:00
ForStep ( ) : [
self . dockersock . step ,
2020-07-27 23:24:07 +03:00
self . outerdockersock . step ,
2019-12-23 10:36:14 -08:00
self . docker . step ,
self . kube . step ,
2019-08-10 21:29:25 +00:00
self . dev . step ,
2020-07-30 00:36:58 +03:00
self . tmp . step ,
2019-08-10 21:29:25 +00:00
] ,
ForPipeline ( ) : [
self . dockersock . pipeline ,
2020-07-27 23:24:07 +03:00
self . outerdockersock . pipeline ,
2019-12-23 10:36:14 -08:00
self . docker . pipeline ,
self . kube . pipeline ,
2019-08-10 21:29:25 +00:00
self . dev . pipeline ,
2020-06-29 21:36:51 +03:00
self . tmp . pipeline ,
2019-08-10 21:29:25 +00:00
] ,
} ;
2019-08-09 03:45:13 +00:00
2023-08-08 20:25:23 +05:30
// Step standardizes the creation of build steps. The name of the step is used
// as the target when building the make command unless with_make is set to false. For example, if name equals
// "test", the resulting step command will be "make test". This is done to
// encourage alignment between this file and the Makefile, and gives us a
// standardized structure that should make things easier to reason about if we
// know that each step is essentially a Makefile target.
local Step ( name , image = ' ' , target = ' ' , privileged = false , depends_on = [ ] , environment = { } , extra_volumes = [ ] , with_make = true , entrypoint = null , extra_commands = [ ] , resources = { } , when = { } ) = {
local make = if target = = ' ' then std.format ( ' m a k e % s ' , name ) else std.format ( ' m a k e % s ' , target ) ,
local commands = if with_make then [ make ] + extra_commands else extra_commands ,
local common_env_vars = {
PLATFORM : ' l i n u x / a m d 6 4 , l i n u x / a r m 6 4 ' ,
} ,
name : name ,
image : if image = = ' ' then build_container else image ,
pull : ' a l w a y s ' ,
entrypoint : entrypoint ,
commands : commands ,
resources : resources ,
privileged : privileged ,
environment : common_env_vars + environment ,
volumes : volumes . ForStep ( ) + extra_volumes ,
depends_on : [ x . name for x in depends_on ] ,
when : when ,
} ;
// TriggerDownstream is a helper function for creating a step that triggers a
// downstream pipeline. It is used to standardize the creation of these steps.
2023-08-03 20:50:54 +05:30
local TriggerDownstream ( name , target , repositories , image = ' ' , params = [ ] , depends_on = [ ] , when = { } ) = {
2023-08-08 20:25:23 +05:30
name : name ,
image : if image = = ' ' then downstream_image else image ,
settings : {
server : ' h t t p s : / / c i . d e v . t a l o s - s y s t e m s . i o / ' ,
token : {
from_secret : ' d r o n e _ t o k e n ' ,
} ,
repositories : repositories ,
last_successful : true ,
block : true ,
params : params ,
deploy : target ,
} ,
depends_on : [ x . name for x in depends_on ] ,
2023-08-03 20:50:54 +05:30
when : when ,
2023-08-08 20:25:23 +05:30
} ;
2019-08-10 21:29:25 +00:00
// This provides the docker service.
2019-08-09 03:45:13 +00:00
local docker = {
2019-08-02 16:08:24 -05:00
name : ' d o c k e r ' ,
2024-02-05 14:43:39 +04:00
image : ' d o c k e r : 2 5 . 0 . 2 - d i n d ' ,
2019-08-02 16:08:24 -05:00
entrypoint : [ ' d o c k e r d ' ] ,
2019-08-09 03:45:13 +00:00
privileged : true ,
command : [
2019-08-02 16:08:24 -05:00
' - - d n s = 8 . 8 . 8 . 8 ' ,
' - - d n s = 8 . 8 . 4 . 4 ' ,
2020-12-17 15:47:58 +03:00
' - - m t u = 1 4 5 0 ' ,
2019-08-02 16:08:24 -05:00
' - - l o g - l e v e l = e r r o r ' ,
2019-12-27 18:12:04 +00:00
] ,
2021-02-16 22:30:26 +03:00
// Set resource requests to ensure that only three builds can be performed at a
2020-07-23 11:21:42 -07:00
// time. We set it on the service so that we get the scheduling restricitions
// while still allowing parallel steps.
resources : {
requests : {
2021-02-16 22:30:26 +03:00
cpu : 12000 ,
memory : ' 1 8 G i B ' ,
2020-07-23 11:21:42 -07:00
} ,
} ,
2019-08-10 21:29:25 +00:00
volumes : volumes . ForStep ( ) ,
2019-08-09 03:45:13 +00:00
} ;
2019-08-10 21:29:25 +00:00
// Pipeline is a way to standardize the creation of pipelines. It supports
// using and existing pipeline as a base.
2020-07-23 11:21:42 -07:00
local Pipeline ( name , steps = [ ] , depends_on = [ ] , with_docker = true , disable_clone = false , type = ' k u b e r n e t e s ' ) = {
2019-08-02 16:08:24 -05:00
kind : ' p i p e l i n e ' ,
2020-07-23 11:21:42 -07:00
type : type ,
2019-08-09 03:45:13 +00:00
name : name ,
2020-07-23 11:21:42 -07:00
[ if type = = ' d i g i t a l o c e a n ' then ' t o k e n ' ] : {
2023-02-17 23:10:28 +05:30
from_secret : ' d i g i t a l o c e a n _ t o k e n ' ,
2020-07-23 11:21:42 -07:00
} ,
// See https://slugs.do-api.dev/.
[ if type = = ' d i g i t a l o c e a n ' then ' s e r v e r ' ] : {
image : ' u b u n t u - 2 0 - 0 4 - x 6 4 ' ,
size : ' c - 3 2 ' ,
region : ' n y c 3 ' ,
} ,
[ if with_docker then ' s e r v i c e s ' ] : [ docker ] ,
2023-02-17 23:10:28 +05:30
[ if disable_clone then ' c l o n e ' ] : {
2019-12-10 17:44:07 +00:00
disable : true ,
} ,
2019-09-23 21:45:21 -07:00
steps : steps ,
2019-08-10 21:29:25 +00:00
volumes : volumes . ForPipeline ( ) ,
depends_on : [ x . name for x in depends_on ] ,
2019-08-09 03:45:13 +00:00
} ;
2023-05-19 21:24:00 +04:00
local creds_env_vars = {
// AWS creds
AWS_ACCESS_KEY_ID : { from_secret : ' a w s _ a c c e s s _ k e y _ i d ' } ,
AWS_SECRET_ACCESS_KEY : { from_secret : ' a w s _ s e c r e t _ a c c e s s _ k e y ' } ,
AWS_SVC_ACCT : { from_secret : ' a w s _ s v c _ a c c t ' } ,
// Azure creds
AZURE_SUBSCRIPTION_ID : { from_secret : ' a z u r e _ s u b s c r i p t i o n _ i d ' } ,
2023-08-08 20:25:23 +05:30
AZURE_STORAGE_ACCOUNT : { from_secret : ' a z _ s t o r a g e _ a c c o u n t ' } ,
AZURE_CLIENT_ID : { from_secret : ' a z _ s t o r a g e _ u s e r ' } , // using old variable name not to break existing release branch pipelines
AZURE_CLIENT_SECRET : { from_secret : ' a z _ s t o r a g e _ p a s s ' } , // using old variable name not to break existing release branch pipelines
2023-05-19 21:24:00 +04:00
AZURE_TENANT_ID : { from_secret : ' a z u r e _ t e n a n t _ i d ' } ,
// TODO(andrewrynhard): Rename this to the GCP convention.
GCE_SVC_ACCT : { from_secret : ' g c e _ s v c _ a c c t ' } ,
PACKET_AUTH_TOKEN : { from_secret : ' p a c k e t _ a u t h _ t o k e n ' } ,
GITHUB_TOKEN : { from_secret : ' g h c r _ t o k e n ' } , // Use GitHub API token to avoid rate limiting on CAPI -> GitHub calls.
} ;
2023-08-08 20:25:23 +05:30
// Sets up the CI environment
local setup_ci = Step (
' s e t u p - c i ' ,
with_make = false ,
privileged = true ,
extra_commands = [
' s e t u p - c i ' ,
] ,
environment = {
BUILDKIT_FLAVOR : ' c r o s s ' ,
} ,
) ;
2019-08-10 21:29:25 +00:00
2023-08-08 20:25:23 +05:30
// Default pipeline.
2023-05-31 17:47:23 +04:00
local external_artifacts = Step ( ' e x t e r n a l - a r t i f a c t s ' , depends_on = [ setup_ci ] ) ;
2023-02-17 23:10:28 +05:30
local generate = Step ( ' g e n e r a t e ' , target = ' g e n e r a t e d o c s ' , depends_on = [ setup_ci ] ) ;
2023-06-30 23:23:28 +04:00
local uki_certs = Step ( ' u k i - c e r t s ' , depends_on = [ generate ] , environment = { PLATFORM : ' l i n u x / a m d 6 4 ' } ) ;
local check_dirty = Step ( ' c h e c k - d i r t y ' , depends_on = [ generate , external_artifacts , uki_certs ] ) ;
2023-08-03 22:18:08 +04:00
local build = Step ( ' b u i l d ' , target = ' t a l o s c t l - a l l k e r n e l s d - b o o t s d - s t u b i n i t r a m f s i n s t a l l e r i m a g e r t a l o s _ o u t / i n t e g r a t i o n - t e s t - l i n u x - a m d 6 4 ' , depends_on = [ check_dirty ] , environment = { IMAGE_REGISTRY : local_registry , PUSH : true } ) ;
2023-02-17 23:10:28 +05:30
local lint = Step ( ' l i n t ' , depends_on = [ build ] ) ;
2021-02-16 22:30:26 +03:00
local talosctl_cni_bundle = Step ( ' t a l o s c t l - c n i - b u n d l e ' , depends_on = [ build , lint ] ) ;
2023-07-27 12:50:06 +04:00
local iso = Step ( ' i s o ' , target = ' i s o s e c u r e b o o t - i s o ' , depends_on = [ build ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2023-02-17 23:10:28 +05:30
local images_essential = Step ( ' i m a g e s - e s s e n t i a l ' , target = ' i m a g e s - e s s e n t i a l ' , depends_on = [ iso ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
local unit_tests = Step ( ' u n i t - t e s t s ' , target = ' u n i t - t e s t s u n i t - t e s t s - r a c e ' , depends_on = [ build , lint ] ) ;
local e2e_docker = Step ( ' e 2 e - d o c k e r - s h o r t ' , depends_on = [ build , unit_tests ] , target = ' e 2 e - d o c k e r ' , environment = { SHORT_INTEGRATION_TEST : ' y e s ' , IMAGE_REGISTRY : local_registry } ) ;
local e2e_qemu = Step ( ' e 2 e - q e m u - s h o r t ' , privileged = true , target = ' e 2 e - q e m u ' , depends_on = [ build , unit_tests , talosctl_cni_bundle ] , environment = { IMAGE_REGISTRY : local_registry , SHORT_INTEGRATION_TEST : ' y e s ' } , when = { event : [ ' p u l l _ r e q u e s t ' ] } ) ;
local e2e_iso = Step ( ' e 2 e - i s o ' , privileged = true , target = ' e 2 e - i s o ' , depends_on = [ build , unit_tests , iso , talosctl_cni_bundle ] , when = { event : [ ' p u l l _ r e q u e s t ' ] } , environment = { IMAGE_REGISTRY : local_registry } ) ;
2021-08-06 18:28:51 +03:00
local release_notes = Step ( ' r e l e a s e - n o t e s ' , depends_on = [ e2e_docker , e2e_qemu ] ) ;
2019-08-09 03:45:13 +00:00
2023-08-08 20:25:23 +05:30
local coverage = Step (
' c o v e r a g e ' ,
with_make = false ,
environment = {
2020-01-23 20:52:02 -08:00
CODECOV_TOKEN : { from_secret : ' c o d e c o v _ t o k e n ' } ,
2019-08-09 03:45:13 +00:00
} ,
2023-08-08 20:25:23 +05:30
extra_commands = [
2023-02-17 23:10:28 +05:30
' / u s r / l o c a l / b i n / c o d e c o v - f _ o u t / c o v e r a g e . t x t - X f i x ' ,
2020-01-23 20:52:02 -08:00
] ,
2023-08-08 20:25:23 +05:30
when = {
2019-08-02 16:08:24 -05:00
event : [ ' p u l l _ r e q u e s t ' ] ,
2019-08-09 03:45:13 +00:00
} ,
2023-08-08 20:25:23 +05:30
depends_on = [ unit_tests ] ,
) ;
2019-08-09 03:45:13 +00:00
2023-08-08 20:25:23 +05:30
local push = Step (
' p u s h ' ,
environment = {
2020-09-23 16:21:43 -07:00
GHCR_USERNAME : { from_secret : ' g h c r _ u s e r n a m e ' } ,
GHCR_PASSWORD : { from_secret : ' g h c r _ t o k e n ' } ,
2023-02-17 23:10:28 +05:30
PLATFORM : ' l i n u x / a m d 6 4 , l i n u x / a r m 6 4 ' ,
2020-01-01 10:28:44 -08:00
} ,
2023-08-08 20:25:23 +05:30
depends_on = [
e2e_docker ,
e2e_qemu ,
] ,
when = {
2020-01-01 10:28:44 -08:00
event : {
exclude : [
' p u l l _ r e q u e s t ' ,
2020-01-01 11:51:48 -08:00
' p r o m o t e ' ,
' c r o n ' ,
2020-01-01 10:28:44 -08:00
] ,
} ,
2023-08-08 20:25:23 +05:30
}
) ;
2020-01-01 10:28:44 -08:00
2023-08-08 20:25:23 +05:30
local push_latest = Step (
' p u s h - l a t e s t ' ,
environment = {
2020-09-23 16:21:43 -07:00
GHCR_USERNAME : { from_secret : ' g h c r _ u s e r n a m e ' } ,
GHCR_PASSWORD : { from_secret : ' g h c r _ t o k e n ' } ,
2023-02-17 23:10:28 +05:30
PLATFORM : ' l i n u x / a m d 6 4 , l i n u x / a r m 6 4 ' ,
2019-08-09 03:45:13 +00:00
} ,
2023-08-08 20:25:23 +05:30
depends_on = [
push ,
] ,
when = {
2020-01-01 11:51:48 -08:00
branch : [
2022-09-19 15:35:16 +04:00
' m a i n ' ,
2020-01-01 11:51:48 -08:00
] ,
event : [
' p u s h ' ,
2020-01-01 09:43:24 -08:00
] ,
2019-08-09 03:45:13 +00:00
} ,
2023-08-08 20:25:23 +05:30
) ;
local save_artifacts = Step (
' s a v e - a r t i f a c t s ' ,
with_make = false ,
environment = creds_env_vars ,
depends_on = [
build ,
images_essential ,
iso ,
talosctl_cni_bundle ,
] ,
extra_commands = [
' a z l o g i n - - s e r v i c e - p r i n c i p a l - u " $ $ { A Z U R E _ C L I E N T _ I D } " - p " $ $ { A Z U R E _ C L I E N T _ S E C R E T } " - - t e n a n t " $ $ { A Z U R E _ T E N A N T _ I D } " ' ,
2023-03-13 14:09:06 -04:00
' a z s t o r a g e c o n t a i n e r c r e a t e - - m e t a d a t a c i = t r u e - n $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
2023-04-10 16:39:39 +05:30
' a z s t o r a g e b l o b u p l o a d - b a t c h - - o v e r w r i t e - s _ o u t - d $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
2023-08-08 20:25:23 +05:30
]
) ;
local load_artifacts = Step (
' l o a d - a r t i f a c t s ' ,
with_make = false ,
environment = creds_env_vars ,
depends_on = [
setup_ci ,
2021-02-16 22:30:26 +03:00
] ,
2023-08-08 20:25:23 +05:30
extra_commands = [
' a z l o g i n - - s e r v i c e - p r i n c i p a l - u " $ $ { A Z U R E _ C L I E N T _ I D } " - p " $ $ { A Z U R E _ C L I E N T _ S E C R E T } " - - t e n a n t " $ $ { A Z U R E _ T E N A N T _ I D } " ' ,
2023-05-29 23:00:13 +04:00
' m k d i r - p _ o u t / ' ,
2023-08-03 20:50:54 +05:30
' a z s t o r a g e b l o b d o w n l o a d - b a t c h - - o v e r w r i t e - d _ o u t - s $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
2023-04-10 16:39:39 +05:30
' c h m o d + x _ o u t / c l u s t e r c t l _ o u t / i n t e g r a t i o n - t e s t - l i n u x - a m d 6 4 _ o u t / m o d u l e - s i g - v e r i f y - l i n u x - a m d 6 4 _ o u t / k u b e c t l _ o u t / k u b e s t r _ o u t / h e l m _ o u t / c i l i u m _ o u t / t a l o s c t l * ' ,
2023-08-08 20:25:23 +05:30
]
) ;
2021-02-16 22:30:26 +03:00
2023-08-20 14:12:47 +05:30
// ExtensionsStep is a helper function for creating a step that builds the
// extensions and runs the e2e tests for the extensions which can be set to be skipped.
local ExtensionsStep ( with_e2e = true ) =
// builds the extensions
local extensions_build = TriggerDownstream (
' e x t e n s i o n s - b u i l d ' ,
' e 2 e - t a l o s ' ,
[ ' s i d e r o l a b s / e x t e n s i o n s @ m a i n ' ] ,
params = [
std.format ( ' R E G I S T R Y = % s ' , local_registry ) ,
' P L A T F O R M = l i n u x / a m d 6 4 ' ,
' B U C K E T _ P A T H = $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
' _ o u t / t a l o s - m e t a d a t a ' , // params passed from file with KEY=VALUE format
] ,
depends_on = [ load_artifacts ] ,
) ;
// here we need to wait for the extensions build to finish
local extensions_artifacts = Step (
' e x t e n s i o n s - a r t i f a c t s ' ,
with_make = false ,
environment = creds_env_vars ,
depends_on = [
setup_ci ,
extensions_build ,
] ,
extra_commands = [
' a z l o g i n - - s e r v i c e - p r i n c i p a l - u " $ $ { A Z U R E _ C L I E N T _ I D } " - p " $ $ { A Z U R E _ C L I E N T _ S E C R E T } " - - t e n a n t " $ $ { A Z U R E _ T E N A N T _ I D } " ' ,
' a z s t o r a g e b l o b d o w n l o a d - f _ o u t / e x t e n s i o n s - m e t a d a t a - n e x t e n s i o n s - m e t a d a t a - c $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
]
) ;
// generates the extension list patch manifest
local extensions_patch_manifest = Step (
' e x t e n s i o n s - p a t c h - m a n i f e s t ' ,
with_make = false ,
environment = creds_env_vars ,
depends_on = [
extensions_artifacts ,
] ,
extra_commands = [
// create a patch file to pass to the downstream build
// ignore nvidia extensions, testing nvidia extensions needs a machine with nvidia graphics card
' j q - R < _ o u t / e x t e n s i o n s - m e t a d a t a | j q - s - f h a c k / t e s t / e x t e n s i o n s / e x t e n s i o n - p a t c h - f i l t e r . j q > _ o u t / e x t e n s i o n s - p a t c h . j s o n ' ,
' c a t _ o u t / e x t e n s i o n s - p a t c h . j s o n ' ,
]
) ;
2023-02-17 23:10:28 +05:30
2023-08-20 14:12:47 +05:30
local e2e_extensions = Step ( ' e 2 e - e x t e n s i o n s ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ extensions_patch_manifest ] , environment = {
QEMU_MEMORY_WORKERS : ' 4 0 9 6 ' ,
WITH_CONFIG_PATCH_WORKER : ' @ _ o u t / e x t e n s i o n s - p a t c h . j s o n ' ,
IMAGE_REGISTRY : local_registry ,
2023-11-25 22:56:01 +05:30
QEMU_EXTRA_DISKS : ' 3 ' ,
2023-08-20 14:12:47 +05:30
SHORT_INTEGRATION_TEST : ' y e s ' ,
2023-08-18 15:19:24 +05:30
EXTRA_TEST_ARGS : ' - t a l o s . e x t e n s i o n s . q e m u ' ,
2023-08-20 14:12:47 +05:30
} ) ;
2023-02-17 23:10:28 +05:30
2023-08-20 14:12:47 +05:30
local step_targets = [ extensions_build , extensions_artifacts , extensions_patch_manifest , e2e_extensions ] ;
local targets = if with_e2e then step_targets else [ extensions_build , extensions_artifacts ] ;
targets ;
2023-08-08 20:25:23 +05:30
2023-02-17 23:10:28 +05:30
2019-08-10 21:29:25 +00:00
local default_steps = [
2019-12-24 09:28:58 -08:00
setup_ci ,
2023-05-31 17:47:23 +04:00
external_artifacts ,
2020-04-07 22:49:12 +03:00
generate ,
2023-05-31 02:15:05 +05:30
uki_certs ,
2023-06-30 23:23:28 +04:00
check_dirty ,
2021-02-16 22:30:26 +03:00
build ,
2020-10-21 16:59:52 +03:00
lint ,
2020-10-30 01:08:05 +03:00
talosctl_cni_bundle ,
2021-04-16 14:33:34 +03:00
iso ,
2021-12-24 21:30:07 +03:00
images_essential ,
2019-08-09 03:45:13 +00:00
unit_tests ,
2021-02-16 22:30:26 +03:00
save_artifacts ,
2019-08-09 03:45:13 +00:00
coverage ,
2020-12-07 20:41:07 -08:00
e2e_iso ,
2020-07-30 21:44:10 +03:00
e2e_qemu ,
2020-12-07 20:41:07 -08:00
e2e_docker ,
2021-08-06 18:28:51 +03:00
release_notes ,
2020-01-01 10:28:44 -08:00
push ,
2019-11-27 15:39:53 +00:00
push_latest ,
2019-08-09 03:45:13 +00:00
] ;
local default_trigger = {
trigger : {
2019-08-12 18:28:42 +00:00
event : {
2019-08-13 00:40:00 +00:00
exclude : [
2019-08-02 16:08:24 -05:00
' t a g ' ,
' p r o m o t e ' ,
2020-12-04 10:15:31 -05:00
' c r o n ' ,
2019-08-02 16:08:24 -05:00
] ,
2019-08-09 03:45:13 +00:00
} ,
2023-01-23 23:41:58 +05:30
branch : {
exclude : [
' r e n o v a t e / * ' ,
' d e p e n d a b o t / * ' ,
] ,
2023-02-17 23:10:28 +05:30
} ,
2019-08-09 03:45:13 +00:00
} ,
} ;
2021-02-16 22:30:26 +03:00
local cron_trigger ( schedules ) = {
trigger : {
cron : {
2021-02-17 20:35:12 +03:00
include : schedules ,
2021-02-16 22:30:26 +03:00
} ,
} ,
} ;
2021-02-18 19:07:13 +03:00
local default_pipeline = Pipeline ( ' d e f a u l t ' , default_steps ) + default_trigger ;
2021-02-18 20:44:24 +03:00
local default_cron_pipeline = Pipeline ( ' c r o n - d e f a u l t ' , default_steps ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ;
2021-02-18 19:07:13 +03:00
// Full integration pipeline.
2021-02-16 22:30:26 +03:00
local default_pipeline_steps = [
setup_ci ,
load_artifacts ,
] ;
2023-02-17 23:10:28 +05:30
local integration_qemu = Step ( ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2021-02-16 22:30:26 +03:00
2023-08-20 14:12:47 +05:30
local integration_extensions = [ step for step in ExtensionsStep ( ) ] ;
2023-06-14 22:35:33 +04:00
local integration_qemu_trusted_boot = Step ( ' e 2 e - q e m u - t r u s t e d - b o o t ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
IMAGE_REGISTRY : local_registry ,
2023-06-26 22:44:03 +05:30
VIA_MAINTENANCE_MODE : ' t r u e ' ,
WITH_TRUSTED_BOOT_ISO : ' t r u e ' ,
2023-08-11 21:29:34 +05:30
EXTRA_TEST_ARGS : ' - t a l o s . t r u s t e d b o o t ' ,
2023-06-14 22:35:33 +04:00
} ) ;
2023-12-22 16:10:11 +04:00
local integration_factory_16_iso = Step ( ' f a c t o r y - 1 . 6 - i s o ' , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
FACTORY_BOOT_METHOD : ' i s o ' ,
FACTORY_VERSION : ' v 1 . 6 . 0 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 9 . 0 ' ,
FACTORY_UPGRADE : ' t r u e ' ,
FACTORY_UPGRADE_SCHEMATIC : ' c f 9 b 7 a a b 9 e d 7 c 3 6 5 d 5 3 8 4 5 0 9 b 4 d 3 1 c 0 2 f d a a 0 6 d 2 b 3 a c 6 c c 0 b c 8 0 6 f 2 8 1 3 0 e f f 1 f ' ,
FACTORY_UPGRADE_VERSION : ' v 1 . 6 . 1 ' ,
} ) ;
local integration_factory_16_image = Step ( ' f a c t o r y - 1 . 6 - i m a g e ' , depends_on = [ integration_factory_16_iso ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' d i s k - i m a g e ' ,
FACTORY_VERSION : ' v 1 . 6 . 0 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 9 . 0 ' ,
FACTORY_UPGRADE : ' t r u e ' ,
FACTORY_UPGRADE_SCHEMATIC : ' c f 9 b 7 a a b 9 e d 7 c 3 6 5 d 5 3 8 4 5 0 9 b 4 d 3 1 c 0 2 f d a a 0 6 d 2 b 3 a c 6 c c 0 b c 8 0 6 f 2 8 1 3 0 e f f 1 f ' ,
FACTORY_UPGRADE_VERSION : ' v 1 . 6 . 1 ' ,
} ) ;
local integration_factory_16_pxe = Step ( ' f a c t o r y - 1 . 6 - p x e ' , depends_on = [ integration_factory_16_image ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' p x e ' ,
FACTORY_VERSION : ' v 1 . 6 . 1 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 9 . 0 ' ,
} ) ;
local integration_factory_16_secureboot = Step ( ' f a c t o r y - 1 . 6 - s e c u r e b o o t ' , depends_on = [ integration_factory_16_pxe ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' s e c u r e b o o t - i s o ' ,
FACTORY_VERSION : ' v 1 . 6 . 0 ' ,
FACTORY_SCHEMATIC : ' c f 9 b 7 a a b 9 e d 7 c 3 6 5 d 5 3 8 4 5 0 9 b 4 d 3 1 c 0 2 f d a a 0 6 d 2 b 3 a c 6 c c 0 b c 8 0 6 f 2 8 1 3 0 e f f 1 f ' ,
KUBERNETES_VERSION : ' 1 . 2 9 . 0 ' ,
FACTORY_UPGRADE : ' t r u e ' ,
FACTORY_UPGRADE_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
FACTORY_UPGRADE_VERSION : ' v 1 . 6 . 1 ' ,
} ) ;
local integration_factory_15_iso = Step ( ' f a c t o r y - 1 . 5 - i s o ' , depends_on = [ integration_factory_16_secureboot ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' i s o ' ,
FACTORY_VERSION : ' v 1 . 5 . 5 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 8 . 5 ' ,
FACTORY_UPGRADE : ' t r u e ' ,
FACTORY_UPGRADE_SCHEMATIC : ' c f 9 b 7 a a b 9 e d 7 c 3 6 5 d 5 3 8 4 5 0 9 b 4 d 3 1 c 0 2 f d a a 0 6 d 2 b 3 a c 6 c c 0 b c 8 0 6 f 2 8 1 3 0 e f f 1 f ' ,
FACTORY_UPGRADE_VERSION : ' v 1 . 5 . 5 ' ,
} ) ;
local integration_factory_13_iso = Step ( ' f a c t o r y - 1 . 3 - i s o ' , depends_on = [ integration_factory_15_iso ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' i s o ' ,
FACTORY_VERSION : ' v 1 . 3 . 7 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 6 . 5 ' ,
FACTORY_UPGRADE : ' t r u e ' ,
FACTORY_UPGRADE_SCHEMATIC : ' c f 9 b 7 a a b 9 e d 7 c 3 6 5 d 5 3 8 4 5 0 9 b 4 d 3 1 c 0 2 f d a a 0 6 d 2 b 3 a c 6 c c 0 b c 8 0 6 f 2 8 1 3 0 e f f 1 f ' ,
FACTORY_UPGRADE_VERSION : ' v 1 . 3 . 7 ' ,
} ) ;
local integration_factory_13_image = Step ( ' f a c t o r y - 1 . 3 - i m a g e ' , depends_on = [ integration_factory_13_iso ] , target = ' e 2 e - i m a g e - f a c t o r y ' , privileged = true , environment = {
FACTORY_BOOT_METHOD : ' d i s k - i m a g e ' ,
FACTORY_VERSION : ' v 1 . 3 . 7 ' ,
FACTORY_SCHEMATIC : ' 3 7 6 5 6 7 9 8 8 a d 3 7 0 1 3 8 a d 8 b 2 6 9 8 2 1 2 3 6 7 b 8 e d c b 6 9 b 5 f d 6 8 c 8 0 b e 1 f 2 e c 7 d 6 0 3 b 4 b a ' ,
KUBERNETES_VERSION : ' 1 . 2 6 . 5 ' ,
} ) ;
2023-02-17 23:10:28 +05:30
local build_race = Step ( ' b u i l d - r a c e ' , target = ' i n i t r a m f s i n s t a l l e r ' , depends_on = [ load_artifacts ] , environment = { IMAGE_REGISTRY : local_registry , PUSH : true , TAG_SUFFIX : ' - r a c e ' , WITH_RACE : ' 1 ' , PLATFORM : ' l i n u x / a m d 6 4 ' } ) ;
local integration_qemu_race = Step ( ' e 2 e - q e m u - r a c e ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ build_race ] , environment = { IMAGE_REGISTRY : local_registry , TAG_SUFFIX : ' - r a c e ' } ) ;
2021-08-16 18:23:39 +03:00
2023-02-17 23:10:28 +05:30
local integration_provision_tests_prepare = Step ( ' p r o v i s i o n - t e s t s - p r e p a r e ' , privileged = true , depends_on = [ load_artifacts ] ) ;
local integration_provision_tests_track_0 = Step ( ' p r o v i s i o n - t e s t s - t r a c k - 0 ' , privileged = true , depends_on = [ integration_provision_tests_prepare ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
local integration_provision_tests_track_1 = Step ( ' p r o v i s i o n - t e s t s - t r a c k - 1 ' , privileged = true , depends_on = [ integration_provision_tests_prepare ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
local integration_provision_tests_track_2 = Step ( ' p r o v i s i o n - t e s t s - t r a c k - 2 ' , privileged = true , depends_on = [ integration_provision_tests_prepare ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2021-02-16 22:30:26 +03:00
2023-03-02 21:19:50 +05:30
local integration_cilium = Step ( ' e 2 e - c i l i u m ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
2023-02-17 23:10:28 +05:30
SHORT_INTEGRATION_TEST : ' y e s ' ,
2023-03-02 21:19:50 +05:30
WITH_SKIP_BOOT_PHASE_FINISHED_CHECK : ' y e s ' ,
2023-06-26 22:44:03 +05:30
WITH_CUSTOM_CNI : ' c i l i u m ' ,
2023-12-04 18:58:45 +05:30
WITH_FIREWALL : ' a c c e p t ' ,
2023-03-02 21:19:50 +05:30
QEMU_WORKERS : ' 2 ' ,
WITH_CONFIG_PATCH : ' [ { " o p " : " a d d " , " p a t h " : " / c l u s t e r / n e t w o r k " , " v a l u e " : { " c n i " : { " n a m e " : " n o n e " } } } ] ' ,
2023-02-17 23:10:28 +05:30
IMAGE_REGISTRY : local_registry ,
2020-07-01 18:34:20 +03:00
} ) ;
2023-03-02 21:19:50 +05:30
local integration_cilium_strict = Step ( ' e 2 e - c i l i u m - s t r i c t ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_cilium ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_SKIP_BOOT_PHASE_FINISHED_CHECK : ' y e s ' ,
2023-06-26 22:44:03 +05:30
WITH_CUSTOM_CNI : ' c i l i u m ' ,
2023-12-04 18:58:45 +05:30
WITH_FIREWALL : ' a c c e p t ' ,
QEMU_WORKERS : ' 2 ' ,
CILIUM_INSTALL_TYPE : ' s t r i c t ' ,
WITH_CONFIG_PATCH : ' [ { " o p " : " a d d " , " p a t h " : " / c l u s t e r / n e t w o r k " , " v a l u e " : { " c n i " : { " n a m e " : " n o n e " } } } , { " o p " : " a d d " , " p a t h " : " / c l u s t e r / p r o x y " , " v a l u e " : { " d i s a b l e d " : t r u e } } ] ' ,
IMAGE_REGISTRY : local_registry ,
} ) ;
local integration_cilium_strict_kubespan = Step ( ' e 2 e - c i l i u m - s t r i c t - k u b e s p a n ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_cilium_strict ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_SKIP_BOOT_PHASE_FINISHED_CHECK : ' y e s ' ,
WITH_CUSTOM_CNI : ' c i l i u m ' ,
WITH_FIREWALL : ' a c c e p t ' ,
WITH_KUBESPAN : ' t r u e ' ,
2023-03-02 21:19:50 +05:30
QEMU_WORKERS : ' 2 ' ,
CILIUM_INSTALL_TYPE : ' s t r i c t ' ,
WITH_CONFIG_PATCH : ' [ { " o p " : " a d d " , " p a t h " : " / c l u s t e r / n e t w o r k " , " v a l u e " : { " c n i " : { " n a m e " : " n o n e " } } } , { " o p " : " a d d " , " p a t h " : " / c l u s t e r / p r o x y " , " v a l u e " : { " d i s a b l e d " : t r u e } } ] ' ,
IMAGE_REGISTRY : local_registry ,
} ) ;
2023-06-01 07:22:44 -04:00
2023-11-27 21:13:53 +04:00
local integration_firewall = Step ( ' e 2 e - f i r e w a l l ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_FIREWALL : ' b l o c k ' ,
REGISTRY : local_registry ,
} ) ;
local integration_network_chaos = Step ( ' e 2 e - n e t w o r k - c h a o s ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_firewall ] , environment = {
2023-06-01 07:22:44 -04:00
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_NETWORK_CHAOS : ' t r u e ' ,
REGISTRY : local_registry ,
} ) ;
local integration_canal_reset = Step ( ' e 2 e - c a n a l - r e s e t ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_network_chaos ] , environment = {
2023-02-17 23:10:28 +05:30
INTEGRATION_TEST_RUN : ' T e s t I n t e g r a t i o n / a p i . R e s e t S u i t e / T e s t R e s e t W i t h S p e c ' ,
CUSTOM_CNI_URL : ' h t t p s : / / r a w . g i t h u b u s e r c o n t e n t . c o m / p r o j e c t c a l i c o / c a l i c o / v 3 . 2 5 . 0 / m a n i f e s t s / c a n a l . y a m l ' ,
REGISTRY : local_registry ,
2022-09-12 17:11:39 +04:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_bios_cgroupsv1 = Step ( ' e 2 e - b i o s - c g r o u p s v 1 ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_canal_reset ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_UEFI : ' f a l s e ' ,
IMAGE_REGISTRY : local_registry ,
WITH_CONFIG_PATCH : ' [ { " o p " : " a d d " , " p a t h " : " / m a c h i n e / i n s t a l l / e x t r a K e r n e l A r g s / - " , " v a l u e " : " t a l o s . u n i f i e d _ c g r o u p _ h i e r a r c h y = 0 " } ] ' , // use cgroupsv1
2020-08-27 23:23:20 +03:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_disk_image = Step ( ' e 2 e - d i s k - i m a g e ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_bios_cgroupsv1 ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
USE_DISK_IMAGE : ' t r u e ' ,
2023-06-26 22:44:03 +05:30
VIA_MAINTENANCE_MODE : ' t r u e ' ,
2023-02-17 23:10:28 +05:30
IMAGE_REGISTRY : local_registry ,
WITH_DISK_ENCRYPTION : ' t r u e ' ,
2021-01-31 18:23:09 +03:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_control_plane_port = Step ( ' e 2 e - c p - p o r t ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_disk_image ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
REGISTRY : local_registry ,
WITH_CONTROL_PLANE_PORT : ' 4 4 3 ' ,
2020-12-24 18:06:25 +03:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_no_cluster_discovery = Step ( ' e 2 e - n o - c l u s t e r - d i s c o v e r y ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_control_plane_port ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_CLUSTER_DISCOVERY : ' f a l s e ' ,
IMAGE_REGISTRY : local_registry ,
2021-10-14 15:40:54 +03:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_kubespan = Step ( ' e 2 e - k u b e s p a n ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_no_cluster_discovery ] , environment = {
SHORT_INTEGRATION_TEST : ' y e s ' ,
WITH_CLUSTER_DISCOVERY : ' t r u e ' ,
2023-12-04 18:58:45 +05:30
WITH_KUBESPAN : ' t r u e ' ,
2023-02-17 23:10:28 +05:30
IMAGE_REGISTRY : local_registry ,
2021-10-14 15:40:54 +03:00
} ) ;
2023-02-17 23:10:28 +05:30
local integration_default_hostname = Step ( ' e 2 e - d e f a u l t - h o s t n a m e ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ integration_kubespan ] , environment = {
// regression test: make sure Talos works in maintenance mode when no hostname is set
SHORT_INTEGRATION_TEST : ' y e s ' ,
IMAGE_REGISTRY : local_registry ,
VIA_MAINTENANCE_MODE : ' t r u e ' ,
DISABLE_DHCP_HOSTNAME : ' t r u e ' ,
2022-08-23 00:36:10 +04:00
} ) ;
2023-12-13 15:54:00 +04:00
local integration_qemu_encrypted_vip = Step ( ' e 2 e - e n c r y p t e d - k u b e s p a n - v i p ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
2023-02-17 23:10:28 +05:30
WITH_DISK_ENCRYPTION : ' t r u e ' ,
WITH_VIRTUAL_IP : ' t r u e ' ,
2023-12-13 15:54:00 +04:00
WITH_KUBESPAN : ' t r u e ' ,
2023-02-17 23:10:28 +05:30
IMAGE_REGISTRY : local_registry ,
2020-12-21 21:01:37 +03:00
} ) ;
2021-02-16 22:30:26 +03:00
2023-02-17 23:10:28 +05:30
local integration_qemu_csi = Step ( ' e 2 e - c s i ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
IMAGE_REGISTRY : local_registry ,
SHORT_INTEGRATION_TEST : ' y e s ' ,
QEMU_WORKERS : ' 3 ' ,
QEMU_CPUS_WORKERS : ' 4 ' ,
QEMU_MEMORY_WORKERS : ' 5 1 2 0 ' ,
QEMU_EXTRA_DISKS : ' 1 ' ,
QEMU_EXTRA_DISKS_SIZE : ' 1 2 2 8 8 ' ,
WITH_TEST : ' r u n _ c s i _ t e s t s ' ,
2022-01-21 19:07:13 +05:30
} ) ;
2023-02-17 23:10:28 +05:30
local integration_images = Step ( ' i m a g e s ' , target = ' i m a g e s ' , depends_on = [ load_artifacts ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
local integration_sbcs = Step ( ' s b c s ' , target = ' s b c s ' , depends_on = [ integration_images ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2023-06-26 22:44:03 +05:30
local integration_cloud_images = Step ( ' c l o u d - i m a g e s ' , depends_on = [ integration_images ] , environment = creds_env_vars ) ;
2021-12-24 21:30:07 +03:00
2023-04-20 19:20:13 +04:00
local integration_reproducibility_test = Step ( ' r e p r o d u c i b i l i t y - t e s t ' , target = ' r e p r o d u c i b i l i t y - t e s t ' , depends_on = [ load_artifacts ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2020-09-18 15:56:53 -04:00
local push_edge = {
name : ' p u s h - e d g e ' ,
image : ' a u t o n o m y / b u i l d - c o n t a i n e r : l a t e s t ' ,
pull : ' a l w a y s ' ,
environment : {
2020-09-23 16:21:43 -07:00
GHCR_USERNAME : { from_secret : ' g h c r _ u s e r n a m e ' } ,
2020-09-23 18:03:25 -07:00
GHCR_PASSWORD : { from_secret : ' g h c r _ t o k e n ' } ,
2020-09-18 15:56:53 -04:00
} ,
commands : [ ' m a k e p u s h - e d g e ' ] ,
volumes : volumes . ForStep ( ) ,
when : {
cron : [
' n i g h t l y ' ,
] ,
} ,
depends_on : [
2021-02-16 22:30:26 +03:00
integration_qemu . name ,
2020-09-18 15:56:53 -04:00
] ,
} ;
2020-06-25 22:56:59 +03:00
2023-05-19 21:24:00 +04:00
local literal_trigger ( names ) = {
trigger : {
target : {
include : names ,
} ,
} ,
} ;
2021-02-16 22:30:26 +03:00
local integration_trigger ( names ) = {
2020-06-25 22:56:59 +03:00
trigger : {
target : {
2021-02-16 22:30:26 +03:00
include : [ ' i n t e g r a t i o n ' ] + names ,
2020-07-02 00:11:26 +03:00
} ,
} ,
} ;
2021-02-16 22:30:26 +03:00
local integration_pipelines = [
// regular pipelines, triggered on promote events
Pipeline ( ' i n t e g r a t i o n - q e m u ' , default_pipeline_steps + [ integration_qemu , push_edge ] ) + integration_trigger ( [ ' i n t e g r a t i o n - q e m u ' ] ) ,
2023-06-14 22:35:33 +04:00
Pipeline ( ' i n t e g r a t i o n - t r u s t e d - b o o t ' , default_pipeline_steps + [ integration_qemu_trusted_boot ] ) + integration_trigger ( [ ' i n t e g r a t i o n - t r u s t e d - b o o t ' ] ) ,
2021-02-16 22:30:26 +03:00
Pipeline ( ' i n t e g r a t i o n - p r o v i s i o n - 0 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_0 ] ) + integration_trigger ( [ ' i n t e g r a t i o n - p r o v i s i o n ' , ' i n t e g r a t i o n - p r o v i s i o n - 0 ' ] ) ,
Pipeline ( ' i n t e g r a t i o n - p r o v i s i o n - 1 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_1 ] ) + integration_trigger ( [ ' i n t e g r a t i o n - p r o v i s i o n ' , ' i n t e g r a t i o n - p r o v i s i o n - 1 ' ] ) ,
2021-02-20 17:07:38 +03:00
Pipeline ( ' i n t e g r a t i o n - p r o v i s i o n - 2 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_2 ] ) + integration_trigger ( [ ' i n t e g r a t i o n - p r o v i s i o n ' , ' i n t e g r a t i o n - p r o v i s i o n - 2 ' ] ) ,
2023-02-17 23:10:28 +05:30
Pipeline ( ' i n t e g r a t i o n - m i s c ' , default_pipeline_steps + [
2023-11-27 21:13:53 +04:00
integration_firewall ,
2023-06-01 07:22:44 -04:00
integration_network_chaos ,
2023-02-17 23:10:28 +05:30
integration_canal_reset ,
integration_bios_cgroupsv1 ,
integration_disk_image ,
integration_control_plane_port ,
integration_no_cluster_discovery ,
integration_kubespan ,
integration_default_hostname ,
] ) + integration_trigger ( [ ' i n t e g r a t i o n - m i s c ' ] ) ,
2023-08-20 14:12:47 +05:30
Pipeline ( ' i n t e g r a t i o n - e x t e n s i o n s ' , default_pipeline_steps + integration_extensions ) + integration_trigger ( [ ' i n t e g r a t i o n - e x t e n s i o n s ' ] ) ,
2023-12-04 18:58:45 +05:30
Pipeline ( ' i n t e g r a t i o n - c i l i u m ' , default_pipeline_steps + [ integration_cilium , integration_cilium_strict , integration_cilium_strict_kubespan ] ) + integration_trigger ( [ ' i n t e g r a t i o n - c i l i u m ' ] ) ,
2021-02-24 19:46:38 +03:00
Pipeline ( ' i n t e g r a t i o n - q e m u - e n c r y p t e d - v i p ' , default_pipeline_steps + [ integration_qemu_encrypted_vip ] ) + integration_trigger ( [ ' i n t e g r a t i o n - q e m u - e n c r y p t e d - v i p ' ] ) ,
2021-08-16 18:23:39 +03:00
Pipeline ( ' i n t e g r a t i o n - q e m u - r a c e ' , default_pipeline_steps + [ build_race , integration_qemu_race ] ) + integration_trigger ( [ ' i n t e g r a t i o n - q e m u - r a c e ' ] ) ,
2022-06-08 10:59:28 +02:00
Pipeline ( ' i n t e g r a t i o n - q e m u - c s i ' , default_pipeline_steps + [ integration_qemu_csi ] ) + integration_trigger ( [ ' i n t e g r a t i o n - q e m u - c s i ' ] ) ,
2021-12-24 21:30:07 +03:00
Pipeline ( ' i n t e g r a t i o n - i m a g e s ' , default_pipeline_steps + [ integration_images , integration_sbcs ] ) + integration_trigger ( [ ' i n t e g r a t i o n - i m a g e s ' ] ) ,
2023-04-20 19:20:13 +04:00
Pipeline ( ' i n t e g r a t i o n - r e p r o d u c i b i l i t y - t e s t ' , default_pipeline_steps + [ integration_reproducibility_test ] ) + integration_trigger ( [ ' i n t e g r a t i o n - r e p r o d u c i b i l i t y ' ] ) ,
2023-05-19 21:24:00 +04:00
Pipeline ( ' i n t e g r a t i o n - c l o u d - i m a g e s ' , default_pipeline_steps + [ integration_images , integration_cloud_images ] ) + literal_trigger ( [ ' i n t e g r a t i o n - c l o u d - i m a g e s ' ] ) ,
2023-12-22 16:10:11 +04:00
Pipeline ( ' i m a g e - f a c t o r y ' , default_pipeline_steps + [
integration_factory_16_iso ,
integration_factory_16_image ,
integration_factory_16_pxe ,
integration_factory_16_secureboot ,
integration_factory_15_iso ,
integration_factory_13_iso ,
integration_factory_13_image ,
] ) + literal_trigger ( [ ' i m a g e - f a c t o r y ' ] ) ,
2021-02-16 22:30:26 +03:00
// cron pipelines, triggered on schedule events
2021-02-18 19:07:13 +03:00
Pipeline ( ' c r o n - i n t e g r a t i o n - q e m u ' , default_pipeline_steps + [ integration_qemu , push_edge ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
Pipeline ( ' c r o n - i n t e g r a t i o n - p r o v i s i o n - 0 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_0 ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
Pipeline ( ' c r o n - i n t e g r a t i o n - p r o v i s i o n - 1 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_1 ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2021-02-20 17:07:38 +03:00
Pipeline ( ' c r o n - i n t e g r a t i o n - p r o v i s i o n - 2 ' , default_pipeline_steps + [ integration_provision_tests_prepare , integration_provision_tests_track_2 ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2023-02-17 23:10:28 +05:30
Pipeline ( ' c r o n - i n t e g r a t i o n - m i s c ' , default_pipeline_steps + [
2023-11-27 21:13:53 +04:00
integration_firewall ,
2023-06-08 17:34:19 +04:00
integration_network_chaos ,
2023-02-17 23:10:28 +05:30
integration_canal_reset ,
integration_bios_cgroupsv1 ,
integration_disk_image ,
integration_control_plane_port ,
integration_no_cluster_discovery ,
integration_kubespan ,
integration_default_hostname ,
] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2023-08-20 14:12:47 +05:30
Pipeline ( ' c r o n - i n t e g r a t i o n - e x t e n s i o n s ' , default_pipeline_steps + integration_extensions , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2023-12-04 18:58:45 +05:30
Pipeline ( ' c r o n - i n t e g r a t i o n - c i l i u m ' , default_pipeline_steps + [ integration_cilium , integration_cilium_strict , integration_cilium_strict_kubespan ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2021-02-24 19:46:38 +03:00
Pipeline ( ' c r o n - i n t e g r a t i o n - q e m u - e n c r y p t e d - v i p ' , default_pipeline_steps + [ integration_qemu_encrypted_vip ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2021-08-16 18:23:39 +03:00
Pipeline ( ' c r o n - i n t e g r a t i o n - q e m u - r a c e ' , default_pipeline_steps + [ build_race , integration_qemu_race ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2022-06-08 10:59:28 +02:00
Pipeline ( ' c r o n - i n t e g r a t i o n - q e m u - c s i ' , default_pipeline_steps + [ integration_qemu_csi ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2021-12-24 21:30:07 +03:00
Pipeline ( ' c r o n - i n t e g r a t i o n - i m a g e s ' , default_pipeline_steps + [ integration_images , integration_sbcs ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2023-04-20 19:20:13 +04:00
Pipeline ( ' c r o n - i n t e g r a t i o n - r e p r o d u c i b i l i t y - t e s t ' , default_pipeline_steps + [ integration_reproducibility_test ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2023-12-22 16:10:11 +04:00
Pipeline ( ' c r o n - i m a g e - f a c t o r y ' , default_pipeline_steps + [
integration_factory_16_iso ,
integration_factory_16_image ,
integration_factory_16_pxe ,
integration_factory_16_secureboot ,
integration_factory_15_iso ,
integration_factory_13_iso ,
integration_factory_13_image ,
] ,
[ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2021-02-16 22:30:26 +03:00
] ;
2020-07-02 00:11:26 +03:00
2020-06-25 22:56:59 +03:00
2019-08-10 21:29:25 +00:00
// E2E pipeline.
2023-02-17 23:10:28 +05:30
local capi_docker = Step ( ' e 2 e - d o c k e r ' , depends_on = [ load_artifacts ] , target = ' e 2 e - d o c k e r ' , environment = {
IMAGE_REGISTRY : local_registry ,
SHORT_INTEGRATION_TEST : ' y e s ' ,
INTEGRATION_TEST_RUN : ' X X X ' ,
2021-08-09 15:19:14 +00:00
} ) ;
2023-02-17 23:10:28 +05:30
local e2e_capi = Step ( ' e 2 e - c a p i ' , depends_on = [ capi_docker ] , environment = creds_env_vars ) ;
2023-08-03 20:50:54 +05:30
2023-08-18 15:19:24 +05:30
local E2EAWS ( target ) =
local extensions_artifacts = [ step for step in ExtensionsStep ( with_e2e = false ) ] ;
local depends_on = if std.startsWith ( target , ' n v i d i a ' ) then [ load_artifacts ] + extensions_artifacts else [ load_artifacts ] ;
local test_num_nodes = if std.startsWith ( target , ' n v i d i a ' ) then 4 else 6 ;
local extra_test_args = if std.startsWith ( target , ' n v i d i a ' ) then ' - t a l o s . e x t e n s i o n s . n v i d i a ' else ' ' ;
local e2e_aws_prepare = Step (
' e 2 e - a w s - p r e p a r e ' ,
depends_on = depends_on ,
environment = creds_env_vars {
IMAGE_REGISTRY : local_registry ,
E2E_AWS_TARGET : target ,
} ,
extra_commands = [
' a z l o g i n - - s e r v i c e - p r i n c i p a l - u " $ $ { A Z U R E _ C L I E N T _ I D } " - p " $ $ { A Z U R E _ C L I E N T _ S E C R E T } " - - t e n a n t " $ $ { A Z U R E _ T E N A N T _ I D } " ' ,
' a z s t o r a g e b l o b u p l o a d - b a t c h - - o v e r w r i t e - s _ o u t - - p a t t e r n " e 2 e - a w s - g e n e r a t e d / * " - d " $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } " ' ,
]
) ;
2023-08-03 20:50:54 +05:30
2023-08-18 15:19:24 +05:30
local tf_apply = TriggerDownstream (
' t f - a p p l y ' ,
' e 2 e - t a l o s - t f - a p p l y ' ,
[ ' s i d e r o l a b s / c o n t r i b @ m a i n ' ] ,
params = [
' B U C K E T _ P A T H = $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
' T Y P E = a w s ' ,
' A W S _ D E F A U L T _ R E G I O N = u s - e a s t - 1 ' ,
] ,
depends_on = [ e2e_aws_prepare ] ,
) ;
2023-08-03 20:50:54 +05:30
2023-08-18 15:19:24 +05:30
local e2e_aws_tf_apply_post = Step (
' e 2 e - a w s - d o w n l o a d - a r t i f a c t s ' ,
with_make = false ,
environment = creds_env_vars ,
extra_commands = [
' a z l o g i n - - s e r v i c e - p r i n c i p a l - u " $ $ { A Z U R E _ C L I E N T _ I D } " - p " $ $ { A Z U R E _ C L I E N T _ S E C R E T } " - - t e n a n t " $ $ { A Z U R E _ T E N A N T _ I D } " ' ,
' a z s t o r a g e b l o b d o w n l o a d - f _ o u t / e 2 e - a w s - t a l o s c o n f i g - n e 2 e - a w s - t a l o s c o n f i g - c $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
' a z s t o r a g e b l o b d o w n l o a d - f _ o u t / e 2 e - a w s - k u b e c o n f i g - n e 2 e - a w s - k u b e c o n f i g - c $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
] ,
depends_on = [ tf_apply ] ,
) ;
2023-08-03 20:50:54 +05:30
2023-08-18 15:19:24 +05:30
local e2e_aws = Step (
' e 2 e - a w s ' ,
depends_on = [ e2e_aws_tf_apply_post ] ,
environment = creds_env_vars {
TEST_NUM_NODES : test_num_nodes ,
EXTRA_TEST_ARGS : extra_test_args ,
}
) ;
2023-08-03 20:50:54 +05:30
2023-08-18 15:19:24 +05:30
local tf_destroy = TriggerDownstream (
' t f - d e s t r o y ' ,
' e 2 e - t a l o s - t f - d e s t r o y ' ,
[ ' s i d e r o l a b s / c o n t r i b @ m a i n ' ] ,
params = [
' B U C K E T _ P A T H = $ { C I _ C O M M I T _ S H A } $ { D R O N E _ T A G / / . / - } ' ,
' T Y P E = a w s ' ,
' A W S _ D E F A U L T _ R E G I O N = u s - e a s t - 1 ' ,
2023-08-03 20:50:54 +05:30
] ,
2023-08-18 15:19:24 +05:30
depends_on = [ e2e_aws ] ,
when = {
status : [
' f a i l u r e ' ,
' s u c c e s s ' ,
] ,
} ,
) ;
local step_targets = [ e2e_aws_prepare , tf_apply , e2e_aws_tf_apply_post , e2e_aws , tf_destroy ] ;
local targets = if std.startsWith ( target , ' n v i d i a ' ) then extensions_artifacts + step_targets else step_targets ;
targets ;
local e2e_aws = [ step for step in E2EAWS ( ' d e f a u l t ' ) ] ;
local e2e_aws_nvidia_oss = [ step for step in E2EAWS ( ' n v i d i a - o s s ' ) ] ;
2023-08-03 20:50:54 +05:30
2023-02-17 23:10:28 +05:30
local e2e_azure = Step ( ' e 2 e - a z u r e ' , depends_on = [ e2e_capi ] , environment = creds_env_vars ) ;
local e2e_gcp = Step ( ' e 2 e - g c p ' , depends_on = [ e2e_capi ] , environment = creds_env_vars ) ;
2019-08-10 21:29:25 +00:00
2021-02-16 22:30:26 +03:00
local e2e_trigger ( names ) = {
2019-08-09 03:45:13 +00:00
trigger : {
target : {
2021-02-16 22:30:26 +03:00
include : [ ' e 2 e ' ] + names ,
2019-08-09 03:45:13 +00:00
} ,
} ,
} ;
2021-02-16 22:30:26 +03:00
local e2e_pipelines = [
// regular pipelines, triggered on promote events
2023-08-18 15:19:24 +05:30
Pipeline ( ' e 2 e - a w s ' , default_pipeline_steps + e2e_aws ) + e2e_trigger ( [ ' e 2 e - a w s ' ] ) ,
Pipeline ( ' e 2 e - a w s - n v i d i a - o s s ' , default_pipeline_steps + e2e_aws_nvidia_oss ) + e2e_trigger ( [ ' e 2 e - a w s - n v i d i a - o s s ' ] ) ,
2021-02-16 22:30:26 +03:00
Pipeline ( ' e 2 e - g c p ' , default_pipeline_steps + [ capi_docker , e2e_capi , e2e_gcp ] ) + e2e_trigger ( [ ' e 2 e - g c p ' ] ) ,
// cron pipelines, triggered on schedule events
2023-08-18 15:19:24 +05:30
Pipeline ( ' c r o n - e 2 e - a w s ' , default_pipeline_steps + e2e_aws , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2023-02-17 23:10:28 +05:30
Pipeline ( ' c r o n - e 2 e - g c p ' , default_pipeline_steps + [ capi_docker , e2e_capi , e2e_gcp ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' t h r i c e - d a i l y ' , ' n i g h t l y ' ] ) ,
2021-02-16 22:30:26 +03:00
] ;
2019-08-10 21:29:25 +00:00
// Conformance pipeline.
2023-02-17 23:10:28 +05:30
local conformance_k8s_qemu = Step ( ' c o n f o r m a n c e - k 8 s - q e m u ' , target = ' e 2 e - q e m u ' , privileged = true , depends_on = [ load_artifacts ] , environment = {
QEMU_WORKERS : ' 2 ' , // conformance test requires >=2 workers
QEMU_CPUS : ' 4 ' , // conformance test in parallel runs with number of CPUs
TEST_MODE : ' f a s t - c o n f o r m a n c e ' ,
IMAGE_REGISTRY : local_registry ,
2021-04-14 16:19:15 +03:00
} ) ;
2019-08-10 21:29:25 +00:00
2021-02-16 22:30:26 +03:00
local conformance_trigger ( names ) = {
2019-08-09 03:45:13 +00:00
trigger : {
target : {
2021-02-16 22:30:26 +03:00
include : [ ' c o n f o r m a n c e ' ] + names ,
2019-08-09 03:45:13 +00:00
} ,
} ,
} ;
2021-02-16 22:30:26 +03:00
local conformance_pipelines = [
2021-04-14 16:19:15 +03:00
// regular pipelines, triggered on promote events
Pipeline ( ' c o n f o r m a n c e - q e m u ' , default_pipeline_steps + [ conformance_k8s_qemu ] ) + conformance_trigger ( [ ' c o n f o r m a n c e - q e m u ' ] ) ,
// cron pipelines, triggered on schedule events
2021-05-07 21:37:34 +03:00
Pipeline ( ' c r o n - c o n f o r m a n c e - q e m u ' , default_pipeline_steps + [ conformance_k8s_qemu ] , [ default_cron_pipeline ] ) + cron_trigger ( [ ' n i g h t l y ' ] ) ,
2021-02-16 22:30:26 +03:00
] ;
2019-08-10 21:29:25 +00:00
// Release pipeline.
2023-07-31 14:55:35 +04:00
local cloud_images = Step ( ' c l o u d - i m a g e s ' , depends_on = [ e2e_docker , e2e_qemu ] , environment = creds_env_vars ) ;
2023-08-09 22:47:49 +04:00
local images = Step ( ' i m a g e s ' , target = ' i m a g e s ' , depends_on = [ iso , images_essential , save_artifacts ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2023-02-17 23:10:28 +05:30
local sbcs = Step ( ' s b c s ' , target = ' s b c s ' , depends_on = [ images ] , environment = { IMAGE_REGISTRY : local_registry } ) ;
2021-06-23 14:05:10 -04:00
2019-08-10 21:29:25 +00:00
// TODO(andrewrynhard): We should run E2E tests on a release.
2019-08-02 16:08:24 -05:00
local release = {
name : ' r e l e a s e ' ,
image : ' p l u g i n s / g i t h u b - r e l e a s e ' ,
settings : {
api_key : { from_secret : ' g i t h u b _ t o k e n ' } ,
2019-08-10 21:29:25 +00:00
draft : true ,
2020-07-28 13:55:47 -07:00
note : ' _ o u t / R E L E A S E _ N O T E S . m d ' ,
2019-12-30 17:16:37 -08:00
files : [
2023-07-27 12:50:06 +04:00
' _ o u t / a w s - a m d 6 4 . r a w . x z ' ,
' _ o u t / a w s - a r m 6 4 . r a w . x z ' ,
' _ o u t / a z u r e - a m d 6 4 . v h d . x z ' ,
' _ o u t / a z u r e - a r m 6 4 . v h d . x z ' ,
2023-07-31 14:55:35 +04:00
' _ o u t / c l o u d - i m a g e s . j s o n ' ,
2022-06-23 05:36:22 -04:00
' _ o u t / d i g i t a l - o c e a n - a m d 6 4 . r a w . g z ' ,
' _ o u t / d i g i t a l - o c e a n - a r m 6 4 . r a w . g z ' ,
2023-07-27 12:50:06 +04:00
' _ o u t / e x o s c a l e - a m d 6 4 . q c o w 2 . x z ' ,
' _ o u t / e x o s c a l e - a r m 6 4 . q c o w 2 . x z ' ,
' _ o u t / g c p - a m d 6 4 . r a w . t a r . g z ' ,
' _ o u t / g c p - a r m 6 4 . r a w . t a r . g z ' ,
2021-08-17 15:29:59 +00:00
' _ o u t / h c l o u d - a m d 6 4 . r a w . x z ' ,
' _ o u t / h c l o u d - a r m 6 4 . r a w . x z ' ,
2020-09-26 00:00:43 +03:00
' _ o u t / i n i t r a m f s - a m d 6 4 . x z ' ,
' _ o u t / i n i t r a m f s - a r m 6 4 . x z ' ,
2023-07-27 12:50:06 +04:00
' _ o u t / m e t a l - a m d 6 4 . i s o ' ,
' _ o u t / m e t a l - a r m 6 4 . i s o ' ,
' _ o u t / m e t a l - a m d 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - r p i _ g e n e r i c - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - r o c k p i _ 4 - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - r o c k p i _ 4 c - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - r o c k 6 4 - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - p i n e 6 4 - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - b a n a n a p i _ m 6 4 - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - l i b r e t e c h _ a l l _ h 3 _ c c _ h 5 - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - j e t s o n _ n a n o - a r m 6 4 . r a w . x z ' ,
' _ o u t / m e t a l - n a n o p i _ r 4 s - a r m 6 4 . r a w . x z ' ,
2021-08-28 07:56:26 +00:00
' _ o u t / n o c l o u d - a m d 6 4 . r a w . x z ' ,
' _ o u t / n o c l o u d - a r m 6 4 . r a w . x z ' ,
2024-02-03 13:15:34 +00:00
' _ o u t / o p e n n e b u l a - a m d 6 4 . r a w . x z ' ,
' _ o u t / o p e n n e b u l a - a r m 6 4 . r a w . x z ' ,
2023-08-17 13:36:35 +04:00
' _ o u t / o p e n s t a c k - a m d 6 4 . r a w . x z ' ,
' _ o u t / o p e n s t a c k - a r m 6 4 . r a w . x z ' ,
2021-12-17 06:18:32 +00:00
' _ o u t / o r a c l e - a m d 6 4 . q c o w 2 . x z ' ,
' _ o u t / o r a c l e - a r m 6 4 . q c o w 2 . x z ' ,
2021-08-21 17:00:00 +00:00
' _ o u t / s c a l e w a y - a m d 6 4 . r a w . x z ' ,
' _ o u t / s c a l e w a y - a r m 6 4 . r a w . x z ' ,
2023-08-03 22:18:08 +04:00
' _ o u t / s d - b o o t - a m d 6 4 . e f i ' ,
' _ o u t / s d - b o o t - a r m 6 4 . e f i ' ,
' _ o u t / s d - s t u b - a m d 6 4 . e f i ' ,
' _ o u t / s d - s t u b - a r m 6 4 . e f i ' ,
2020-10-30 01:08:05 +03:00
' _ o u t / t a l o s c t l - c n i - b u n d l e - a m d 6 4 . t a r . g z ' ,
' _ o u t / t a l o s c t l - c n i - b u n d l e - a r m 6 4 . t a r . g z ' ,
2020-03-20 17:38:48 -07:00
' _ o u t / t a l o s c t l - d a r w i n - a m d 6 4 ' ,
2021-04-20 15:58:30 +03:00
' _ o u t / t a l o s c t l - d a r w i n - a r m 6 4 ' ,
2022-07-13 12:47:55 -05:00
' _ o u t / t a l o s c t l - f r e e b s d - a m d 6 4 ' ,
' _ o u t / t a l o s c t l - f r e e b s d - a r m 6 4 ' ,
2020-03-20 17:38:48 -07:00
' _ o u t / t a l o s c t l - l i n u x - a m d 6 4 ' ,
2020-03-21 14:27:03 -07:00
' _ o u t / t a l o s c t l - l i n u x - a r m 6 4 ' ,
2020-03-21 18:08:09 -07:00
' _ o u t / t a l o s c t l - l i n u x - a r m v 7 ' ,
2021-08-25 09:08:48 -07:00
' _ o u t / t a l o s c t l - w i n d o w s - a m d 6 4 . e x e ' ,
2021-08-24 18:09:51 +00:00
' _ o u t / u p c l o u d - a m d 6 4 . r a w . x z ' ,
' _ o u t / u p c l o u d - a r m 6 4 . r a w . x z ' ,
2020-11-13 17:17:07 +03:00
' _ o u t / v m w a r e - a m d 6 4 . o v a ' ,
' _ o u t / v m w a r e - a r m 6 4 . o v a ' ,
2020-09-26 00:00:43 +03:00
' _ o u t / v m l i n u z - a m d 6 4 ' ,
' _ o u t / v m l i n u z - a r m 6 4 ' ,
2021-08-25 18:13:17 +00:00
' _ o u t / v u l t r - a m d 6 4 . r a w . x z ' ,
' _ o u t / v u l t r - a r m 6 4 . r a w . x z ' ,
2019-12-30 17:16:37 -08:00
] ,
2019-08-02 16:08:24 -05:00
checksum : [ ' s h a 2 5 6 ' , ' s h a 5 1 2 ' ] ,
2019-08-10 21:29:25 +00:00
} ,
when : {
2019-08-02 16:08:24 -05:00
event : [ ' t a g ' ] ,
2019-08-10 21:29:25 +00:00
} ,
2023-07-25 15:13:15 +04:00
depends_on : [
build . name ,
2023-07-31 14:55:35 +04:00
cloud_images . name ,
2023-07-25 15:13:15 +04:00
talosctl_cni_bundle . name ,
images . name ,
sbcs . name ,
iso . name ,
push . name ,
release_notes . name ,
] ,
2019-08-10 21:29:25 +00:00
} ;
local release_steps = default_steps + [
2021-12-30 17:46:00 +03:00
images ,
sbcs ,
2023-07-31 14:55:35 +04:00
cloud_images ,
2019-08-11 16:54:33 +00:00
release ,
2019-08-10 21:29:25 +00:00
] ;
2019-08-09 03:45:13 +00:00
local release_trigger = {
trigger : {
2019-08-11 17:52:20 +00:00
event : [
2019-08-02 16:08:24 -05:00
' t a g ' ,
2019-08-11 17:52:20 +00:00
] ,
2021-07-07 19:09:37 +03:00
ref : {
exclude : [
2023-02-17 23:10:28 +05:30
' r e f s / t a g s / p k g / * * ' ,
2021-07-07 19:09:37 +03:00
] ,
} ,
2019-08-09 03:45:13 +00:00
} ,
} ;
2019-08-02 16:08:24 -05:00
local release_pipeline = Pipeline ( ' r e l e a s e ' , release_steps ) + release_trigger ;
2019-08-10 21:29:25 +00:00
// Notify pipeline.
local notify = {
2019-08-02 16:08:24 -05:00
name : ' s l a c k ' ,
image : ' p l u g i n s / s l a c k ' ,
2020-07-23 11:21:42 -07:00
settings : {
2023-02-17 23:10:28 +05:30
webhook : { from_secret : ' s l a c k _ w e b h o o k ' } ,
channel : ' p r o j - t a l o s - m a i n t a i n e r s ' ,
link_names : true ,
template : ' { { # i f b u i l d . p u l l } } \n * { { # s u c c e s s b u i l d . s t a t u s } } ✓ S u c c e s s { { e l s e } } ✕ F a i l { { / s u c c e s s } } * : { { r e p o . o w n e r } } / { { r e p o . n a m e } } - < h t t p s : / / g i t h u b . c o m / { { r e p o . o w n e r } } / { { r e p o . n a m e } } / p u l l / { { b u i l d . p u l l } } | P u l l R e q u e s t # { { b u i l d . p u l l } } > \n { { e l s e } } \n * { { # s u c c e s s b u i l d . s t a t u s } } ✓ S u c c e s s { { e l s e } } ✕ F a i l { { / s u c c e s s } } : { { r e p o . o w n e r } } / { { r e p o . n a m e } } - B u i l d # { { b u i l d . n u m b e r } } * ( t y p e : ` { { b u i l d . e v e n t } } ` ) \n { { / i f } } \n C o m m i t : < h t t p s : / / g i t h u b . c o m / { { r e p o . o w n e r } } / { { r e p o . n a m e } } / c o m m i t / { { b u i l d . c o m m i t } } | { { t r u n c a t e b u i l d . c o m m i t 8 } } > \n B r a n c h : < h t t p s : / / g i t h u b . c o m / { { r e p o . o w n e r } } / { { r e p o . n a m e } } / c o m m i t s / { { b u i l d . b r a n c h } } | { { b u i l d . b r a n c h } } > \n A u t h o r : { { b u i l d . a u t h o r } } \n < { { b u i l d . l i n k } } | V i s i t b u i l d p a g e > ' ,
} ,
2020-07-23 11:21:42 -07:00
when : {
status : [
' s u c c e s s ' ,
2023-02-17 23:10:28 +05:30
' f a i l u r e ' ,
2020-07-23 11:21:42 -07:00
] ,
} ,
2019-08-10 21:29:25 +00:00
} ;
local notify_steps = [ notify ] ;
2019-08-09 03:45:13 +00:00
local notify_trigger = {
trigger : {
2019-08-02 16:08:24 -05:00
status : [ ' s u c c e s s ' , ' f a i l u r e ' ] ,
2023-01-30 19:01:13 +05:30
branch : {
2023-01-23 23:41:58 +05:30
exclude : [
' r e n o v a t e / * ' ,
' d e p e n d a b o t / * ' ,
] ,
2023-02-17 23:10:28 +05:30
} ,
} ,
2019-08-09 03:45:13 +00:00
} ;
2021-06-23 14:05:10 -04:00
local notify_pipeline = Pipeline ( ' n o t i f y ' , notify_steps , [ default_pipeline , release_pipeline ] + integration_pipelines + e2e_pipelines + conformance_pipelines , false , true ) + notify_trigger ;
2019-08-10 21:29:25 +00:00
// Final configuration file definition.
2019-08-09 03:45:13 +00:00
[
default_pipeline ,
2021-02-18 20:44:24 +03:00
default_cron_pipeline ,
2019-08-09 03:45:13 +00:00
release_pipeline ,
2021-02-16 22:30:26 +03:00
] + integration_pipelines + e2e_pipelines + conformance_pipelines + [
2019-08-09 03:45:13 +00:00
notify_pipeline ,
]