ci: add CI file

Signed-off-by: Roman Okhrimenko <roman.okhrimenko@cypress.com>
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..60599ae
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,591 @@
+stages:
+  - build
+  - swap_tests
+  - overwrite_tests
+  - checks
+
+
+variables:
+
+# git clone test suite folder location
+    TEST_FOLDER: tests/cy_boot_test_suite
+
+# branch or tag seletct for test suite
+    TEST_BRANCH: mcuboot_ci
+
+# branch with CppCheck scripts and config
+    CPPCHECK_BRANCH: pr/cypress-mcuboot-cppcheck
+
+# DO NOT EDIT. Internal CI tools path
+    OBJCOPY_PATH: C:/Users/cydesigner/ModusToolbox/tools_2.0/gcc-7.2.1/bin/arm-none-eabi-objcopy
+    OPENOCD_PATH: C:/Users/cydesigner/ModusToolbox/tools_2.0/openocd
+    TOOLCHAIN_PATH: /home/fw-security/ModusToolbox/tools_2.0/gcc-7.2.1
+
+# Default test selector. Can be overwriten by CI variables.
+
+# TWO_TESTS - minimal boot/upgrade positive tests
+# THREE_TESTS - two positive and one negative test
+# SMOKE_MCUBOOT - short overwrite+swap(optional)tests
+# MCUBOOT_CI_OVERNIGHT - general tests for overnight run
+# MCU_BOOT_ALL - complete list of all MCUBoot tests
+# CUSTOM - manualy selected by test suite repo label
+
+    SINGLE_SWAP: SMOKE_MCUBOOT
+    SINGLE_SMIF_SWAP: SMOKE_MCUBOOT
+    MULTI_APP1_SWAP: SMOKE_MCUBOOT
+    MULTI_APP1_SMIF_SWAP: SMOKE_MCUBOOT
+
+    SINGLE_SWAP_RELEASE: THREE_TESTS
+    SINGLE_SMIF_SWAP_RELEASE: THREE_TESTS
+    MULTI_APP1_SWAP_RELEASE: THREE_TESTS
+    MULTI_APP1_SMIF_SWAP_RELEASE: THREE_TESTS
+
+    SINGLE_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+    SINGLE_SMIF_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+    MULTI_APP1_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+    MULTI_APP1_SMIF_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+    MULTI_APP2_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+    MULTI_APP2_SMIF_OVERWRITE: MCUBOOT_CI_OVERNIGHT
+
+    SINGLE_OVERWRITE_RELEASE: TWO_TESTS
+    SINGLE_SMIF_OVERWRITE_RELEASE: TWO_TESTS
+    MULTI_APP1_OVERWRITE_RELEASE: TWO_TESTS
+    MULTI_APP1_SMIF_OVERWRITE_RELEASE: TWO_TESTS
+    MULTI_APP2_OVERWRITE_RELEASE: TWO_TESTS
+    MULTI_APP2_SMIF_OVERWRITE_RELEASE: TWO_TESTS
+
+##################################################### C O M M O N   E X T E N D S #####################################################
+
+.build_common:
+  stage: build
+  tags:
+    - FWS_LIN_BUILD
+
+
+.swap_common:
+  stage: swap_tests
+  tags:
+    - MBED_TEST
+  variables:
+    CI_SERIAL_PORT: COM6
+    TARGET_ID: 1D18021003077400
+  artifacts:
+    when: always
+    expire_in: 12 weeks
+    paths:
+      - tests/cy_boot_test_suite/test_tools/authomated_run/*.txt
+  script:
+    - git clone http://git-ore.aus.cypress.com/YNCI/cy_boot_test_suite.git -b $TEST_BRANCH $TEST_FOLDER
+    - cd $TEST_FOLDER/test_tools
+    - C:/Windows/System32/cmd.exe /c create_binaries.bat
+    - C:/Windows/System32/cmd.exe /c ci\mcuboot\program.bat
+    - C:/Windows/System32/cmd.exe /c ci\multi_image\program.bat
+    - C:/Windows/System32/cmd.exe /c execute_tests.bat
+
+
+.overwrite_common:
+  stage: overwrite_tests
+  tags:
+    - MCUBOOT_TESTS
+  variables:
+    CI_SERIAL_PORT: COM19
+    TARGET_ID: 170C0C1C02179400
+  retry:
+    max: 1
+  artifacts:
+    when: always
+    expire_in: 12 weeks
+    paths:
+      - tests/cy_boot_test_suite/test_tools/authomated_run/*.txt
+  script:
+    - git clone http://git-ore.aus.cypress.com/YNCI/cy_boot_test_suite.git -b $TEST_BRANCH $TEST_FOLDER
+    - cd $TEST_FOLDER/test_tools
+    - C:/Windows/System32/cmd.exe /c create_binaries.bat
+    - C:/Windows/System32/cmd.exe /c ci\mcuboot\program.bat
+    - C:/Windows/System32/cmd.exe /c ci\multi_image\program.bat
+    - C:/Windows/System32/cmd.exe /c execute_tests.bat
+
+######################################################## B L I N K Y   A P P S ########################################################
+
+blinky_boot:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/boot/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/boot/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/boot/BlinkyApp.hex
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/boot/BlinkyApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=BlinkyApp BUILDCFG=Debug PLATFORM=PSOC_062_2M IMG_TYPE=BOOT
+    - make app APP_NAME=BlinkyApp BUILDCFG=Release PLATFORM=PSOC_062_2M IMG_TYPE=BOOT
+
+
+blinky_upgrade:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/upgrade/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp_upgrade.hex
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/upgrade/BlinkyApp_upgrade.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=BlinkyApp BUILDCFG=Debug PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x10000
+    - make app APP_NAME=BlinkyApp BUILDCFG=Release PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x10000
+
+
+blinky_upgrade_smif:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/upgrade/BlinkyApp.elf
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp_upgrade.hex
+      - boot/cypress/BlinkyApp/out/PSOC_062_2M/Release/upgrade/BlinkyApp_upgrade.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=BlinkyApp BUILDCFG=Debug PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x7FE8000 ERASED_VALUE=0xff SWAP_UPGRADE=2
+    - make app APP_NAME=BlinkyApp BUILDCFG=Release PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x7FE8000 ERASED_VALUE=0xff SWAP_UPGRADE=2
+
+
+################################################### M C U B O O T   S W A P   M O D E #################################################
+
+swap_mcuboot_single:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress 
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=1
+
+
+
+swap_mcuboot_multi:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress 
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=2
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=2
+
+
+swap_mcuboot_single_smif:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress 
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=1 USE_EXTERNAL_FLASH=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=1 USE_EXTERNAL_FLASH=1
+
+
+swap_mcuboot_multi_smif:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress 
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=2 USE_EXTERNAL_FLASH=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=2 USE_EXTERNAL_FLASH=1
+
+
+############################################## M C U B O O T   O V E R W R I T E   M O D E ############################################
+
+overwrite_mcuboot_single:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=1 USE_OVERWRITE=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=1 USE_OVERWRITE=1
+
+
+overwrite_mcuboot_multi:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=2 USE_OVERWRITE=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=2 USE_OVERWRITE=1
+
+
+overwrite_mcuboot_single_smif:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=1 USE_EXTERNAL_FLASH=1 USE_OVERWRITE=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=1 USE_EXTERNAL_FLASH=1 USE_OVERWRITE=1
+
+
+overwrite_mcuboot_multi_smif:
+  extends: .build_common
+  artifacts:
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Debug/MCUBootApp.hex
+      - boot/cypress/MCUBootApp/out/PSOC_062_2M/Release/MCUBootApp.hex
+  script:
+    - '[ ! -z $REPO ] && git pull $REPO $BRANCH || echo "Using current branch"'
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - make app APP_NAME=MCUBootApp BUILDCFG=Debug MCUBOOT_IMAGE_NUMBER=2 USE_EXTERNAL_FLASH=1 USE_OVERWRITE=1
+    - make app APP_NAME=MCUBootApp BUILDCFG=Release MCUBOOT_IMAGE_NUMBER=2 USE_EXTERNAL_FLASH=1 USE_OVERWRITE=1
+
+
+#######################################################################################################################################
+################################################ S W A P   T E S T S ##################################################################
+#######################################################################################################################################
+
+single_swap:
+  extends: .swap_common
+  needs:
+    - swap_mcuboot_single
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap
+    TEST_SELECT: $SINGLE_SWAP
+
+
+single_smif_swap:
+  extends: .swap_common
+  needs:
+    - swap_mcuboot_single_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_smif
+    TEST_SELECT: $SINGLE_SMIF_SWAP
+
+
+multi_app1_swap:
+  extends: .swap_common
+  needs:
+    - swap_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_multi_app1
+    TEST_SELECT: $MULTI_APP1_SWAP
+
+
+multi_app1_smif_swap:
+  extends: .swap_common
+  only:
+    - schedules
+  retry:
+    max: 1
+  needs:
+    - swap_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_multi_smif_app1
+    TEST_SELECT: $MULTI_APP1_SMIF_SWAP  
+   
+
+single_swap_release:
+  extends: .swap_common
+  only:
+    - schedules
+  retry:
+    max: 1
+  needs:
+    - swap_mcuboot_single
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap
+    TEST_SELECT: $SINGLE_SWAP_RELEASE
+    BUILDCFG_TEST: Release    
+
+
+single_smif_swap_release:
+  extends: .swap_common
+  only:
+    - schedules
+  retry:
+    max: 1
+  needs:
+    - swap_mcuboot_single_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_smif
+    TEST_SELECT: $SINGLE_SMIF_SWAP_RELEASE
+    BUILDCFG_TEST: Release    
+
+
+multi_app1_swap_release:
+  extends: .swap_common
+  only:
+    - schedules
+  retry:
+    max: 1
+  needs:
+    - swap_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_multi_app1
+    TEST_SELECT: $MULTI_APP1_SWAP_RELEASE
+    BUILDCFG_TEST: Release    
+
+
+multi_app1_smif_swap_release:
+  extends: .swap_common
+  only:
+    - schedules
+  retry:
+    max: 1
+  needs:
+    - swap_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_swap_multi_smif_app1
+    TEST_SELECT: $MULTI_APP1_SMIF_SWAP_RELEASE
+    BUILDCFG_TEST: Release
+
+#######################################################################################################################################
+################################################# O V E R W R I T E   T E S T S #######################################################
+#######################################################################################################################################
+
+single_overwrite:
+  extends: .overwrite_common
+  needs:
+    - overwrite_mcuboot_single
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_single
+    TEST_SELECT: $SINGLE_OVERWRITE
+
+
+single_smif_overwrite:
+  extends: .overwrite_common
+  needs:
+    - overwrite_mcuboot_single_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_single_smif
+    TEST_SELECT: $SINGLE_SMIF_OVERWRITE
+
+
+multi_app1_overwrite:
+  extends: .overwrite_common
+  needs:
+    - overwrite_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi
+    TEST_SELECT: $MULTI_APP1_OVERWRITE
+  
+  
+multi_app2_overwrite:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_2
+    TEST_SELECT: $MULTI_APP2_OVERWRITE
+
+
+multi_app1_smif_overwrite:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_smif
+    TEST_SELECT: $MULTI_APP1_SMIF_OVERWRITE
+
+
+multi_app2_smif_overwrite:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_smif_2
+    TEST_SELECT: $MULTI_APP2_SMIF_OVERWRITE
+
+
+single_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_single
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_single
+    TEST_SELECT: $SINGLE_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+
+
+single_smif_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_single_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_single_smif
+    TEST_SELECT: $SINGLE_SMIF_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+
+
+multi_app1_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi
+    TEST_SELECT: $MULTI_APP1_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+  
+  
+multi_app2_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi
+    - blinky_boot
+    - blinky_upgrade
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_2
+    TEST_SELECT: $MULTI_APP2_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+
+
+multi_app1_smif_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_smif
+    TEST_SELECT: $MULTI_APP1_SMIF_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+
+
+multi_app2_smif_overwrite_release:
+  extends: .overwrite_common
+  only:
+    - schedules
+  needs:
+    - overwrite_mcuboot_multi_smif
+    - blinky_boot
+    - blinky_upgrade_smif
+  variables:
+    TEST_CONFIG: CI_MCUBootExampleConfig_2M_overwrite_multi_smif_2
+    TEST_SELECT: $MULTI_APP2_SMIF_OVERWRITE_RELEASE
+    BUILDCFG_TEST: Release
+
+########################################################### C P P C H E C K ###########################################################
+
+cppcheck:
+  stage: checks
+  tags:
+    - MCUBOOT_TESTS
+  needs: []
+  artifacts:
+    when: always
+    expire_in: 4 weeks
+    paths:
+      - boot/cypress/cppcheck/MCUBootApp/results
+  allow_failure: true
+  script:
+    - if ($env:REPO) {git pull $REPO $BRANCH} else {echo "Using current branch"}
+    - git submodule deinit --all -f
+    - git submodule update --init --recursive
+    - cd boot/cypress
+    - git clone http://git-ore.aus.cypress.com/repo/cy_mcuboot_project/cy_mcuboot/ -b $env:CPPCHECK_BRANCH cppcheck
+    - time make run_cppcheck PLATFORM=PSOC_062_2M APP_NAME=MCUBootApp CPP_CHECK_SCOPE=all BUILDCFG=Debug
+    - time make run_cppcheck PLATFORM=PSOC_062_2M APP_NAME=MCUBootApp CPP_CHECK_SCOPE=all BUILDCFG=Release