.gitlab-ci.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. image: ghcr.io/siemens/kas/kas:3.2
  2. variables:
  3. CPU_REQUEST: ""
  4. DEFAULT_TAG: ""
  5. # These are needed as the k8s executor doesn't respect the container entrypoint
  6. # by default
  7. FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
  8. FF_KUBERNETES_HONOR_ENTRYPOINT: 1
  9. stages:
  10. - prep
  11. - bootstrap
  12. - build
  13. # Common job fragment to get a worker ready
  14. .setup:
  15. tags:
  16. - $DEFAULT_TAG
  17. stage: build
  18. variables:
  19. KAS_WORK_DIR: $CI_PROJECT_DIR/work
  20. KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
  21. SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
  22. DL_DIR: $CI_BUILDS_DIR/persist/downloads
  23. BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
  24. IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
  25. before_script:
  26. - echo KAS_WORK_DIR = $KAS_WORK_DIR
  27. - echo SSTATE_DIR = $SSTATE_DIR
  28. - echo DL_DIR = $DL_DIR
  29. - rm -rf $KAS_WORK_DIR
  30. - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR
  31. # Generalised fragment to do a Kas build
  32. .build:
  33. extends: .setup
  34. variables:
  35. KUBERNETES_CPU_REQUEST: $CPU_REQUEST
  36. interruptible: true
  37. script:
  38. - KASFILES=$(./ci/jobs-to-kas $CI_JOB_NAME)
  39. - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
  40. - kas build $KASFILES
  41. - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
  42. #
  43. # Prep stage, update repositories once
  44. #
  45. update-repos:
  46. extends: .setup
  47. stage: prep
  48. script:
  49. - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
  50. #
  51. # Bootstrap stage, bootstrap and machine coverage
  52. #
  53. # Build a number of native tools first to ensure the other builders don't race
  54. # over them
  55. n1sdp/bootstrap:
  56. extends: .build
  57. stage: bootstrap
  58. # What percentage of machines in the layer do we build
  59. machine-coverage:
  60. stage: bootstrap
  61. tags:
  62. - $DEFAULT_TAG
  63. script:
  64. - ./ci/check-machine-coverage
  65. coverage: '/Coverage: \d+/'
  66. #
  67. # Build stage, the actual build jobs
  68. #
  69. a5ds:
  70. extends: .build
  71. foundation-armv8:
  72. extends: .build
  73. fvp-base:
  74. extends: .build
  75. gem5-arm64:
  76. extends: .build
  77. juno:
  78. extends: .build
  79. juno/musl:
  80. extends: .build
  81. n1sdp:
  82. extends: .build
  83. n1sdp/armgcc:
  84. extends: .build
  85. qemuarm/testimage:
  86. extends: .build
  87. qemuarmv5/testimage:
  88. extends: .build
  89. tc0:
  90. extends: .build
  91. #
  92. # Utility tasks, not executed automatically
  93. #
  94. delete-dl-dir:
  95. extends: .setup
  96. stage: prep
  97. when: manual
  98. script:
  99. - rm -rf $DL_DIR/*
  100. delete-repo-dir:
  101. extends: .setup
  102. stage: prep
  103. when: manual
  104. script:
  105. - rm -rf $KAS_REPO_REF_DIR/*
  106. # Delete all sstate
  107. delete-sstate:
  108. extends: .setup
  109. stage: prep
  110. when: manual
  111. script:
  112. - rm -rf $SSTATE_DIR/*
  113. # Wipe out old sstate
  114. prune-sstate:
  115. extends: .setup
  116. stage: prep
  117. when: manual
  118. script:
  119. - du -h -s $SSTATE_DIR
  120. - find $SSTATE_DIR -type f -atime +30 -delete
  121. - du -h -s $SSTATE_DIR
  122. # Report on disk usage
  123. usage:
  124. extends: .setup
  125. stage: prep
  126. when: manual
  127. script:
  128. - du -h -s $DL_DIR $SSTATE_DIR $KAS_REPO_REF_DIR