before_script:
  - "source ~gitlab-runner/cicd_support/cicd_support.shinc" 


after_script:
  - "echo Test Complete."

stages:
  - gather
  - build
  - cross-protect
  - test
  - deploy



#
# gather artifacts and ship them to x86 boxes
#
.gather-bins: &do_gather
        stage: gather
        script:
            - ./cicd_testing/do-gather-bins.sh
        artifacts:               
            expire_in: 1 day
            paths:
                - artifacts/

gather-bins-arm32:
        <<: *do_gather
        tags:
            - arm32

gather-bins-arm64:
        <<: *do_gather
        tags:
            - arm64

#
# protect gathered arm binaries on an x86 box.
#
.protect-arm-bins: &prot_bins
        needs: [gather-bins-arm32, gather-bins-arm64]
        stage: cross-protect
        script:
            - ./cicd_testing/do-clean.sh 
            - ./cicd_testing/do-build.sh
            - ./cicd_testing/do-prot-bins.sh
        artifacts:               
            expire_in: 1 day
            paths:
                - artifacts/

protect-arm-ubuntu22:
        <<: *prot_bins
        tags:
            - ubuntu22

#
# Test the cross-protected binaries.
#
.test_arm_bins: &test_arm_bins
        needs: [protect-arm-ubuntu22]
        stage: test
        script:
            - ./cicd_testing/do-test-bins.sh
        artifacts:
            expire_in: 1 day
            paths:
                - artifacts/


test-bins-arm32:
        <<: *test_arm_bins
        tags:
            - arm32

test-bins-arm64:
        <<: *test_arm_bins
        tags:
            - arm64

#
# Cleaning, build, test for x86 on various OSes
#
.test: &test
  needs: []
  stage: test
  script:
    - ./cicd_testing/do-clean.sh 
    - ./cicd_testing/do-build.sh
    - ./cicd_testing/libc_test.sh
    - ./cicd_testing/eh-tests.sh
    - ./cicd_testing/builtin-xforms.sh
    - ./cicd_testing/elfdep.sh
    - ./cicd_testing/go_tests.sh
    - ./cicd_testing/rust_tests.sh



test-arm32: 
  needs: []
  stage: test
  script:
    - ./cicd_testing/do-clean.sh 
    - ./cicd_testing/do-build.sh
  tags:
    - arm32

test-arm64: 
    needs: []
    stage: test
    script:
      - ./cicd_testing/do-clean.sh 
      - ./cicd_testing/do-build.sh
      - ./cicd_testing/builtin-xforms.sh
    tags:
      - arm64
      
# per os items
test-coss9:
  <<: *test
  tags:
    - coss9

test-ubuntu20:
  <<: *test
  tags:
    - ubuntu20

test-ubuntu22:
  <<: *test
  tags:
    - ubuntu22


#
# deploy a docker image
#
deploy-u22:
  needs: [test-coss9,  test-ubuntu20, test-ubuntu22, test-arm32, test-arm64, test-bins-arm32, test-bins-arm64]
  stage: deploy
  script:
    - ./cicd_testing/do-clean.sh 
    - ./cicd_testing/do-build.sh
    - ./cicd_testing/deploy.sh
  tags:
    - ubuntu22