stages:
  - init
  - rpmbuild
  - test
  - finish

.terraform:
  after_script:
    - schutzbot/update_github_status.sh update
    - schutzbot/save_journal.sh
    - schutzbot/run_cloud_cleaner.sh
  tags:
    - terraform
  artifacts:
    paths:
      - journal-log
    when: always

init:
  stage: init
  tags:
    - shell
  script:
    - schutzbot/update_github_status.sh start

RPM:
  stage: rpmbuild
  extends: .terraform
  variables:
    EXTRA_REPO_PATH_SEGMENT: "gitlab/"
  script:
    - sh "schutzbot/mockbuild.sh"
  after_script:
    - schutzbot/update_github_status.sh update
    - schutzbot/save_journal.sh
  parallel:
    matrix:
      - RUNNER:
          - aws/fedora-32-x86_64
          - aws/fedora-33-x86_64
          - aws/fedora-33-aarch64
          - aws/fedora-34-x86_64
          - aws/fedora-34-aarch64
          - aws/rhel-8-x86_64
          - aws/rhel-8-aarch64
          - aws/centos-stream-8-x86_64
          - aws/centos-stream-8-aarch64
      - RUNNER:
          - aws/rhel-8.4-x86_64
          - aws/rhel-8.4-aarch64
        INTERNAL_NETWORK: ["true"]

Container:
  stage: rpmbuild
  extends: .terraform
  variables:
    EXTRA_REPO_PATH_SEGMENT: "gitlab/"
  script:
    - sh "schutzbot/containerbuild.sh"
  parallel:
    matrix:
      - RUNNER:
          - aws/fedora-33-x86_64

Base:
  stage: test
  extends: .terraform
  variables:
    EXTRA_REPO_PATH_SEGMENT: "gitlab/"
  script:
    - schutzbot/deploy.sh
    - /usr/libexec/tests/osbuild-composer/base_tests.sh
    - /usr/libexec/tests/osbuild-composer/regression.sh
  parallel:
    matrix:
      - RUNNER:
          - aws/fedora-32-x86_64
          - aws/fedora-33-x86_64
          - aws/fedora-33-aarch64
          # See COMPOSER-919
          # - aws/fedora-34-x86_64
          # - aws/fedora-34-aarch64
          - aws/rhel-8-x86_64
          - aws/rhel-8-aarch64
          - aws/centos-stream-8-x86_64
          - aws/centos-stream-8-aarch64
      - RUNNER:
          - aws/rhel-8.4-x86_64
          # see COMPOSER-918
          # - aws/rhel-8.4-aarch64
        INTERNAL_NETWORK: ["true"]
  artifacts:
    paths:
      - journal-log
      - "*.repo"
    when: always

OSTree:
  stage: test
  extends: .terraform
  variables:
    EXTRA_REPO_PATH_SEGMENT: "gitlab/"
  script:
    - schutzbot/deploy.sh
    - /usr/libexec/tests/osbuild-composer/ostree.sh
  parallel:
    matrix:
      - RUNNER:
          - openstack/fedora-32-x86_64
          - openstack/fedora-33-x86_64
          # See COMPOSER-919
          # - openstack/fedora-34-x86_64
          - openstack/rhel-8-x86_64
          - openstack/rhel-8.4-x86_64
          # do we want centos as well ?
          # do we want secondary architectures here ??

New OSTree:
  stage: test
  extends: OSTree
  script:
    - schutzbot/deploy.sh
    - /usr/libexec/tests/osbuild-composer/ostree-ng.sh
  parallel:
    matrix:
      - RUNNER:
          - openstack/rhel-8.4-x86_64

.INTEGRATION_TESTS: &INTEGRATION_TESTS
  SCRIPT:
    - koji.sh
    - libvirt.sh
    - aws.sh
    - azure.sh
    - api.sh azure
    - api.sh aws
    - api.sh gcp
    - vmware.sh

Integration:
  stage: test
  extends: .terraform
  variables:
    EXTRA_REPO_PATH_SEGMENT: "gitlab/"
  script:
    - schutzbot/deploy.sh
    - /usr/libexec/tests/osbuild-composer/${SCRIPT}
  parallel:
    matrix:
      - <<: *INTEGRATION_TESTS
        RUNNER:
          - aws/fedora-32-x86_64
          - aws/fedora-33-x86_64
          # See COMPOSER-919
          # - aws/fedora-34-x86_64
          - openstack/centos-stream-8-x86_64
      - <<: *INTEGRATION_TESTS
        RUNNER:
          - aws/rhel-8-x86_64
          - aws/rhel-8.4-x86_64
        INTERNAL_NETWORK: ["true"]
      - <<: *INTEGRATION_TESTS
        RUNNER:
          - aws/rhel-8-x86_64
        INTERNAL_NETWORK: ["true"]
        DISTRO_CODE: ["rhel_90"]

finish:
  stage: finish
  tags:
    - shell
  script:
    - schutzbot/update_github_status.sh finish
