debian-forge-composer/.gitlab-ci.yml
Thomas Lavocat d26a93319c Tracing: measure IO during each job
Using iostat from package sysstat
2021-12-16 10:32:37 +01:00

479 lines
13 KiB
YAML

stages:
- init
- rpmbuild
- prepare-rhel-internal
- test
- cleanup
- finish
.base:
after_script:
- schutzbot/update_github_status.sh update
- schutzbot/save_journal.sh
- schutzbot/run_cloud_cleaner.sh
tags:
- terraform
artifacts:
paths:
- journal-log.gpg
- ci-artifacts
- iostats.json
when: always
.terraform:
extends: .base
tags:
- terraform
.terraform/openstack:
extends: .base
tags:
- terraform/openstack
init:
stage: init
tags:
- shell
script:
- schutzbot/update_github_status.sh start
interruptible: true
RPM:
stage: rpmbuild
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
script:
- schutzbot/start_iostats.sh
- sh "schutzbot/mockbuild.sh"
- schutzbot/stop_iostats.sh
interruptible: true
after_script:
- schutzbot/update_github_status.sh update
- schutzbot/save_journal.sh
artifacts:
paths:
- journal-log.gpg
parallel:
matrix:
- RUNNER:
- aws/fedora-33-x86_64
- aws/fedora-33-aarch64
- aws/fedora-34-x86_64
- aws/fedora-34-aarch64
- aws/rhel-8.5-ga-x86_64
- aws/rhel-8.5-ga-aarch64
- aws/centos-stream-8-x86_64
- aws/centos-stream-8-aarch64
- RUNNER:
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-8.6-nightly-aarch64
- aws/rhel-9.0-nightly-x86_64
- aws/rhel-9.0-nightly-aarch64
INTERNAL_NETWORK: ["true"]
Container:
stage: rpmbuild
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
script:
- schutzbot/start_iostats.sh
- sh "schutzbot/containerbuild.sh"
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- aws/fedora-33-x86_64
Packer:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
script:
- schutzbot/packer.sh
variables:
RUNNER: aws/centos-stream-8-x86_64
Prepare-rhel-internal:
stage: prepare-rhel-internal
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/prepare-rhel-internal.sh
- schutzbot/stop_iostats.sh
interruptible: true
artifacts:
paths:
- rhel-${RHEL_MAJOR}.json
- rhel${RHEL_MAJOR}internal.repo
- rhel-${RHEL_MAJOR}-beta.json
- COMPOSE_ID
parallel:
matrix:
- RUNNER:
# NOTE: 1 runner prepares for all arches b/c subsequent jobs download
# artifacts from all previous jobs and the last one wins
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-9.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
Base:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/base_tests.sh
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- aws/fedora-33-x86_64
- aws/fedora-33-aarch64
# See COMPOSER-919
# - aws/fedora-34-x86_64
# - aws/fedora-34-aarch64
- aws/rhel-8.5-ga-x86_64
- aws/rhel-8.5-ga-aarch64
- aws/centos-stream-8-x86_64
- aws/centos-stream-8-aarch64
- RUNNER:
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-8.6-nightly-aarch64
- aws/rhel-9.0-nightly-x86_64
- aws/rhel-9.0-nightly-aarch64
INTERNAL_NETWORK: ["true"]
artifacts:
paths:
- journal-log.gpg
- "*.repo"
when: always
Manifests:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/manifest_tests.sh
parallel:
matrix:
- RUNNER:
- aws/rhel-9.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
artifacts:
paths:
- journal-log.gpg
- "*.repo"
when: always
Regression:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/regression.sh
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- aws/fedora-33-x86_64
- aws/fedora-33-aarch64
# Enable f34 once we have rpmrepo snapshots for it
- aws/centos-stream-8-x86_64
- aws/centos-stream-8-aarch64
- RUNNER:
- aws/rhel-8.5-ga-x86_64
- aws/rhel-8.5-ga-aarch64
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-8.6-nightly-aarch64
- aws/rhel-9.0-nightly-x86_64
- aws/rhel-9.0-nightly-aarch64
INTERNAL_NETWORK: ["true"]
artifacts:
paths:
- journal-log.gpg
- "*.repo"
when: always
Test Case Generation:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
script:
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/generation.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- aws/fedora-34-x86_64
INTERNAL_NETWORK: ["true"]
artifacts:
paths:
- journal-log.gpg
- "*.repo"
when: always
OSTree:
stage: test
extends: .terraform/openstack
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/ostree.sh
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- openstack/fedora-33-x86_64
# See COMPOSER-919
# - openstack/fedora-34-x86_64
- openstack/rhel-8.5-ga-x86_64
- openstack/rhel-8.6-nightly-x86_64
- openstack/rhel-9.0-nightly-x86_64
- openstack/centos-stream-8-x86_64
New OSTree:
stage: test
extends: OSTree
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/ostree-ng.sh
- schutzbot/stop_iostats.sh
parallel:
matrix:
- RUNNER:
- openstack/rhel-8.6-nightly-x86_64-large
- openstack/rhel-9.0-nightly-x86_64-large
- openstack/centos-stream-8-x86_64
OSTree simplified installer:
stage: test
extends: OSTree
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/ostree-simplified-installer.sh
- schutzbot/stop_iostats.sh
parallel:
matrix:
- RUNNER:
- openstack/rhel-8.6-nightly-x86_64-large
- openstack/centos-stream-8-x86_64
- openstack/rhel-9.0-nightly-x86_64
OSTree raw image:
stage: test
extends: OSTree
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/ostree-raw-image.sh
- schutzbot/stop_iostats.sh
parallel:
matrix:
- RUNNER:
- openstack/rhel-8.6-nightly-x86_64
- openstack/centos-stream-8-x86_64
- openstack/rhel-9.0-nightly-x86_64
.INTEGRATION_TESTS: &INTEGRATION_TESTS
SCRIPT:
- koji.sh
- aws.sh
- azure.sh
- vmware.sh
- filesystem.sh
- cross-distro.sh
Integration:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/${SCRIPT}
- schutzbot/stop_iostats.sh
parallel:
matrix:
- <<: *INTEGRATION_TESTS
RUNNER:
- aws/fedora-33-x86_64
# See COMPOSER-919
# - aws/fedora-34-x86_64
# See COMPOSER-1118
# - aws/centos-stream-8-x86_64
- SCRIPT:
- koji.sh
- aws.sh
RUNNER:
- aws/centos-stream-8-x86_64
- <<: *INTEGRATION_TESTS
RUNNER:
- aws/rhel-8.5-ga-x86_64
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-9.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
- SCRIPT:
- azure_hyperv_gen2.sh
RUNNER:
- aws/rhel-8.6-nightly-x86_64
INTERNAL_NETWORK: ["true"]
.API_TESTS: &API_TESTS
IMAGE_TYPE:
- aws
- azure
- edge-commit
- gcp
API:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/api.sh ${IMAGE_TYPE}
- schutzbot/stop_iostats.sh
parallel:
matrix:
- <<: *API_TESTS
RUNNER:
- aws/rhel-8.5-ga-x86_64
- aws/rhel-8.6-nightly-x86_64
- aws/rhel-9.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
libvirt:
stage: test
extends: .terraform/openstack
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.0-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8.6-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/libvirt.sh
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- openstack/fedora-33-x86_64
- openstack/centos-stream-8-x86_64
- RUNNER:
- openstack/rhel-8.5-ga-x86_64
- openstack/rhel-8.6-nightly-x86_64
- openstack/rhel-9.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
RHEL 9 on 8:
stage: test
extends: .terraform
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/koji.sh
- schutzbot/stop_iostats.sh
interruptible: true
variables:
RUNNER: aws/rhel-8.5-ga-x86_64
INTERNAL_NETWORK: "true"
DISTRO_CODE: rhel-90
NIGHTLY_FAIL:
stage: finish
tags:
- shell
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $NIGHTLY == "true"'
when: on_failure
script:
- schutzbot/slack_notification.sh FAILED ":big-sad:"
NIGHTLY_SUCCESS:
stage: finish
tags:
- shell
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $NIGHTLY == "true"'
script:
- schutzbot/slack_notification.sh SUCCESS ":partymeow:"
Installer:
stage: test
extends: .terraform/openstack
rules:
- if: '$CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9\.[0-9]-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-8\.[0-9]-[^ga][\S]+/ && $NIGHTLY == "true" && $RHEL_MAJOR == "8"'
script:
- schutzbot/start_iostats.sh
- schutzbot/deploy.sh
- /usr/libexec/tests/osbuild-composer/installers.sh
- schutzbot/stop_iostats.sh
interruptible: true
parallel:
matrix:
- RUNNER:
- openstack/rhel-8.6-nightly-x86_64
- openstack/rhel-9.0-nightly-x86_64
SCHEDULED_CLOUD_CLEANER:
stage: cleanup
tags:
- terraform
variables:
RUNNER: aws/centos-stream-8-x86_64
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $CLEANUP == "true"'
script:
- schutzbot/deploy.sh
- schutzbot/scheduled_cloud_cleaner.sh
finish:
stage: finish
tags:
- shell
script:
- schutzbot/update_github_status.sh finish