├── .editorconfig ├── .gitignore ├── .gitreview ├── .pre-commit-config.yaml ├── .travis.yml ├── LICENSE ├── LICENSES └── GPL-2.0-or-later.txt ├── README.md ├── automation ├── ansible │ ├── README.md │ ├── ansible.cfg │ ├── group_vars │ │ ├── all.yml │ │ ├── ci_node.yml │ │ ├── developer.yml │ │ ├── host.yml │ │ ├── hosts.yml │ │ ├── node.yml │ │ ├── node_amd64.yml │ │ ├── node_arm64.yml │ │ ├── node_standalone.yml │ │ ├── node_wandboard.yml │ │ └── windows.yml │ ├── host_vars │ │ ├── ci-host-amd64-1a.internal.efficios.com.yml │ │ ├── ci-host-amd64-1b.internal.efficios.com.yml │ │ ├── ci-host-amd64-1c.internal.efficios.com.yml │ │ ├── ci-host-amd64-1d.internal.efficios.com.yml │ │ ├── ci-host-amd64-2a.internal.efficios.com.yml │ │ ├── ci-host-amd64-2b.internal.efficios.com.yml │ │ ├── ci-host-amd64-2c.internal.efficios.com.yml │ │ ├── ci-host-amd64-2d.internal.efficios.com.yml │ │ ├── ci-host-arm64-1a.internal.efficios.com.yml │ │ ├── ci-host-arm64-1b.internal.efficios.com.yml │ │ ├── ci-host-arm64-2a.internal.efficios.com.yml │ │ ├── ci-host-arm64-2b.internal.efficios.com.yml │ │ ├── ci-master-04.yml │ │ ├── ci-node-yocto33-amd64-2a-01.yml │ │ ├── ci-node-yocto33-amd64-2b-01.yml │ │ ├── ci-rootnode-deb12-amd64-1a-01.yml │ │ ├── ci-rootnode-deb12-amd64-1b-01.yml │ │ ├── ci-rootnode-deb12-amd64-1c-01.yml │ │ ├── ci-rootnode-deb12-amd64-1c-02.yml │ │ ├── ci-rootnode-deb12-amd64-1d-01.yml │ │ ├── ci-rootnode-deb12-amd64-2a-01.yml │ │ ├── ci-rootnode-deb12-amd64-2b-01.yml │ │ ├── ci-rootnode-deb12-amd64-2c-01.yml │ │ ├── ci-rootnode-deb12-amd64-2d-01.yml │ │ ├── ci-rootnode-deb12-arm64-2a-01.yml │ │ ├── ci-rootnode-deb12-armhf-2a-01.yml │ │ ├── ci-rootnode-deb12-i386-1a-01.yml │ │ ├── ci-rootnode-deb12-i386-1b-01.yml │ │ ├── ci-rootnode-deb12-i386-1c-01.yml │ │ ├── ci-rootnode-deb13-amd64-1a-01.yml │ │ ├── ci-rootnode-deb13-amd64-1b-01.yml │ │ ├── ci-rootnode-deb13-amd64-1c-01.yml │ │ ├── ci-rootnode-deb13-amd64-1d-01.yml │ │ ├── ci-rootnode-deb13-amd64-2a-01.yml │ │ ├── ci-rootnode-deb13-amd64-2b-01.yml │ │ ├── ci-rootnode-deb13-amd64-2c-01.yml │ │ ├── ci-rootnode-deb13-amd64-2d-01.yml │ │ ├── ci-rootnode-yocto33-amd64-2c-01.yml │ │ ├── ci-rootnode-yocto33-amd64-2d-01.yml │ │ ├── cloud01.internal.efficios.com.yml │ │ ├── cloud02.internal.efficios.com.yml │ │ ├── cloud03.internal.efficios.com.yml │ │ ├── git-mirror02.yml │ │ └── lava-master-03.internal.efficios.com.yml │ ├── hosts │ ├── hosts.yml │ ├── infra_lava.yml │ ├── lava-all.yml │ ├── node_all.yml │ ├── node_amd64.yml │ ├── node_arm64.yml │ ├── node_armhf.yml │ ├── node_el.yml │ ├── node_i386.yml │ ├── node_ppc64el.yml │ ├── node_riscv64.yml │ ├── node_s390x.yml │ ├── node_sles.yml │ ├── node_standalone.yml │ ├── playbooks │ │ ├── ci-instances.yml │ │ ├── delete-dot-lttng.yml │ │ ├── dist-upgrade.yml │ │ ├── known-hosts.yml │ │ ├── post-imagebuild-clean.yml │ │ ├── release-upgrade.yml │ │ ├── snapshot-rootnode.yml │ │ ├── update-node.yml │ │ └── vm_template.xml.j2 │ ├── requirements.txt │ ├── roles │ │ ├── babeltrace │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── CentOS-7.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat-8.yml │ │ │ │ ├── RedHat-9.yml │ │ │ │ ├── Rocky-8.yml │ │ │ │ ├── Rocky-9.yml │ │ │ │ ├── SLES-12.yml │ │ │ │ ├── SLES-15.yml │ │ │ │ └── Suse.yml │ │ ├── binutils-gdb │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── Suse.yml │ │ │ │ └── Ubuntu-22.yml │ │ ├── common-node │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── readonly_root_reboot.sh │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── CentOS-7.yml │ │ │ │ ├── Debian-trixie.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── SLES-12.yml │ │ │ │ ├── SLES-15.yml │ │ │ │ └── Suse.yml │ │ ├── common │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── efficios_ubuntu_ci.gpg │ │ │ │ ├── grafana.gpg │ │ │ │ └── internal.efficios.com.pem │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── public_keys │ │ │ │ ├── jgalar.pub │ │ │ │ ├── kstewart.pub │ │ │ │ ├── mdesnoyers.pub │ │ │ │ ├── mjeanson.pub │ │ │ │ ├── odion.pub │ │ │ │ ├── pproulx.pub │ │ │ │ └── smarchi.pub │ │ │ ├── tasks │ │ │ │ ├── certs.yml │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ ├── setup-Suse.yml │ │ │ │ ├── setup-Windows.yml │ │ │ │ ├── users-Windows.yml │ │ │ │ └── users.yml │ │ │ ├── templates │ │ │ │ ├── authorized_keys.j2 │ │ │ │ ├── promtail.config.yml.j2 │ │ │ │ └── unattended_upgrades_extra_repos.conf.j2 │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── CentOS-7.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── SLES-12.yml │ │ │ │ ├── SLES-15.yml │ │ │ │ ├── Suse.yml │ │ │ │ └── Windows.yml │ │ ├── compilers │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian-11.yml │ │ │ │ ├── Debian-12.yml │ │ │ │ ├── Debian-trixie.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── Suse.yml │ │ │ │ ├── Ubuntu-20.yml │ │ │ │ ├── Ubuntu-22.yml │ │ │ │ └── Ubuntu-24.yml │ │ ├── cross-compilers │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── Containerfile │ │ │ │ ├── Makefile │ │ │ │ ├── gcc5-cyclades_removal.patch │ │ │ │ ├── gcc5-isl.patch │ │ │ │ ├── gcc5-sanitizer_fs.patch │ │ │ │ ├── gcc5.Containerfile │ │ │ │ └── script.sh │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ └── setup-RedHat.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian-11.yml │ │ │ │ ├── Debian-sid.yml │ │ │ │ ├── Debian-trixie.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── Suse.yml │ │ │ │ └── Ubuntu-20.yml │ │ ├── developer │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── RedHat.yml │ │ │ │ └── Suse.yml │ │ ├── docker │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── daemon.json │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── RedHat.yml │ │ │ │ ├── SLES-15.yml │ │ │ │ └── Ubuntu-24.yml │ │ ├── gitmirror │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ ├── grokmirror_2.0.11-1_all.deb │ │ │ │ └── update.sh │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ └── mirror_instance.yml │ │ │ └── templates │ │ │ │ ├── apache2.conf.j2 │ │ │ │ ├── cgitrc.j2 │ │ │ │ └── grokmirror.conf.j2 │ │ ├── incus │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ ├── install.yml │ │ │ │ └── main.yml │ │ ├── jenkins │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ └── tasks │ │ │ │ └── main.yml │ │ ├── lava-server │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── vhost-tls.conf │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── enable_device.yml │ │ │ │ └── main.yml │ │ │ ├── templates │ │ │ │ ├── allowed_hosts.yaml.j2 │ │ │ │ ├── device.jinja2.j2 │ │ │ │ └── ldap.yaml.j2 │ │ │ └── vars │ │ │ │ └── main.yml │ │ ├── librseq │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ └── Suse.yml │ │ ├── libs-i386 │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ └── setup-Debian.yml │ │ │ └── vars │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ └── Suse.yml │ │ ├── liburcu │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ └── Suse.yml │ │ ├── libvirt │ │ │ ├── files │ │ │ │ ├── rootnode-autoinstall.yml │ │ │ │ └── user-data │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ └── vm.yml │ │ │ ├── templates │ │ │ │ └── vm_template.xml.j2 │ │ │ └── vars │ │ │ │ └── main.yml │ │ ├── lttng-modules │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Suse.yml │ │ │ │ └── Ubuntu-22.yml │ │ ├── lttng-tools │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ └── Suse.yml │ │ ├── lttng-ust │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ ├── setup-Alpine.yml │ │ │ │ ├── setup-Debian.yml │ │ │ │ ├── setup-RedHat.yml │ │ │ │ └── setup-Suse.yml │ │ │ └── vars │ │ │ │ ├── Alpine.yml │ │ │ │ ├── Debian.yml │ │ │ │ ├── RedHat.yml │ │ │ │ ├── Rocky.yml │ │ │ │ ├── SLES-12.yml │ │ │ │ └── Suse.yml │ │ ├── lxd │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── container.yml │ │ │ │ └── main.yml │ │ │ └── templates │ │ │ │ └── init.yaml.j2 │ │ ├── netplan │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── config.yml │ │ │ │ └── main.yml │ │ │ └── templates │ │ │ │ └── netplan.yaml.j2 │ │ ├── rasdaemon │ │ │ ├── defaults │ │ │ │ └── main.yml │ │ │ ├── files │ │ │ │ └── rasdaemon-exporter.py │ │ │ ├── handlers │ │ │ │ └── main.yml │ │ │ ├── tasks │ │ │ │ ├── main.yml │ │ │ │ └── prometheus.yml │ │ │ └── templates │ │ │ │ └── rasdaemon-exporter.service.j2 │ │ ├── requirements.yml │ │ ├── suse │ │ │ └── tasks │ │ │ │ └── product.yml │ │ └── zfs │ │ │ ├── defaults │ │ │ └── main.yml │ │ │ └── tasks │ │ │ └── main.yml │ ├── scripts │ │ ├── manage_jenkins_node.py │ │ ├── update_dns_entry.py │ │ └── update_jenkins_node.py │ ├── site.yml │ ├── tasks │ │ └── debian_release_upgrade.yml │ ├── templates │ │ └── cloud_init_netconf.j2 │ └── vars │ │ └── ci-instances.yml ├── create-slave.sh ├── images │ ├── .gitkeep │ ├── sles-12.5.yml │ ├── sles-15.4.yml │ ├── sles-15.5.yml │ └── yocto33-amd64.yaml ├── kernel-seed.py ├── preseed.cfg └── update_standalone.py ├── dsl └── kernel-lttng-modules.seed.groovy ├── etc └── jenkins_jobs.ini-sample ├── jjb_filters └── __init__.py ├── jobs ├── babeltrace-benchmark.yaml ├── babeltrace-www.yaml ├── babeltrace.yaml ├── barectf.yaml ├── binutils-gdb.yaml ├── dev.yaml ├── diamon-www.yaml ├── efficios-www.yaml ├── glibc.yaml ├── images.yml ├── integration.yaml ├── librseq.yaml ├── libside.yaml ├── libsk.yaml ├── liburcu.yaml ├── linux.yml ├── lttng-docs.yaml ├── lttng-ivc.yaml ├── lttng-modules.yaml ├── lttng-tools.yaml ├── lttng-ust-benchmarks.yaml ├── lttng-ust.yaml ├── lttng-www.yaml ├── normand.yaml └── system-tests.yaml ├── lava ├── benchmark │ └── babeltrace │ │ ├── batch.sh │ │ └── benchmark.yml ├── deploy_devices_dict.sh ├── ipxe │ ├── 0001-Enable-console-and-reboot-command.patch │ └── infinite_prompt.ipxe ├── kernel │ └── vanilla │ │ ├── x86_64_kvm.config │ │ └── x86_64_server.config ├── kvm │ └── generate_kvm_virsh.sh ├── rootfs │ └── vmdeboostrap │ │ ├── external-packages.sha1sum │ │ └── generate-root.py ├── system-tests │ ├── authorized_keys │ ├── kernel-tests.yml │ ├── perf-tests.yml │ ├── setup.yml │ └── upload-artifacts.yml └── upload_artifact.sh ├── pipelines ├── binutils-gdb │ └── pipeline.groovy.j2 ├── diamon-www │ └── pipeline.groovy.j2 ├── images │ ├── default.groovy │ ├── distrobuild.sh │ └── imagebuild.sh ├── integration │ ├── lttng-tools-_version_-32-64_testsuite.groovy.j2 │ └── ust-2.12-lower-urcu_testsuite.groovy ├── libside │ └── pipeline.groovy ├── libsk │ └── pipeline.groovy └── linux │ └── pipeline.groovy.j2 ├── poetry.lock ├── pyproject.toml ├── scripts ├── babeltrace-benchmark │ ├── benchmark.py │ ├── benchmark.sh │ ├── lava_submit.py │ ├── requirement.txt │ ├── template_lava_job_bt_benchmark.jinja2 │ └── time.py ├── babeltrace-www │ └── deploy.sh ├── babeltrace │ ├── build.sh │ ├── lint.sh │ └── release.sh ├── barectf │ └── build.sh ├── common │ ├── check-format.sh │ ├── clean-build-dir.sh │ ├── coverity.sh │ ├── cygpath-prefix │ ├── cygwin64-shebang │ ├── msys2-shebang │ ├── override-build-std.sh │ ├── print.sh │ └── scan-build.sh ├── efficios-www │ └── deploy.sh ├── gerrit │ └── system-clean.groovy ├── glibc │ └── build.sh ├── jenkins_job_env.py ├── librseq │ └── build.sh ├── liburcu │ └── build.sh ├── lttng-ivc │ └── build.sh ├── lttng-modules │ ├── build.sh │ ├── master-rt.groovy │ ├── master.groovy │ ├── param-build.sh │ └── trigger-vanilla.groovy ├── lttng-tools │ ├── build.sh │ ├── gerrit-depends-on.sh │ ├── gerrit-install-deps.sh │ ├── postbuild_clean_processes_coredumps.sh │ ├── postbuild_collect_tap_results.sh │ ├── postbuild_wait_10_seconds.sh │ ├── prebuild_clean_processes_coredumps.sh │ └── release.sh ├── lttng-ust-benchmarks │ └── build.sh ├── lttng-ust │ ├── build.sh │ └── lttng-ust-java-tests.sh ├── lttng-www │ └── deploy.sh ├── normand │ └── build.sh ├── packaging │ ├── el7 │ │ ├── add-efficios-repo.sh │ │ └── install-lttng-packages.sh │ ├── sles12 │ │ ├── add-efficios-repo.sh │ │ └── install-lttng-packages.sh │ ├── systemd-enable-and-start-relayd.sh │ ├── systemd-enable-and-start-sessiond.sh │ └── test-run.sh └── system-tests │ ├── build-kernel.sh │ ├── build-modules.sh │ ├── check-build-needs.sh │ ├── checkout-modules.sh │ ├── generate-properties-master.sh │ ├── generate-properties-slave.sh │ ├── inject-ssh-commands.sh │ ├── lava2-submit.py │ ├── parse-results.py │ ├── run-baremetal-tests.sh │ ├── run-kvm-tests.sh │ ├── run-test-suites.sh │ ├── system-trigger.groovy │ └── template_lava_job.jinja2 └── tox.ini /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | [*.yaml] 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.{groovy,groovy.j2}] 16 | indent_style = space 17 | indent_size = 2 18 | 19 | [*.py] 20 | indent_style = space 21 | indent_size = 4 22 | 23 | [*.sh] 24 | indent_style = space 25 | indent_size = 4 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /test/ 2 | /etc/jenkins_jobs.ini 3 | /.tox 4 | .venv*/ 5 | *.retry 6 | automation/ansible/roles/libvirt/files/meta-data 7 | automation/ansible/roles/libvirt/files/vendor-data 8 | __pycache__ 9 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.lttng.org 3 | port=29418 4 | project=lttng-ci.git 5 | defaultbranch=master 6 | defaultremote=review 7 | defaultrebase=0 8 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/psf/black-pre-commit-mirror 3 | rev: 24.10.0 4 | hooks: 5 | - id: black 6 | language_version: python3 7 | - repo: https://github.com/pycqa/isort 8 | rev: 6.0.0 9 | hooks: 10 | - id: isort 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: python 3 | python: 4 | - "2.7" 5 | - "3.5" 6 | - "pypy" 7 | install: pip install tox-travis 8 | script: tox 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LTTng configuration for Jenkins 2 | 3 | This repository holds the configuration of the LTTng Jenkins jobs. It is 4 | meant to be used with Jenkins Job Builder from the OpenStack Foundation. 5 | 6 | The dependencies can be installed in a dedicated Python virtual 7 | environment using [Poetry](https://python-poetry.org/): 8 | 9 | $ poetry install 10 | 11 | You can then run commands from the virtual environments by prepending 12 | `poetry run` to them: 13 | 14 | $ poetry run jenkins-jobs --version 15 | Jenkins Job Builder version: 6.4.2 16 | 17 | or by spawning a shell: 18 | 19 | $ poetry shell 20 | Spawning shell within /home/user/.cache/pypoetry/virtualenvs/lttng-ci-qYTnEJGo-py3.12 21 | (lttng-ci-py3.12) $ jenkins-jobs --version 22 | Jenkins Job Builder version: 6.4.2 23 | 24 | Install [pre-commit](https://pre-commit.com) hooks with: 25 | 26 | $ pre-commit install 27 | 28 | ## Example Usage 29 | 30 | Generate XML files for Jenkins jobs from YAML files: 31 | 32 | $ jenkins-jobs test jobs/ -o output/ 33 | 34 | Update Jenkins jobs which name starts with "babeltrace": 35 | 36 | $ jenkins-jobs --conf etc/jenkins_jobs.ini update jobs/ babeltrace* 37 | 38 | 39 | ## Updating kernel and modules jobs 40 | 41 | # Delete current RC jobs 42 | $ jenkins-jobs --conf etc/jenkins_jobs.ini delete --path jobs/lttng-modules.yaml:jobs/kernel.yaml \*rc\*_build 43 | 44 | # Update kernel versions 45 | $ automation/kernel-seed.py > jobs/inc/kernel-versions.yaml.inc 46 | 47 | # Update jobs 48 | $ jenkins-jobs --conf etc/jenkins_jobs.ini update jobs/lttng-modules.yaml:jobs/kernel.yaml 49 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | jenkins_user: false 3 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/ci_node.yml: -------------------------------------------------------------------------------- 1 | --- 2 | jenkins_user: true 3 | unattended_upgrades: false 4 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/developer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_install: false 3 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/host.yml: -------------------------------------------------------------------------------- 1 | --- 2 | jenkins_user: true 3 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/hosts.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_install_promtail: true 3 | libvirt_extra_users: 4 | - jenkins 5 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/node.yml: -------------------------------------------------------------------------------- 1 | --- 2 | jenkins_user: true 3 | # The full linux repo is mirrored only on node_amd64 which run the 4 | # modules parambuild jobs 5 | lttng_modules_checkout_repo: false 6 | unattended_upgrades: false 7 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/node_amd64.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | common_install_promtail: true 4 | lttng_modules_checkout_repo: true 5 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/node_arm64.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | common_install_promtail: true 4 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/node_standalone.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | compilers_legacy_install: false 4 | 5 | # Jenkins connects to the standalone nodes as the root user 6 | jenkins_user: false 7 | 8 | # jenkins connects to standalone nodes as the root user 9 | extra_root_ssh_authorized_keys: 10 | # yamllint disable-line rule:line-length 11 | - 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA3fwpioVLDoCQsQkYK5bOwPb8N0EXeYm2MleBQTfqxtKaqWWbmUtFXAiyclKHRspjcAiIKwwqLyhPopHBqJzmXnB0GsfGmxXJ6wSBgKJ4kdBVRM+nKlK0wCl1oQkFeV/Xl3jzt1Ey96XiNWlesfkvgcMCpsJzQ7/xRb9IcghskzlQbLOwDNir/156JgAYUYvOLqNCcE+xcgPxJGanfZDXTLkfBYxaeaB8isBPeEU6fhPvu/W055M1uB7E0qhcbFtuKCBu1Fg4jzsW4yDU8+ZB1b5mAXwEAuMbVGMrOf4rjtTpGpQd6XFsXpFT28NU1u5j2cUbtANJalkNDX/UY6XJ jenkins@ci-master-02' 12 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/node_wandboard.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # The SATA controllers on the boards that are running the armhf 3 | # nodes are somewhat flaky, and the root filesystem often ends 4 | # up readonly due to errors. When the FS goes read-only, jobs 5 | # will fail so the easiest action is to have the node reboot. 6 | common_node_rootfs_readonly_reboot: true 7 | -------------------------------------------------------------------------------- /automation/ansible/group_vars/windows.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ansible_connection: ssh 3 | ansible_shell_type: powershell 4 | ansible_python_interpreter: 'c:/windows/py.exe' 5 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-1a.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_prometheus_node_exporter_args: "--log.level=error --no-collector.nfsd" 3 | 4 | lxd_cluster_ip: 172.18.0.190 5 | lxd_cluster: 6 | server_name: ci-host-amd64-1a 7 | enabled: true 8 | member_config: 9 | - entity: storage-pool 10 | name: default 11 | key: source 12 | value: tank/lxd 13 | netplan_manage: true 14 | netplan_content: | 15 | network: 16 | version: 2 17 | renderer: networkd 18 | ethernets: 19 | eth0: 20 | match: 21 | macaddress: 7c:c2:55:9f:17:fe 22 | set-name: eth0 23 | dhcp4: no 24 | bridges: 25 | br102: 26 | interfaces: 27 | - eth0 28 | accept-ra: false 29 | addresses: 30 | - 172.18.0.190/16 31 | routes: 32 | - to: default 33 | via: 172.18.0.1 34 | nameservers: 35 | search: 36 | - internal.efficios.com 37 | addresses: 38 | - 172.18.0.13 39 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-1b.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.191 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.191 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:18:60 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.191/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-1c.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.192 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.192 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:18:7e 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.192/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-1d.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.193 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.193 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:17:e6 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.193/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-2a.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.194 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.194 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:17:e8 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.194/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-2b.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.195 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.195 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:17:e0 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.195/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-2c.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.196 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.196 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 7c:c2:55:9f:18:5e 21 | set-name: eth0 22 | dhcp4: no 23 | bridges: 24 | br102: 25 | interfaces: 26 | - eth0 27 | accept-ra: false 28 | addresses: 29 | - 172.18.0.196/16 30 | routes: 31 | - to: default 32 | via: 172.18.0.1 33 | nameservers: 34 | search: 35 | - internal.efficios.com 36 | addresses: 37 | - 172.18.0.13 38 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-amd64-2d.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extra_root_ssh_authorized_keys: 3 | # yamllint disable-line rule:line-length 4 | - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmmI2pn+ncFKm/fOS5+RskBGnhbMd0p399ZWEKLUQ+Q lava-master-03' 5 | lxd_cluster_ip: 172.18.0.197 6 | lxd_cluster: 7 | enabled: true 8 | server_address: 172.18.0.197 9 | member_config: 10 | - entity: storage-pool 11 | name: default 12 | key: source 13 | value: tank/lxd 14 | 15 | netplan_manage: true 16 | netplan_content: | 17 | network: 18 | version: 2 19 | renderer: networkd 20 | ethernets: 21 | eth0: 22 | match: 23 | macaddress: 7c:c2:55:9f:17:ea 24 | set-name: eth0 25 | dhcp4: no 26 | bridges: 27 | br102: 28 | interfaces: 29 | - eth0 30 | accept-ra: false 31 | addresses: 32 | - 172.18.0.197/16 33 | routes: 34 | - to: default 35 | via: 172.18.0.1 36 | nameservers: 37 | search: 38 | - internal.efficios.com 39 | addresses: 40 | - 172.18.0.13 41 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-arm64-1a.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.186 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.186 6 | #cluster_token: # Only used once on cluster join 7 | member_config: 8 | - entity: storage-pool 9 | name: default 10 | key: source 11 | value: tank/lxd 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 00:01:73:00:00:01 21 | dhcp4: no 22 | macaddress: 00:01:73:00:01:01 23 | eth1: 24 | match: 25 | macaddress: 00:01:73:00:00:02 26 | dhcp4: no 27 | macaddress: 00:01:73:00:01:02 28 | bridges: 29 | br102: 30 | interfaces: 31 | - eth0 32 | accept-ra: false 33 | addresses: 34 | - 172.18.0.186/16 35 | macaddress: 3a:5f:d0:44:d4:12 36 | routes: 37 | - to: default 38 | via: 172.18.0.1 39 | nameservers: 40 | search: 41 | - internal.efficios.com 42 | addresses: 43 | - 172.18.0.13 44 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-arm64-1b.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.187 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.187 6 | #cluster_token: # Only used once on cluster join 7 | member_config: 8 | - entity: storage-pool 9 | name: default 10 | key: source 11 | value: tank/lxd 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 00:01:73:00:00:01 21 | dhcp4: no 22 | macaddress: 00:01:73:00:02:01 23 | eth1: 24 | match: 25 | macaddress: 00:01:73:00:00:02 26 | dhcp4: no 27 | macaddress: 00:01:73:00:02:02 28 | bridges: 29 | br102: 30 | interfaces: 31 | - eth0 32 | macaddress: 86:2b:17:13:4d:03 33 | accept-ra: false 34 | addresses: 35 | - 172.18.0.187/16 36 | routes: 37 | - to: default 38 | via: 172.18.0.1 39 | nameservers: 40 | search: 41 | - internal.efficios.com 42 | addresses: 43 | - 172.18.0.13 44 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-arm64-2a.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.188 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.188 6 | #cluster_token: 7 | member_config: 8 | - entity: storage-pool 9 | name: default 10 | key: source 11 | value: tank/lxd 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 00:01:73:00:00:01 21 | dhcp4: no 22 | macaddress: 00:01:73:00:03:01 23 | eth1: 24 | match: 25 | macaddress: 00:01:73:00:00:02 26 | dhcp4: no 27 | macaddress: 00:01:73:00:03:02 28 | bridges: 29 | br102: 30 | interfaces: 31 | - eth0 32 | accept-ra: false 33 | addresses: 34 | - 172.18.0.188/16 35 | macaddress: ea:d4:ef:3b:53:5c 36 | routes: 37 | - to: default 38 | via: 172.18.0.1 39 | nameservers: 40 | search: 41 | - internal.efficios.com 42 | addresses: 43 | - 172.18.0.13 44 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-host-arm64-2b.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.189 3 | lxd_cluster: 4 | enabled: true 5 | server_address: 172.18.0.189 6 | #cluster_token: 7 | member_config: 8 | - entity: storage-pool 9 | name: default 10 | key: source 11 | value: tank/lxd 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | eth0: 19 | match: 20 | macaddress: 00:01:73:00:00:01 21 | dhcp4: no 22 | macaddress: 00:01:73:00:04:01 23 | eth1: 24 | match: 25 | macaddress: 00:01:73:00:00:02 26 | dhcp4: no 27 | macaddress: 00:01:73:00:04:02 28 | bridges: 29 | br102: 30 | interfaces: 31 | - eth0 32 | accept-ra: false 33 | addresses: 34 | - 172.18.0.189/16 35 | macaddress: 2a:71:0d:6d:a9:1d 36 | routes: 37 | - to: default 38 | via: 172.18.0.1 39 | nameservers: 40 | search: 41 | - internal.efficios.com 42 | addresses: 43 | - 172.18.0.13 44 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-master-04.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | jenkins_systemd_service_override: | 4 | [Service] 5 | Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx80G -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline';\" -Dorg.eclipse.jetty.server.Request.maxFormContentSize=1000000 -Dpermissive-script-security.enabled=no_security -Dorg.jenkinsci.plugins.pipeline.modeldefinition.parser.RuntimeASTTransformer.SCRIPT_SPLITiTING_TRANSFORMATION=true" 6 | TimeoutStartSec=5m 7 | 8 | jenkins_url_username: "{{lookup('community.general.bitwarden', '5b6f7c60-26ec-4066-8bd0-b05000de8c24', search='id', field='username')[0]}}" 9 | jenkins_url_password: "{{lookup('community.general.bitwarden', '5b6f7c60-26ec-4066-8bd0-b05000de8c24', search='id', field='password')[0]}}" 10 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-node-yocto33-amd64-2a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This node runs netplan 0.101, which has a slightly different syntax 3 | # than more recent releases. 4 | netplan_manage: true 5 | netplan_content: | 6 | network: 7 | version: 2 8 | renderer: networkd 9 | ethernets: 10 | enp1s0: 11 | dhcp4: no 12 | addresses: 13 | - 172.18.16.104/16 14 | gateway4: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-node-yocto33-amd64-2b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # This node runs netplan 0.101, which has a slightly different syntax 4 | # than more recent releases. 5 | netplan_manage: true 6 | netplan_content: | 7 | network: 8 | version: 2 9 | renderer: networkd 10 | ethernets: 11 | enp1s0: 12 | dhcp4: no 13 | addresses: 14 | - 172.18.16.105/16 15 | gateway4: 172.18.0.1 16 | nameservers: 17 | search: 18 | - internal.efficios.com. 19 | addresses: 20 | - 172.18.0.13 21 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-1a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.1/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-1b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.3/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-1c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.4/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-1c-02.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This node uses an older linux kernel for u32/u64 integration tests 3 | # which creates conflicting package dependencies 4 | # 5 | cross_compilers_debian_bookworm_snapshot: false 6 | cross_compilers_install: false 7 | 8 | netplan_manage: true 9 | netplan_content: | 10 | network: 11 | version: 2 12 | renderer: networkd 13 | ethernets: 14 | enp1s0: 15 | dhcp4: no 16 | addresses: 17 | - 172.18.17.10/16 18 | routes: 19 | - to: default 20 | via: 172.18.0.1 21 | nameservers: 22 | search: 23 | - internal.efficios.com. 24 | addresses: 25 | - 172.18.0.13 26 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-1d-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.5/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-2a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.6/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-2b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.7/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-2c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.8/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-amd64-2d-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.9/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-arm64-2a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp3s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.24/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-armhf-2a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp2s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.25/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-i386-1a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.2/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-i386-1b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.22/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb12-i386-1c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.23/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-1a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.26/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-1b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.27/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-1c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.28/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-1d-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.29/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-2a-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.30/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-2b-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.31/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-2c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.32/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-deb13-amd64-2d-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: true 3 | netplan_content: | 4 | network: 5 | version: 2 6 | renderer: networkd 7 | ethernets: 8 | enp1s0: 9 | dhcp4: no 10 | addresses: 11 | - 172.18.17.33/16 12 | routes: 13 | - to: default 14 | via: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-yocto33-amd64-2c-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This node runs netplan 0.101, which has a slightly different syntax 3 | # than more recent releases. 4 | netplan_manage: true 5 | netplan_content: | 6 | network: 7 | version: 2 8 | renderer: networkd 9 | ethernets: 10 | enp1s0: 11 | dhcp4: no 12 | addresses: 13 | - 172.18.17.20/16 14 | gateway4: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/ci-rootnode-yocto33-amd64-2d-01.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This node runs netplan 0.101, which has a slightly different syntax 3 | # than more recent releases. 4 | netplan_manage: true 5 | netplan_content: | 6 | network: 7 | version: 2 8 | renderer: networkd 9 | ethernets: 10 | enp1s0: 11 | dhcp4: no 12 | addresses: 13 | - 172.18.17.21/16 14 | gateway4: 172.18.0.1 15 | nameservers: 16 | search: 17 | - internal.efficios.com. 18 | addresses: 19 | - 172.18.0.13 20 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/cloud01.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.31 3 | lxd_cluster: 4 | server_name: cloud01 5 | enabled: true 6 | member_config: 7 | - entity: storage-pool 8 | name: default 9 | key: source 10 | value: tank/lxd 11 | netplan_manage: true 12 | netplan_content: | 13 | network: 14 | version: 2 15 | renderer: networkd 16 | ethernets: 17 | enp8s0f0: 18 | dhcp4: no 19 | bridges: 20 | br102: 21 | interfaces: 22 | - enp8s0f0 23 | accept-ra: false 24 | addresses: 25 | - 172.18.0.31/16 26 | routes: 27 | - to: default 28 | via: 172.18.0.1 29 | nameservers: 30 | search: 31 | - internal.efficios.com 32 | addresses: 33 | - 172.18.0.13 34 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/cloud02.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.32 3 | lxd_cluster: 4 | server_name: cloud02 5 | server_address: 172.18.0.32 6 | enabled: true 7 | member_config: 8 | - entity: storage-pool 9 | name: default 10 | key: source 11 | value: tank/lxd 12 | netplan_manage: true 13 | netplan_content: | 14 | network: 15 | version: 2 16 | renderer: networkd 17 | ethernets: 18 | enp8s0f0: 19 | dhcp4: no 20 | bridges: 21 | br102: 22 | interfaces: 23 | - enp8s0f0 24 | accept-ra: false 25 | addresses: 26 | - 172.18.0.32/16 27 | routes: 28 | - to: default 29 | via: 172.18.0.1 30 | nameservers: 31 | search: 32 | - internal.efficios.com 33 | addresses: 34 | - 172.18.0.13 35 | -------------------------------------------------------------------------------- /automation/ansible/host_vars/cloud03.internal.efficios.com.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_cluster_ip: 172.18.0.33 3 | lxd_cluster: 4 | server_name: cloud03 5 | server_address: 172.18.0.33 6 | cluster_token: 'eyJzZXJ2ZXJfbmFtZSI6ImNsb3VkMDMiLCJmaW5nZXJwcmludCI6IjdlZTc4NmU1YTk5YjAyOGNhZWM2M2ZmMWM3ZDExNzBjMjFkYTk2NGM2ODZjNjJkNTI4NGMzYTZkYjFkMDFjYjgiLCJhZGRyZXNzZXMiOlsiMTcyLjE4LjAuMzE6ODQ0MyJdLCJzZWNyZXQiOiI3NDI5NWE0OTc4NmIyNjZlYjczMmU4OTg5ODIyYzZiY2EyODFjMmY2YWVhOWEzZGM5OTA4ODc4MGMzZDU5MGEzIiwiZXhwaXJlc19hdCI6IjIwMjQtMDgtMDhUMTE6NDE6MDIuMjI2NTM2MTgtMDQ6MDAifQ==' 7 | enabled: true 8 | member_config: 9 | - entity: storage-pool 10 | name: default 11 | key: source 12 | value: tank/lxd 13 | netplan_manage: true 14 | netplan_content: | 15 | network: 16 | version: 2 17 | renderer: networkd 18 | ethernets: 19 | enp8s0f0: 20 | dhcp4: no 21 | bridges: 22 | br102: 23 | interfaces: 24 | - enp8s0f0 25 | accept-ra: false 26 | addresses: 27 | - 172.18.0.33/16 28 | routes: 29 | - to: default 30 | via: 172.18.0.1 31 | nameservers: 32 | search: 33 | - internal.efficios.com 34 | addresses: 35 | - 172.18.0.13 36 | -------------------------------------------------------------------------------- /automation/ansible/hosts.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: hosts:!windows 3 | roles: 4 | # Setup filesystem and network configuration before other roles 5 | - zfs 6 | - netplan 7 | - hosts: hosts 8 | roles: 9 | - common 10 | - hosts: hosts:&lxd:!windows 11 | roles: 12 | - lxd 13 | tasks: 14 | - ansible.builtin.include_role: 15 | name: incus 16 | tasks_from: install 17 | - hosts: hosts:&incus:!windows 18 | roles: 19 | - incus 20 | - hosts: hosts:!windows 21 | roles: 22 | - libvirt 23 | - rasdaemon 24 | -------------------------------------------------------------------------------- /automation/ansible/infra_lava.yml: -------------------------------------------------------------------------------- 1 | - hosts: infra_lava 2 | roles: 3 | - common 4 | - lava-server 5 | -------------------------------------------------------------------------------- /automation/ansible/lava-all.yml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | roles: 3 | - common 4 | - babeltrace 5 | - librseq 6 | - liburcu 7 | - lttng-ust 8 | - lttng-tools 9 | - lttng-modules 10 | -------------------------------------------------------------------------------- /automation/ansible/node_all.yml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | roles: 3 | - common 4 | - common-node 5 | - cross-compilers 6 | - compilers 7 | - babeltrace 8 | - librseq 9 | - liburcu 10 | - lttng-ust 11 | - lttng-tools 12 | - lttng-modules 13 | -------------------------------------------------------------------------------- /automation/ansible/node_amd64.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_amd64 2 | roles: 3 | - common 4 | - common-node 5 | - cross-compilers 6 | - compilers 7 | - babeltrace 8 | - binutils-gdb 9 | - librseq 10 | - liburcu 11 | - lttng-ust 12 | - lttng-tools 13 | - lttng-modules 14 | - libs-i386 15 | -------------------------------------------------------------------------------- /automation/ansible/node_arm64.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_arm64 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | - binutils-gdb 12 | -------------------------------------------------------------------------------- /automation/ansible/node_armhf.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_armhf 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | -------------------------------------------------------------------------------- /automation/ansible/node_el.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_el 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | -------------------------------------------------------------------------------- /automation/ansible/node_i386.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_i386 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | -------------------------------------------------------------------------------- /automation/ansible/node_ppc64el.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_ppc64el 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | -------------------------------------------------------------------------------- /automation/ansible/node_riscv64.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_riscv64 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | -------------------------------------------------------------------------------- /automation/ansible/node_s390x.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_s390x 2 | roles: 3 | - common 4 | - common-node 5 | - babeltrace 6 | - librseq 7 | - liburcu 8 | - lttng-ust 9 | - lttng-tools 10 | - lttng-modules 11 | -------------------------------------------------------------------------------- /automation/ansible/node_sles.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_sles 2 | roles: 3 | - common 4 | - common-node 5 | - compilers 6 | - babeltrace 7 | - librseq 8 | - liburcu 9 | - lttng-ust 10 | - lttng-tools 11 | -------------------------------------------------------------------------------- /automation/ansible/node_standalone.yml: -------------------------------------------------------------------------------- 1 | - hosts: node_standalone 2 | roles: 3 | - common 4 | - common-node 5 | - compilers 6 | - cross-compilers 7 | - babeltrace 8 | - librseq 9 | - liburcu 10 | - lttng-ust 11 | - lttng-tools 12 | - lttng-modules 13 | - libs-i386 14 | # Standalone (root) nodes should use fixed IP addresses 15 | # DHCP can be flaky during destructive tests which change 16 | # the date of the system. 17 | - netplan 18 | -------------------------------------------------------------------------------- /automation/ansible/playbooks/delete-dot-lttng.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Delete .lttng folder for the jenkins user 3 | hosts: all 4 | 5 | tasks: 6 | - name: delete .lttng folder 7 | file: 8 | path: /home/jenkins/.lttng 9 | state: absent 10 | -------------------------------------------------------------------------------- /automation/ansible/playbooks/dist-upgrade.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: "Dist upgrade and optional reboot" 3 | hosts: all 4 | vars: 5 | restart: 'no' 6 | reboot_wait: 300 7 | 8 | vars_prompt: 9 | - name: reboot 10 | prompt: "Enter 'yes' to reboot" 11 | default: 'no' 12 | private: no 13 | 14 | tasks: 15 | - name: "apt update && apt dist-upgrade && apt clean && apt autoremove --purge" 16 | ansible.builtin.apt: 17 | update_cache: yes 18 | cache_valid_time: 3600 19 | upgrade: dist 20 | clean: yes 21 | autoremove: yes 22 | purge: yes 23 | 24 | - name: "Reboot server" 25 | command: /sbin/reboot 26 | async: 0 27 | poll: 0 28 | ignore_errors: true 29 | when: reboot == "yes" 30 | register: last_result 31 | 32 | - name: wait for the server to reboot 33 | local_action: wait_for host={{ inventory_hostname }} 34 | port=22 35 | delay=1 36 | timeout=300 37 | state=started 38 | when: last_result.changed 39 | become: false 40 | -------------------------------------------------------------------------------- /automation/ansible/playbooks/known-hosts.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Note: this playbook requires ansible-core >= 2.11 3 | # 4 | - name: Generate local known_hosts files using ssh-keyscan 5 | hosts: localhost 6 | tasks: 7 | - block: 8 | - name: Scan keys 9 | ansible.builtin.command: 10 | argv: "{{ ['ssh-keyscan' ] + all_hosts }}" 11 | register: keyscan_results 12 | - ansible.builtin.known_hosts: 13 | path: ../known_hosts 14 | name: "{{ keyscan_host }}" 15 | key: "{{ keyscan_key }}" 16 | when: keyscan_results.rc == 0 17 | vars: 18 | keyscan_host: "{{ item | split(' ') | first }}" 19 | keyscan_key: "{{ item }}" 20 | with_items: "{{ keyscan_results.stdout | split('\n') }}" 21 | vars: 22 | all_hosts: "{{ groups['all'] | difference(['localhost']) }}" 23 | -------------------------------------------------------------------------------- /automation/ansible/playbooks/post-imagebuild-clean.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: all 3 | tasks: 4 | - when: ansible_os_family == 'Debian' 5 | ansible.builtin.command: 6 | argv: ['apt-get', 'clean'] 7 | - when: ansible_os_family == 'Suse' 8 | ansible.builtin.command: 9 | argv: ['zypper', 'clean'] 10 | - when: ansible_distribution == 'SLES' 11 | block: 12 | - ansible.builtin.command: 13 | argv: ['SUSEConnect', '-d'] 14 | - ansible.builtin.command: 15 | argv: ['SUSEConnect', '--cleanup'] 16 | - ansible.builtin.command: 17 | argv: ['cloud-init', 'clean'] 18 | ignore_errors: true 19 | - ansible.builtin.command: 20 | argv: ['sync'] 21 | - ansible.builtin.shell: 22 | cmd: 'history -cw' 23 | # Some default shells don't have the `history` built-in, 24 | # and it's not blocking that this works or not. 25 | ignore_errors: true 26 | - ansible.builtin.file: 27 | path: /root/.ssh/authorized_keys2 28 | state: absent 29 | -------------------------------------------------------------------------------- /automation/ansible/playbooks/vm_template.xml.j2: -------------------------------------------------------------------------------- 1 | ../roles/libvirt/templates/vm_template.xml.j2 -------------------------------------------------------------------------------- /automation/ansible/requirements.txt: -------------------------------------------------------------------------------- 1 | ansible==9.13.0 2 | ansible-core==2.16.14 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}.yml" 8 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 9 | - "{{ ansible_distribution }}.yml" 10 | - "{{ ansible_os_family }}.yml" 11 | skip: true 12 | 13 | # Setup/install tasks. 14 | - ansible.builtin.include_tasks: setup-RedHat.yml 15 | when: ansible_os_family in ['RedHat', 'Rocky'] 16 | 17 | - ansible.builtin.include_tasks: setup-Debian.yml 18 | when: ansible_os_family == 'Debian' 19 | 20 | - ansible.builtin.include_tasks: setup-Alpine.yml 21 | when: ansible_os_family == 'Alpine' 22 | 23 | - ansible.builtin.include_tasks: setup-Suse.yml 24 | when: ansible_os_family == 'Suse' 25 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure babeltrace build dependencies are installed. 6 | apk: "name={{ babeltrace_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure babeltrace build dependencies are installed. 6 | apt: "name={{ babeltrace_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure babeltrace build dependencies are installed. 3 | dnf: 4 | name: "{{ babeltrace_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure babeltrace build dependencies are installed. 3 | zypper: "name={{ babeltrace_packages }} state=installed update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - glib-dev 5 | - libdwarf-dev 6 | - libelf-dev 7 | - popt-dev 8 | - python3-dev 9 | # - python3-sphinx 10 | - swig 11 | - util-linux-dev 12 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/CentOS-7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - elfutils-devel 5 | - glib2-devel 6 | - libuuid-devel 7 | - popt-devel 8 | - python3-devel 9 | - python-sphinx 10 | - swig 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - doxygen 5 | - libdw-dev 6 | - libelf-dev 7 | - libglib2.0-dev 8 | - libpopt-dev 9 | - python3-dev 10 | - python3-sphinx 11 | - python3-setuptools 12 | - shellcheck 13 | - swig 14 | - uuid-dev 15 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/RedHat-8.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - elfutils-devel 5 | - glib2-devel 6 | - libuuid-devel 7 | - popt-devel 8 | - python36-devel 9 | - python3-sphinx 10 | - swig 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/RedHat-9.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - elfutils-devel 5 | - glib2-devel 6 | - libuuid-devel 7 | - popt-devel 8 | - python3-devel 9 | - python3-sphinx 10 | - swig 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/Rocky-8.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - elfutils-devel 5 | - glib2-devel 6 | - libuuid-devel 7 | - popt-devel 8 | - python36-devel 9 | - python3-sphinx 10 | - swig 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/Rocky-9.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - elfutils-devel 5 | - glib2-devel 6 | - libuuid-devel 7 | - popt-devel 8 | - python3-devel 9 | - python3-sphinx 10 | - swig 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/SLES-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - glib2-devel 5 | - libdw-devel 6 | - libelf-devel 7 | - libuuid-devel 8 | - popt-devel 9 | - python3-devel 10 | - python3-typing 11 | # - python3-sphinx 12 | - swig 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/SLES-15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - glib2-devel 5 | - libdw-devel 6 | - libelf-devel 7 | - libuuid-devel 8 | - popt-devel 9 | - python3-devel 10 | - python3-Sphinx 11 | - swig 12 | -------------------------------------------------------------------------------- /automation/ansible/roles/babeltrace/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | babeltrace_packages: 3 | - chrpath 4 | - glib2-devel 5 | - glib2-devel-static 6 | - libdw-devel 7 | - libelf-devel 8 | - libuuid-devel 9 | - popt-devel 10 | - python3-devel 11 | # - python3-sphinx 12 | - swig 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 7 | - "{{ ansible_distribution }}.yml" 8 | - "{{ ansible_os_family }}.yml" 9 | 10 | # Setup/install tasks. 11 | - ansible.builtin.include_tasks: setup-RedHat.yml 12 | when: ansible_os_family in ['RedHat', 'Rocky'] 13 | 14 | - ansible.builtin.include_tasks: setup-Debian.yml 15 | when: ansible_os_family == 'Debian' 16 | 17 | - ansible.builtin.include_tasks: setup-Alpine.yml 18 | when: ansible_os_family == 'Alpine' 19 | 20 | - ansible.builtin.include_tasks: setup-Suse.yml 21 | when: ansible_os_family == 'Suse' 22 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure binutils_gdb build dependencies are installed. 6 | apk: "name={{ binutils_gdb_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure binutils_gdb build dependencies are installed. 6 | apt: "name={{ binutils_gdb_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure binutils_gdb build dependencies are installed. 3 | dnf: 4 | name: "{{ binutils_gdb_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure binutils_gdb build dependencies are installed. 3 | zypper: "name={{ binutils_gdb_packages }} state=installed update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | binutils_gdb_packages: 3 | - libgmp-dev 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | binutils_gdb_packages: 3 | - ccache 4 | - dejagnu 5 | - elfutils 6 | - fpc 7 | - gfortran 8 | - gnat 9 | - guile-2.2-dev 10 | - libgmp-dev 11 | - libmpfr-dev 12 | - libreadline-dev 13 | - systemtap-sdt-dev 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | binutils_gdb_packages: 3 | - gmp-devel 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | binutils_gdb_packages: 3 | - gmp-devel 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/binutils-gdb/vars/Ubuntu-22.yml: -------------------------------------------------------------------------------- 1 | --- 2 | binutils_gdb_packages: 3 | - ccache 4 | - cmake 5 | - dejagnu 6 | - elfutils 7 | - fp-compiler 8 | - gfortran 9 | - gnat-11 10 | - guile-2.2-dev 11 | - libgmp-dev 12 | - libreadline-dev 13 | - systemtap-sdt-dev 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | common_node_core_pattern: "/tmp/core.%p" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/files/readonly_root_reboot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | IFS=',' read -r -a OPTIONS < <(findmnt --json / | jq -r '.[][0]["options"]') 4 | RO= 5 | for OPTION in "${OPTIONS[@]}" ; do 6 | if [[ "${OPTION}" == "ro" ]] ; then 7 | RO=0 8 | break 9 | fi 10 | done 11 | 12 | if [[ "${RO}" == "0" ]] ; then 13 | echo "'/' is mounted read-only, rebooting" 14 | shutdown -r "+1" 15 | fi 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure common_node packages are installed. 6 | apk: "name={{ common_node_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure common_node packages are installed. 6 | apt: "name={{ common_node_packages }} state=present" 7 | 8 | - name: Install linux headers 9 | when: ansible_virtualization_role == "host" or (ansible_virtualization_role == "guest" and ansible_virtualization_type == "kvm") 10 | block: 11 | - name: Install i386 linux headers Debian 12 | when: ansible_architecture == 'i386' and ansible_distribution == 'Debian' 13 | apt: 14 | name: ['linux-headers-686', 'linux-headers-686-pae'] 15 | - name: Install amd64 linux headers Debian 16 | when: ansible_architecture == 'x86_64' and ansible_distribution == 'Debian' 17 | apt: 18 | name: ['linux-headers-amd64'] 19 | - name: Install armhf linux headers Debian 20 | when: ansible_architecture == 'armv7l' and ansible_distribution == 'Debian' 21 | apt: 22 | name: ['linux-headers-armmp-lpae'] 23 | - name: Install arm64 linux headers Debian 24 | when: ansible_architecture == 'aarch64' and ansible_distribution == 'Debian' 25 | apt: 26 | name: ['linux-headers-arm64'] 27 | - name: Install linux headers Ubuntu 28 | when: ansible_distribution == 'Ubuntu' 29 | apt: 30 | name: linux-headers-generic 31 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure common_node packages are installed. 3 | dnf: 4 | name: "{{ common_node_packages }}" 5 | state: installed 6 | install_weak_deps: false 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_packages: 3 | - alpine-sdk 4 | - autoconf 5 | - automake 6 | - bash 7 | - bison 8 | - clang 9 | - cloc 10 | - coreutils 11 | - curl 12 | - flex 13 | - gettext 14 | - git 15 | - htop 16 | - jq 17 | - libtool 18 | - openjdk11 19 | - openssl-dev 20 | - perl 21 | - py-virtualenv 22 | - rsync 23 | - shadow 24 | - sudo 25 | - tree 26 | - vim 27 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/CentOS-7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_packages: 3 | - autoconf 4 | - automake 5 | - bison 6 | - clang 7 | - curl 8 | - emacs-nox 9 | - flex 10 | - gcc 11 | - gcc-c++ 12 | - gettext 13 | - git 14 | - java-11-openjdk-devel 15 | - java-11-openjdk-headless 16 | # - jq 17 | - libtool 18 | - lzop 19 | - make 20 | - openssh-server 21 | - openssl-devel 22 | - perl-Test-Harness 23 | - psmisc 24 | - python-virtualenv 25 | - rsync 26 | - sudo 27 | - tree 28 | - vim 29 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/Debian-trixie.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_packages: 3 | - abigail-tools 4 | - autoconf 5 | - automake 6 | - bison 7 | - build-essential 8 | - clang 9 | - clang-tools 10 | - cloc 11 | - curl 12 | - openjdk-21-jdk-headless 13 | - emacs-nox 14 | - flex 15 | - gettext 16 | - git 17 | - htop 18 | - jq 19 | - libssl-dev 20 | - libtap-harness-archive-perl 21 | - libtool-bin 22 | - lzop 23 | - maven 24 | - openssh-server 25 | - pbzip2 26 | - psmisc 27 | - rsync 28 | - sudo 29 | - tree 30 | - vim 31 | - virtualenv 32 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_packages: 3 | - abigail-tools 4 | - autoconf 5 | - automake 6 | - bison 7 | - build-essential 8 | - clang 9 | - clang-tools 10 | - cloc 11 | - curl 12 | - openjdk-17-jdk-headless 13 | - emacs-nox 14 | - flex 15 | - gettext 16 | - git 17 | - htop 18 | - jq 19 | - libssl-dev 20 | - libtap-harness-archive-perl 21 | - libtool-bin 22 | - lzop 23 | - maven 24 | - openssh-server 25 | - pbzip2 26 | - psmisc 27 | - rsync 28 | - sudo 29 | - tree 30 | - vim 31 | - virtualenv 32 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_packages: 3 | - autoconf 4 | - automake 5 | - bison 6 | - clang 7 | - curl 8 | - emacs-nox 9 | - flex 10 | - gcc 11 | - gcc-c++ 12 | - gettext 13 | - git 14 | - htop 15 | - java-17-openjdk-devel 16 | - java-17-openjdk-headless 17 | - jq 18 | - libtool 19 | - lzop 20 | - make 21 | - openssh-server 22 | - openssl-devel 23 | - perl-Test-Harness 24 | - psmisc 25 | - python3-virtualenv 26 | - rsync 27 | - sudo 28 | - tree 29 | - vim 30 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/SLES-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_patterns: 3 | - base 4 | - Minimal 5 | - Basis-Devel 6 | 7 | common_node_packages: 8 | - autoconf 9 | - automake 10 | - bison 11 | - curl 12 | - flex 13 | - gettext-runtime 14 | - git-core 15 | - java-1_8_0-openjdk-devel 16 | - java-1_8_0-openjdk-headless 17 | - java-17-openjdk-headless 18 | - jq 19 | - libopenssl-devel 20 | # - libtap-harness-archive-perl 21 | - libtool 22 | # - maven 23 | - openssh 24 | - psmisc 25 | # - python-virtualenv 26 | - python36 27 | - sudo 28 | - tree 29 | - vim 30 | 31 | common_node_products: 32 | # for jq 33 | - PackageHub 34 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/SLES-15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_patterns: 3 | - base 4 | - devel_basis 5 | 6 | common_node_packages: 7 | - autoconf 8 | - automake 9 | - bison 10 | - curl 11 | - flex 12 | - gettext-runtime 13 | - git-core 14 | - java-1_8_0-openjdk-devel 15 | - java-1_8_0-openjdk-headless 16 | - java-17-openjdk-headless 17 | - jq 18 | - libopenssl-devel 19 | # - libtap-harness-archive-perl 20 | - libtool 21 | - maven 22 | - openssh 23 | - psmisc 24 | # - python-virtualenv 25 | - rsync 26 | - sudo 27 | # - tree 28 | - vim 29 | 30 | common_node_products: 31 | # Required for sle-module-legacy 32 | - sle-module-server-applications 33 | # For java 1.8 34 | - sle-module-legacy 35 | -------------------------------------------------------------------------------- /automation/ansible/roles/common-node/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_node_patterns: 3 | - base 4 | - Minimal 5 | - Basis-Devel 6 | 7 | common_node_packages: 8 | - autoconf 9 | - automake 10 | - bison 11 | - curl 12 | - flex 13 | - gettext-runtime 14 | - git-core 15 | - java-1_8_0-openjdk-devel 16 | - java-1_8_0-openjdk-headless 17 | - java-11-openjdk-devel 18 | - java-11-openjdk-headless 19 | # - jq 20 | - libopenssl-devel 21 | # - libtap-harness-archive-perl 22 | - libtool 23 | - maven 24 | - openssh 25 | - psmisc 26 | # - python-virtualenv 27 | - sudo 28 | - tree 29 | - vim 30 | 31 | # For SLES 32 | common_node_products: [] 33 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | unattended_upgrades: true 3 | common_certificate_cert_path_prefix: '/etc/ssl/certs' 4 | common_certificate_key_path_prefix: '/etc/ssl/private' 5 | common_certificate_deploy_combined_pem: true 6 | 7 | common_prometheus_node_exporter_args: "--log.level=error" 8 | common_install_promtail: false 9 | common_promtail_client: 'http://graph:3500/loki/api/v1/push' 10 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/files/efficios_ubuntu_ci.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lttng/lttng-ci/cda4c2262f9cb0e42f689d2b652f3ac80aecf226/automation/ansible/roles/common/files/efficios_ubuntu_ci.gpg -------------------------------------------------------------------------------- /automation/ansible/roles/common/files/grafana.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lttng/lttng-ci/cda4c2262f9cb0e42f689d2b652f3ac80aecf226/automation/ansible/roles/common/files/grafana.gpg -------------------------------------------------------------------------------- /automation/ansible/roles/common/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: 'apt update' 4 | ansible.builtin.command: 5 | argv: ['apt', 'update'] 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/jgalar.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8kywbCVOFZvhqk40dxgBenAUGdEk+CJxKWdAc+UrUMH/fCwlHs+4y0iroJKnLdmEMBxNRJ2yzwtZN1xxvbSKHNHUUHpDghK7O2wc/UJ32FDTopJrQyKYhJSbg93P3/SFtoXHkWZP+wlkV5gBKPxTljAH4bAhN5exnB2yIcOP2fr1GES2N2wYMTB7aT2PTUOIQf0Tf9E8jyfu5i77mwa24LoN4hIS8Cj2DXfxhFAojwOkM44I/03iW3r8AOu2D8uhvp1iz9IBrSfu+aU8j7/U0JqstWJLxC5kEoIOfqqiXQhAuLZTE7jtdShKx2jAQbUfV4PLrrsJ9F7D8bPoqRXedTALtedKWZAtCZg7gKPK0UK51pdtZl9bKKTIs4n+IfKn0W9JM2buJNCchV4MoGUZVe3eByMRMGvqJT7iMCRrRZeQj9CE1mq7PcLgGWkBHEKek+sGejz2rvOyz2J1VTG1wDhzN5nzVeMLzAPjsl3utt2aSZMGYSeh8CduITG0JRzvmDaVsC8c7jKbEItLELXbmiQaNorXxANx5i0Jnre7XK2uOk1m5BnuL3cZxt+Q1hIvCR3HUYVxTr7FVnZUPYJCczm5FZ8Ja/wiD/AOu0LH/znT9yf6t5wDQS/1H2FmCkUvu0Fv1hZ/2N+xdEb3F6w1GUDTVRWtdDSd+NZ2izj2DoQ== decapsuleur@Mercury-2013-01-08 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/kstewart.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnCyGcahJXys7md2yb3jP8L6hLN3D72aZCzsqUrJDsC kstewart@laptop-kstewart 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/mdesnoyers.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjAe/kM1I821jedYIzqpl198Ps/jFtwHu5DgUgwQvj8 mathieu.desnoyers@efficios.com 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/mjeanson.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVFn/ymsG8LqPvgVzyMaSVzYCVn/440ME8O6AzbZG39 mjeanson@laptop-mjeanson 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/odion.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDj4HCdiWImMqauATLse9HNeACAVC2DKuHuBWIO0RT3bkJT8pslEWaYEyI4SCEN/bKdAk/3rHfqXtIvhRONr1JnpttOb1AXam1Ff/xvAjTs8uVH7Eoh1rSAu3dSPvfdiq27G/gntfSYeKo8SzPgZ3A49KPJracTp7Br1Wz8gbzvi0bnoG7rEltpjKf9LvkMWOsPdD3liyPNEoBUn2X/cgC0/Fis2l6cQfGFSoHwHo/31aPN+Ai6bTddyTdf2pBP3GDw5LsI6Cm+rjjqqbX731RapTxrHvllz15t8deNcHnkcuowQHWO1av4l0agMrdv6VvxOQasTbp8TKBhOKnKqcr9ZofQXFLYZIaaVLOSZvLXaCYxX52WnC9DV1iDDTlMnxXHY2VUCOyINUe9wcBY3xDbNmfUVXLWFQ8WpHF/U5N8NsNErTMpPUebaQ3sHoX7RWTg+KiXgA9VIRwD2v3zy/OYRrQxmD8wMP8XCInnqPkfJHd9YLCkMgdka4JwAYj+/Ok= old@lisa 2 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD1bWdPA77uBsA3WQs0rgmxuMCGW1RsGC4i1HkE07/T11cLxowIOhAqP+2iBSd3+u0qsMdOnZ8XBz/R/Cc0g5q3hWEZJWrwPCD/oaFIRWpSU54HR0M1wuz2+ygqcUnw3VqX0xO2gbbN7+PNgR7pZDl8nL3cZQK+Cd2Q2h8LD3QvoKvUwiSxU7frMm+tHxySjEtKhF/XdgaO81kFGIjlKInSUvUlCzpBAQh1JUDkcjwSwwz0m90kr3sTVEPMSuSTW8nbkmUMQUE3u3g5lDSVv9fuMO3i4GI9LxRIXF8U9aJSgFWpzMwiqHQOjQeqr4B1R9jqhgDO1nhnfUN2WRhbhU1/mHR7GZeEaddVSDSAyRlEUeXOuUCmIgWoIRW3+5aB3o55Cx5ALuY4b3fbv+0hzomYJ8y9VWDVAFnA8tH6yuRNazrzDoRn92MSoNFQGoIh3KIYh5/EuFMO58dxtEsC+sCc07QbyiOMB+jads5I/q9fnBZLEoXVkS1eULSbu2ycJiE= old@laura 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/pproulx.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSH31qEkTe2C1MBC5stSxgsmUQSQudE9sXu9aga64lHSvHmuhhbWDX/UGfxokYF899K0BB7CGh806UU3oQQE0Ql/tVplOLyEhHUxyv+ttV5Kv5y+ADWUkgOh8A0K9DyMjqtmc4ZneAei3JoWrkOAZIOVQemd0+qlTu0A4lh5nmCTiJKfbM16pJqQjRvhO7XuGvdlNyH8SUCcl1wTqwEA3Z2InlCmp9Yfdz7bos8kC81MLr1WETIj+1NVk7KlygaXvuLS2YD/HAPN61pcFX63f0yYmkf2hzD8z4kImX6QY3zcEwcE3p9uTLDGQ725cNYcvpubhGai8/jocgkZD0a8Gn eeppeliteloop@gmail.com 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/public_keys/smarchi.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCx37vEoEhPkRP1kAOq8QiyeSKQpWm3A1FDT5rf2fb4Uet4IhSNzsv0XEeURnZ71Zsv8Bi6uKKKLMDZvGPOw1Vk+WwKt7JQOkZfFtijLKmiEuMzsOmhIEV4pwW/7lZtzFSWoHQIDagdQ3ki+WpkP83JX8HTTRKXdShz/8rTvvRbBNMNKOzMEqrlR3coHY1VIC/84wCCBo1slYxZ/gy0vS4leEn52Mmro5xZk5xG24rmK6UBG+4Pw2dKFsh8zWPu0kdBhpJoef2P37VOP2ISUynYDg/Fk9qaya3/MEcl5C8PJMyiB7btcIWvrm6vAUkLzT43z5I79xYHhuGCGXh/ivqeZ/PdkpJqJTORoDf6ezvG9b8IcHasd8eQA/h/4Yze0mXaYpOQp604g3KxckJ8rPNsSRBbq+xu++kqY1AIxW7zUrSx8mcFPlSX2LmXjtRQDwy52miu9uXTEzp3R2qm3r00myNB0BwVtw+kTlROBOINMhwH9Urb2CUcH2MHUrjxlIaC0O3F9i5sYmxeGmIRyeEj5gGyKlCBspYJ/d430owsng/8y4lu0Ig0w/SwVR0SoooTZfpKNfpsJ90RJ5ea92G0JbeQ5tM9qVIW4HFCDHX60XLO1Fv+4M/lTMiCgl6hi3zt24zxvIJBEyq9EyLVPErgfNlQwZdRrkMGJ1zUBc62Qw== simark@simark 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/certs.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Deploy internal certificate 3 | ansible.builtin.copy: 4 | dest: "{{common_certificate_cert_path_prefix}}/internal.efficios.com.pem" 5 | mode: '0644' 6 | owner: 'root' 7 | group: 'root' 8 | src: 'internal.efficios.com.pem' 9 | register: cert 10 | tags: 11 | - certs 12 | - name: Deploy internal certificate key 13 | ansible.builtin.copy: 14 | dest: "{{common_certificate_key_path_prefix}}/internal.efficios.com.key" 15 | mode: '0600' 16 | owner: 'root' 17 | group: 'root' 18 | content: "{{lookup('community.general.bitwarden', 'TLS Certificate internal.efficios.com', collection_id='35c5d8b1-2520-4450-a479-aef50131b930')[0]['notes'] }}" 19 | register: key 20 | tags: 21 | - certs 22 | - name: Deploy combined cert+key 23 | # haproxy uses a combined certificate and key file 24 | when: (cert.changed or key.changed) and common_certificate_deploy_combined_pem 25 | ansible.builtin.shell: 26 | cmd: "cat {{common_certificate_cert_path_prefix}}/internal.efficios.com.pem {{common_certificate_key_path_prefix}}/internal.efficios.com.key > {{common_certificate_key_path_prefix}}/internal.efficios.com.pem" 27 | tags: 28 | - certs 29 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | tags: 5 | - always 6 | ansible.builtin.include_vars: "{{ item }}" 7 | with_first_found: 8 | - files: 9 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}.yml" 10 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 11 | - "{{ ansible_distribution }}.yml" 12 | - "{{ ansible_os_family }}.yml" 13 | skip: true 14 | 15 | # Setup/install tasks. 16 | - ansible.builtin.include_tasks: setup-RedHat.yml 17 | tags: 18 | - always 19 | when: ansible_os_family in ['RedHat', 'Rocky'] 20 | 21 | - ansible.builtin.include_tasks: setup-Debian.yml 22 | tags: 23 | - always 24 | when: ansible_os_family == 'Debian' 25 | 26 | - ansible.builtin.include_tasks: setup-Alpine.yml 27 | tags: 28 | - always 29 | when: ansible_os_family == 'Alpine' 30 | 31 | - ansible.builtin.include_tasks: setup-Suse.yml 32 | tags: 33 | - always 34 | when: ansible_os_family == 'Suse' 35 | 36 | - ansible.builtin.include_tasks: setup-Windows.yml 37 | tags: 38 | - always 39 | when: ansible_os_family == 'Windows' 40 | 41 | # Setup user accounts 42 | - ansible.builtin.include_tasks: users.yml 43 | tags: 44 | - always 45 | tags: 46 | - access 47 | when: ansible_os_family != 'Windows' 48 | 49 | - ansible.builtin.include_tasks: users-Windows.yml 50 | tags: 51 | - always 52 | tags: 53 | - access 54 | when: ansible_os_family == 'Windows' 55 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure common packages are installed. 6 | apk: "name={{ common_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Enable epel-release 3 | # This provides some extra packages, eg. htop, python3-virtualenv 4 | dnf: 5 | name: epel-release 6 | 7 | - name: Enable rocky devel repository 8 | yum_repository: 9 | name: devel 10 | description: "Rocky Linux $releasever - Devel" 11 | mirrorlist: "https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=Devel-$releasever" 12 | enabled: true 13 | gpgcheck: true 14 | when: ansible_distribution == 'Rocky' 15 | 16 | - name: Enable rocky powertools repository 17 | # This provides developer orientated packages, eg. python3-sphinx 18 | when: ansible_distribution == 'Rocky' and ansible_distribution_major_version == '8' 19 | ansible.builtin.yum_repository: 20 | name: Rocky-PowerTools 21 | description: "Rocky Linux $releasever - PowerTools" 22 | mirrorlist: "https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=PowerTools-$releasever" 23 | enabled: true 24 | gpgcheck: true 25 | 26 | - name: Ensure common packages are installed. 27 | dnf: 28 | name: "{{ common_packages }}" 29 | state: installed 30 | install_weak_deps: false 31 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Register with SLES 3 | when: ansible_distribution == 'SLES' 4 | block: 5 | - name: Check registration 6 | ansible.builtin.command: 7 | argv: ['SUSEConnect', '--status'] 8 | register: registration_status 9 | ignore_errors: true 10 | - name: Cleanup registration 11 | when: registration_status.rc != 0 12 | ansible.builtin.command: 13 | argv[ 'SUSEConnect', '--cleanup'] 14 | - ansible.builtin.set_fact: 15 | registration_status_data: "{{registration_status.stdout|ansible.builtin.from_json|first}}" 16 | - name: Get key from host environment 17 | when: registration_status_data['status'] == 'Not Registered' 18 | ansible.builtin.set_fact: 19 | registration_key: "{{lookup('ansible.builtin.env', 'SLES_REGISTRATION_CODE_' + ansible_architecture, default='')}}" 20 | - name: Get key from bitwarden 21 | when: registration_key|default('') == '' and registration_status_data['status'] == 'Not Registered' 22 | ansible.builtin.set_fact: 23 | registration_key: "{{lookup('community.general.bitwarden', 'bec75018-99e8-4064-9cd9-addd011947e5', search='id', field='SLES_REGISTRATION_CODE_' +ansible_architecture)[0]}}" 24 | - name: Perform registration 25 | when: registration_status_data['status'] == 'Not Registered' 26 | ansible.builtin.command: 27 | argv: ['SUSEConnect', '-r', "{{registration_key}}"] 28 | 29 | - name: Connect SLES Repo 30 | when: ansible_distribution == 'SLES' 31 | include_role: 32 | name: suse 33 | tasks_from: product 34 | loop: "{{common_sles_connect_repos}}" 35 | loop_control: 36 | loop_var: 'product' 37 | 38 | - name: Ensure common patterns are installed. 39 | zypper: "name={{ common_patterns }} type=pattern state=present update_cache=yes" 40 | 41 | - name: Ensure common packages are installed. 42 | zypper: "name={{ common_packages }} type=package state=present update_cache=yes" 43 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/users-Windows.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - tags: 3 | - access 4 | block: 5 | - name: Create jenkins user 6 | ansible.windows.win_user: 7 | name: jenkins 8 | state: "{{ (jenkins_user|bool) | ternary('present', 'absent') }}" 9 | 10 | - name: Create jenkins user dotssh folder 11 | when: jenkins_user|bool 12 | ansible.windows.win_file: 13 | state: directory 14 | path: "c:/users/jenkins/.ssh" 15 | 16 | - name: Deploy jenkins authorized_keys 17 | when: jenkins_user|bool 18 | ansible.windows.win_copy: 19 | # yamllint disable-line rule:line-length 20 | content: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA3fwpioVLDoCQsQkYK5bOwPb8N0EXeYm2MleBQTfqxtKaqWWbmUtFXAiyclKHRspjcAiIKwwqLyhPopHBqJzmXnB0GsfGmxXJ6wSBgKJ4kdBVRM+nKlK0wCl1oQkFeV/Xl3jzt1Ey96XiNWlesfkvgcMCpsJzQ7/xRb9IcghskzlQbLOwDNir/156JgAYUYvOLqNCcE+xcgPxJGanfZDXTLkfBYxaeaB8isBPeEU6fhPvu/W055M1uB7E0qhcbFtuKCBu1Fg4jzsW4yDU8+ZB1b5mAXwEAuMbVGMrOf4rjtTpGpQd6XFsXpFT28NU1u5j2cUbtANJalkNDX/UY6XJ jenkins@ci-master-02' 21 | dest: 'c:/users/jenkins/.ssh/authorized_keys' 22 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/tasks/users.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - tags: 3 | - access 4 | block: 5 | - name: Set up authorized_keys for the root user 6 | ansible.builtin.authorized_key: 7 | user: 'root' 8 | key: "{% for key in query('fileglob', 'public_keys/*.pub') %}{{ lookup('file', key) ~ '\n'}}{% endfor %}\n{% for key in lookup('vars', 'extra_root_ssh_authorized_keys', default=[]) %}{{ key ~ '\n' }}{% endfor %}" 9 | exclusive: true 10 | 11 | - name: Remove ubuntu user 12 | ansible.builtin.user: 13 | name: ubuntu 14 | state: absent 15 | remove: yes 16 | 17 | - name: Remove debian user 18 | ansible.builtin.user: 19 | name: debian 20 | state: absent 21 | remove: yes 22 | 23 | - name: Create jenkins user 24 | when: jenkins_user | bool 25 | ansible.builtin.user: 26 | name: 'jenkins' 27 | 28 | - name: Set up authorized_keys for the jenkins user 29 | when: jenkins_user | bool 30 | ansible.builtin.authorized_key: 31 | user: 'jenkins' 32 | # yamllint disable-line rule:line-length 33 | key: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA3fwpioVLDoCQsQkYK5bOwPb8N0EXeYm2MleBQTfqxtKaqWWbmUtFXAiyclKHRspjcAiIKwwqLyhPopHBqJzmXnB0GsfGmxXJ6wSBgKJ4kdBVRM+nKlK0wCl1oQkFeV/Xl3jzt1Ey96XiNWlesfkvgcMCpsJzQ7/xRb9IcghskzlQbLOwDNir/156JgAYUYvOLqNCcE+xcgPxJGanfZDXTLkfBYxaeaB8isBPeEU6fhPvu/W055M1uB7E0qhcbFtuKCBu1Fg4jzsW4yDU8+ZB1b5mAXwEAuMbVGMrOf4rjtTpGpQd6XFsXpFT28NU1u5j2cUbtANJalkNDX/UY6XJ jenkins@ci-master-02' 34 | 35 | - name: Remove jenkins sudoers file 36 | ansible.builtin.file: 37 | path: "/etc/sudoers.d/jenkins" 38 | state: absent 39 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/templates/authorized_keys.j2: -------------------------------------------------------------------------------- 1 | {% for filename in lookup('fileglob', 'public_keys/*.pub', wantlist=true) -%} 2 | {{ lookup('file', filename) }} 3 | {% endfor %} 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/templates/promtail.config.yml.j2: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: {{common_promtail_client}} 3 | positions: 4 | filename: /tmp/positions.yaml 5 | scrape_configs: 6 | - job_name: journal 7 | journal: 8 | json: true 9 | labels: 10 | host: "{{inventory_hostname}}" 11 | job: systemd-journal 12 | ci_role: "{{('hosts' in group_names)|ternary('host', 'ci-node')}}" 13 | max_age: 1h 14 | relabel_configs: 15 | - source_labels: 16 | - __journal__systemd_unit 17 | target_label: unit 18 | server: 19 | disable: true 20 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/templates/unattended_upgrades_extra_repos.conf.j2: -------------------------------------------------------------------------------- 1 | Unattended-Upgrade::Allowed-Origins { 2 | {% for entry in repos %} 3 | "{{entry}}"; 4 | {% endfor %} 5 | } 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_packages: 3 | - bash 4 | - coreutils 5 | - curl 6 | - git 7 | - htop 8 | - py-virtualenv 9 | - rsync 10 | - shadow 11 | - sudo 12 | - tree 13 | - vim 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/CentOS-7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_packages: 3 | - curl 4 | - emacs-nox 5 | - git 6 | - lzop 7 | - openssh-server 8 | - psmisc 9 | - python-virtualenv 10 | - rsync 11 | - sudo 12 | - tree 13 | - vim 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_packages: 3 | - curl 4 | - emacs-nox 5 | - git 6 | - htop 7 | - jq 8 | - openssh-server 9 | - psmisc 10 | - rsync 11 | - sudo 12 | - tree 13 | - vim 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_packages: 3 | - curl 4 | - emacs-nox 5 | - git 6 | - htop 7 | - lzop 8 | - openssh-server 9 | - psmisc 10 | - python3-virtualenv 11 | - python3.12 # For ansible interpreter 12 | - rsync 13 | - sudo 14 | - tree 15 | - vim 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/SLES-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_patterns: 3 | - base 4 | 5 | common_packages: 6 | - curl 7 | - git-core 8 | - openssh 9 | - psmisc 10 | - sudo 11 | - tree 12 | - vim 13 | 14 | common_sles_connect_repos: 15 | - sle-sdk 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/SLES-15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_patterns: 3 | - base 4 | 5 | common_packages: 6 | - curl 7 | - git-core 8 | - openssh 9 | - psmisc 10 | - rsync 11 | - sudo 12 | - vim 13 | 14 | common_sles_connect_repos: 15 | - sle-module-basesystem 16 | - sle-module-desktop-applications 17 | - sle-module-development-tools 18 | - sle-module-python3 19 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | common_patterns: 3 | - base 4 | - Minimal 5 | 6 | common_packages: 7 | - curl 8 | - git-core 9 | - openssh 10 | - psmisc 11 | - sudo 12 | - tree 13 | - vim 14 | 15 | common_sles_connect_repos: [] 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/common/vars/Windows.yml: -------------------------------------------------------------------------------- 1 | --- 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_install: true 3 | compilers_legacy_packages: 4 | - gcc-4.8 5 | - g++-4.8 -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" 9 | - "{{ ansible_distribution }}.yml" 10 | - "{{ ansible_os_family }}.yml" 11 | skip: true 12 | 13 | # Setup/install tasks. 14 | - ansible.builtin.include_tasks: setup-RedHat.yml 15 | when: ansible_os_family in ['RedHat', 'Rocky'] 16 | 17 | - ansible.builtin.include_tasks: setup-Debian.yml 18 | when: ansible_os_family == 'Debian' 19 | 20 | - ansible.builtin.include_tasks: setup-Alpine.yml 21 | when: ansible_os_family == 'Alpine' 22 | 23 | - ansible.builtin.include_tasks: setup-Suse.yml 24 | when: ansible_os_family == 'Suse' 25 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure compilers packages are installed. 6 | apk: "name={{ compilers_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install legacy compilers 3 | when: compilers_legacy_install 4 | block: 5 | # `apt-key` or `gnupg` are optional dependencies, but are required for this 6 | # instance of `apt_repository`. 7 | - ansible.builtin.package: 8 | name: 'gnupg' 9 | - name: Add sources for gcc 4.8 10 | when: ansible_distribution == 'Debian' 11 | ansible.builtin.apt_repository: 12 | repo: 'deb [trusted=yes] http://archive.debian.org/debian jessie main' 13 | state: "{{compilers_legacy_install|ternary('present', 'absent')}}" 14 | - name: Install legacy compiler packages 15 | ansible.builtin.apt: 16 | name: "{{compilers_legacy_packages}}" 17 | 18 | - name: Update apt cache. 19 | apt: update_cache=yes cache_valid_time=86400 20 | 21 | - name: Ensure compilers packages are installed. 22 | apt: "name={{ compilers_packages }} state=present" 23 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure compilers packages are installed. 3 | dnf: 4 | name: "{{ compilers_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure common_node packages are installed. 3 | zypper: "name={{ compilers_packages }} type=package state=present update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Debian-11.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: 3 | - gcc 4 | - gcc-9 5 | - gcc-10 6 | - g++ 7 | - g++-9 8 | - g++-10 9 | - clang 10 | - clang-9 11 | - clang-11 12 | - clang-13 13 | - libclang-dev 14 | - libclang-9-dev 15 | - libclang-11-dev 16 | - libclang-13-dev 17 | - clang-format 18 | - clang-format-9 19 | - clang-format-11 20 | - clang-format-13 21 | - clang-tidy 22 | - clang-tidy-9 23 | - clang-tidy-11 24 | - clang-tidy-13 25 | - bear 26 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Debian-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: 3 | - gcc 4 | - gcc-11 5 | - gcc-12 6 | - g++ 7 | - g++-11 8 | - g++-12 9 | - clang 10 | - clang-13 11 | - clang-14 12 | - clang-15 13 | - clang-16 14 | - libclang-dev 15 | - libclang-13-dev 16 | - libclang-14-dev 17 | - libclang-15-dev 18 | - libclang-16-dev 19 | - clang-format 20 | - clang-format-13 21 | - clang-format-14 22 | - clang-format-15 23 | - clang-format-16 24 | - clang-tidy 25 | - clang-tidy-13 26 | - clang-tidy-14 27 | - clang-tidy-15 28 | - clang-tidy-16 29 | - bear 30 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Debian-trixie.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: 3 | - gcc 4 | - gcc-12 5 | - gcc-13 6 | - gcc-14 7 | - g++ 8 | - g++-12 9 | - g++-13 10 | - g++-14 11 | - clang 12 | - clang-17 13 | - clang-18 14 | - clang-19 15 | - libclang-dev 16 | - libclang-17-dev 17 | - libclang-18-dev 18 | - libclang-19-dev 19 | - clang-format 20 | - clang-format-17 21 | - clang-format-18 22 | - clang-format-19 23 | - clang-tidy 24 | - clang-tidy-17 25 | - clang-tidy-18 26 | - clang-tidy-19 27 | - bear 28 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_packages: 3 | - gcc 4 | - gcc-c++ 5 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Ubuntu-20.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_packages: [] 3 | compilers_packages: 4 | - gcc 5 | - gcc-7 6 | - gcc-8 7 | - gcc-9 8 | - gcc-10 9 | - g++ 10 | - g++-7 11 | - g++-8 12 | - g++-9 13 | - g++-10 14 | - clang 15 | - clang-7 16 | - clang-8 17 | - clang-9 18 | - clang-10 19 | - clang-11 20 | - clang-12 21 | - libclang-dev 22 | - libclang-7-dev 23 | - libclang-8-dev 24 | - libclang-9-dev 25 | - libclang-10-dev 26 | - libclang-11-dev 27 | - libclang-12-dev 28 | - clang-format 29 | - clang-format-7 30 | - clang-format-8 31 | - clang-format-9 32 | - clang-format-10 33 | - clang-format-11 34 | - clang-format-12 35 | - clang-tidy 36 | - clang-tidy-7 37 | - clang-tidy-8 38 | - clang-tidy-9 39 | - clang-tidy-10 40 | - clang-tidy-11 41 | - clang-tidy-12 42 | - bear 43 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Ubuntu-22.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_packages: [] 3 | compilers_packages: 4 | - gcc 5 | - gcc-9 6 | - gcc-10 7 | - gcc-11 8 | - gcc-12 9 | - g++ 10 | - g++-9 11 | - g++-10 12 | - g++-11 13 | - g++-12 14 | - clang 15 | - clang-11 16 | - clang-12 17 | - clang-13 18 | - clang-14 19 | - libclang-dev 20 | - libclang-11-dev 21 | - libclang-12-dev 22 | - libclang-13-dev 23 | - libclang-14-dev 24 | - libclang-15-dev 25 | - clang-format 26 | - clang-format-11 27 | - clang-format-12 28 | - clang-format-13 29 | - clang-format-14 30 | - clang-format-15 31 | - clang-tidy 32 | - clang-tidy-11 33 | - clang-tidy-12 34 | - clang-tidy-13 35 | - clang-tidy-14 36 | - clang-tidy-15 37 | - bear 38 | -------------------------------------------------------------------------------- /automation/ansible/roles/compilers/vars/Ubuntu-24.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_packages: [] 3 | compilers_packages: 4 | - gcc 5 | - gcc-9 6 | - gcc-10 7 | - gcc-11 8 | - gcc-12 9 | - gcc-13 10 | - gcc-14 11 | - g++ 12 | - g++-9 13 | - g++-10 14 | - g++-11 15 | - g++-12 16 | - g++-13 17 | - g++-14 18 | - clang 19 | - clang-14 20 | - clang-15 21 | - clang-16 22 | - clang-17 23 | - clang-18 24 | - libclang-dev 25 | - libclang-14-dev 26 | - libclang-15-dev 27 | - libclang-16-dev 28 | - libclang-17-dev 29 | - libclang-18-dev 30 | - clang-format 31 | - clang-format-14 32 | - clang-format-15 33 | - clang-format-16 34 | - clang-format-17 35 | - clang-format-18 36 | - clang-tidy 37 | - clang-tidy-14 38 | - clang-tidy-15 39 | - clang-tidy-16 40 | - clang-tidy-17 41 | - clang-tidy-18 42 | - bear 43 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | compilers_legacy_install: true 3 | cross_compilers_debian_bookworm_snapshot: false 4 | cross_compilers_install: true 5 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/files/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/debian:bookworm 2 | 3 | # 4 | # Create the container: podman build -t . gcc-4.8 5 | # Build the cross compilers: 6 | # mkdir -p ~/gcc-4.8 7 | # for i in aarch64-linux-gnu arm-linux-gnueabihf i686-linux-gnu powerpc64le-linux-gnu powerpc-linux-gnu riscv64-linux-gnu s390x-linux-gnu ; do podman run --rm -e "TARGET=$i" -v ~/gcc-4.8:/output localhost/gcc-4.8 ; done 8 | # tar -czf ~/gcc-4.8.tgz -C ~/gcc-4.8 ./ 9 | 10 | RUN echo 'deb-src http://deb.debian.org/debian bookworm main contrib' >> /etc/apt/sources.list 11 | RUN apt-get update 12 | 13 | RUN apt-get -y --force-yes build-dep gcc-12 14 | RUN apt-get -y --force-yes install wget 15 | #RUN apt-get -y --force-yes install -t jessie cross-gcc-dev 16 | RUN mkdir -p /src/build /src/patches /output 17 | WORKDIR /src 18 | RUN wget -q -O - https://github.com/gcc-mirror/gcc/archive/refs/tags/releases/gcc-4.8.5.tar.gz | tar -xzf - 19 | WORKDIR /src/patches 20 | 21 | # This patch fixes builds with more recent versions of texinfo 22 | RUN wget -q https://aur.archlinux.org/cgit/aur.git/plain/gcc.texi.49.patch?h=gcc48 -O 01-texi.patch.0 23 | 24 | # This patch updates the program search directions and installation directories 25 | # to match those used by the Debian packages, so we can piggy-back on the modern 26 | # toolchain binaries (eg. binutils--arch64-linux-gnu) 27 | RUN wget -q https://salsa.debian.org/toolchain-team/gcc/-/raw/gcc-4.8-debian/debian/patches/cross-install-location.diff -O 02-cross_install_dir.patch.2 28 | 29 | WORKDIR /src/build 30 | COPY script.sh /usr/bin/build-gcc.sh 31 | CMD /usr/bin/build-gcc.sh 32 | 33 | # @TODO: missing crtbegin.o eg., libgcc-4.8-dev-arm64-cross 34 | # This can be "worked around" by copying the system libc-cross 35 | # eg. 36 | # cp -r /usr/lib/gcc-cross/aarch64-linux-gnu/12/ /usr/lib/gcc-cross/aarch64-linux-gnu/4.8.5 37 | # make 38 | # 39 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/files/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: gcc48 gcc48-container gcc55 gcc55-container 2 | 3 | all: gcc48 gcc55 4 | 5 | #ARCHES = x86_64-pc-linux-gnu aarch64-linux-gnu arm-linux-gnueabihf i686-linux-gnu powerpc64le-linux-gnu powerpc-linux-gnu riscv64-linux-gnu s390x-linux-gnu 6 | ARCHES = x86_64-pc-linux-gnu aarch64-linux-gnu 7 | # The last build of gcc-4.8 used a native gcc-4.8 compiler from snapshot.debian.org, 8 | # so we avoid rebuilding the host compiler at this time. 9 | ARCHES_48 := $(filter-out x86_64-pc-linux-gnu,$(ARCHES)) 10 | 11 | gcc55: gcc55-container 12 | mkdir -p gcc55 13 | podman run --rm -e "TARGETS=$(ARCHES)" -e "SRC_DIR=/src/gcc-releases-gcc-5.5.0" -e "BIN_SUFFIX=5.5" -e "CSTD=gnu11" -e "CXXSTD=gnu++11" -v ./gcc55:/output localhost/gcc-5.5 14 | tar -czf gcc55.tar.gz -C gcc55 ./ 15 | 16 | gcc55-container: 17 | podman build -t gcc-5.5 -f gcc5.Containerfile . 18 | 19 | gcc48: gcc48-container 20 | mkdir -p gcc48 21 | podman run --rm -e "TARGETS=$(ARCHES_48)" -v ./gcc48:/output localhost/gcc-4.8 22 | tar -czf gcc48.tar.gz -C gcc48 ./ 23 | 24 | gcc48-container: 25 | podman build -t gcc-4.8 -f Containerfile . 26 | 27 | clean: 28 | rm -rf gcc55/ gcc48/ 29 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/files/gcc5-sanitizer_fs.patch: -------------------------------------------------------------------------------- 1 | --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2024-01-17 21:18:45.979243850 +0000 2 | +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2024-01-17 21:20:13.467971880 +0000 3 | @@ -60,7 +60,6 @@ 4 | #include 5 | #include 6 | #include 7 | -#include 8 | #include 9 | #include 10 | #include 11 | @@ -767,10 +766,10 @@ 12 | unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; 13 | unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; 14 | #endif 15 | - unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; 16 | - unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; 17 | - unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; 18 | - unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; 19 | + unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); 20 | + unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); 21 | + unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); 22 | + unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); 23 | unsigned IOCTL_GIO_CMAP = GIO_CMAP; 24 | unsigned IOCTL_GIO_FONT = GIO_FONT; 25 | unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" 9 | - "{{ ansible_distribution }}.yml" 10 | - "{{ ansible_os_family }}.yml" 11 | skip: true 12 | 13 | # Setup/install tasks. 14 | - ansible.builtin.include_tasks: setup-RedHat.yml 15 | when: ansible_os_family in ['RedHat', 'Rocky'] 16 | 17 | - ansible.builtin.include_tasks: setup-Debian.yml 18 | when: ansible_os_family == 'Debian' 19 | 20 | - ansible.builtin.include_tasks: setup-Alpine.yml 21 | when: ansible_os_family == 'Alpine' 22 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure cross-compilers packages are installed. 6 | when: cross_compilers_install|default(true) 7 | apk: "name={{ cross_compilers_packages }} state=present" 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure cross-compilers packages are installed. 3 | when: cross_compilers_install|default(true) 4 | dnf: 5 | name: "{{ cross_compilers_packages }}" 6 | state: installed 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Debian-11.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: 3 | - gcc-aarch64-linux-gnu 4 | - gcc-arm-linux-gnueabihf 5 | - gcc-i686-linux-gnu 6 | - gcc-powerpc64le-linux-gnu 7 | - gcc-powerpc-linux-gnu 8 | - gcc-riscv64-linux-gnu 9 | - gcc-s390x-linux-gnu 10 | 11 | - gcc-10-aarch64-linux-gnu 12 | - gcc-10-arm-linux-gnueabihf 13 | - gcc-10-i686-linux-gnu 14 | - gcc-10-powerpc64le-linux-gnu 15 | - gcc-10-powerpc-linux-gnu 16 | - gcc-10-riscv64-linux-gnu 17 | - gcc-10-s390x-linux-gnu 18 | 19 | - gcc-9-aarch64-linux-gnu 20 | - gcc-9-arm-linux-gnueabihf 21 | - gcc-9-i686-linux-gnu 22 | - gcc-9-powerpc64le-linux-gnu 23 | - gcc-9-powerpc-linux-gnu 24 | - gcc-9-riscv64-linux-gnu 25 | - gcc-9-s390x-linux-gnu 26 | 27 | cross_compilers_packages_exclude_i386: 28 | - gcc-i686-linux-gnu 29 | - gcc-10-i686-linux-gnu 30 | - gcc-9-i686-linux-gnu 31 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Debian-sid.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: 3 | - gcc-aarch64-linux-gnu 4 | - gcc-arm-linux-gnueabihf 5 | - gcc-i686-linux-gnu 6 | - gcc-powerpc64le-linux-gnu 7 | - gcc-powerpc-linux-gnu 8 | - gcc-riscv64-linux-gnu 9 | - gcc-s390x-linux-gnu 10 | 11 | - gcc-13-aarch64-linux-gnu 12 | - gcc-13-arm-linux-gnueabihf 13 | - gcc-13-i686-linux-gnu 14 | - gcc-13-powerpc64le-linux-gnu 15 | - gcc-13-powerpc-linux-gnu 16 | - gcc-13-riscv64-linux-gnu 17 | - gcc-13-s390x-linux-gnu 18 | 19 | - gcc-12-aarch64-linux-gnu 20 | - gcc-12-arm-linux-gnueabihf 21 | - gcc-12-i686-linux-gnu 22 | - gcc-12-powerpc64le-linux-gnu 23 | - gcc-12-powerpc-linux-gnu 24 | - gcc-12-riscv64-linux-gnu 25 | - gcc-12-s390x-linux-gnu 26 | 27 | - gcc-11-aarch64-linux-gnu 28 | - gcc-11-arm-linux-gnueabihf 29 | - gcc-11-i686-linux-gnu 30 | - gcc-11-powerpc64le-linux-gnu 31 | - gcc-11-powerpc-linux-gnu 32 | - gcc-11-riscv64-linux-gnu 33 | - gcc-11-s390x-linux-gnu 34 | 35 | cross_compilers_packages_exclude_i386: 36 | - gcc-i686-linux-gnu 37 | - gcc-13-i686-linux-gnu 38 | - gcc-12-i686-linux-gnu 39 | - gcc-11-i686-linux-gnu 40 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Debian-trixie.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: 3 | - gcc-aarch64-linux-gnu 4 | - gcc-arm-linux-gnueabihf 5 | - gcc-i686-linux-gnu 6 | - gcc-powerpc64le-linux-gnu 7 | - gcc-powerpc-linux-gnu 8 | - gcc-riscv64-linux-gnu 9 | - gcc-s390x-linux-gnu 10 | 11 | - gcc-14-aarch64-linux-gnu 12 | - gcc-14-arm-linux-gnueabihf 13 | - gcc-14-i686-linux-gnu 14 | - gcc-14-powerpc64le-linux-gnu 15 | - gcc-14-powerpc-linux-gnu 16 | - gcc-14-riscv64-linux-gnu 17 | - gcc-14-s390x-linux-gnu 18 | 19 | - gcc-13-aarch64-linux-gnu 20 | - gcc-13-arm-linux-gnueabihf 21 | - gcc-13-i686-linux-gnu 22 | - gcc-13-powerpc64le-linux-gnu 23 | - gcc-13-powerpc-linux-gnu 24 | - gcc-13-riscv64-linux-gnu 25 | - gcc-13-s390x-linux-gnu 26 | 27 | - gcc-12-aarch64-linux-gnu 28 | - gcc-12-arm-linux-gnueabihf 29 | - gcc-12-i686-linux-gnu 30 | - gcc-12-powerpc64le-linux-gnu 31 | - gcc-12-powerpc-linux-gnu 32 | - gcc-12-riscv64-linux-gnu 33 | - gcc-12-s390x-linux-gnu 34 | 35 | cross_compilers_packages_exclude_i386: 36 | - gcc-i686-linux-gnu 37 | - gcc-14-i686-linux-gnu 38 | - gcc-13-i686-linux-gnu 39 | - gcc-12-i686-linux-gnu 40 | 41 | cross_compilers_packages_exclude_arm64: 42 | - gcc-aarch64-linux-gnu 43 | - gcc-14-aarch64-linux-gnu 44 | - gcc-13-aarch64-linux-gnu 45 | - gcc-12-aarch64-linux-gnu 46 | - gcc-12-powerpc-linux-gnu 47 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: 3 | - gcc-aarch64-linux-gnu 4 | - gcc-powerpc64le-linux-gnu 5 | - gcc-arm-linux-gnueabihf 6 | - gcc-powerpc-linux-gnu 7 | - gcc-4.9-aarch64-linux-gnu 8 | - gcc-4.9-powerpc64le-linux-gnu 9 | - gcc-4.9-arm-linux-gnueabihf 10 | - gcc-4.9-powerpc-linux-gnu 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/cross-compilers/vars/Ubuntu-20.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cross_compilers_packages: 3 | - gcc-aarch64-linux-gnu 4 | - gcc-arm-linux-gnueabihf 5 | - gcc-i686-linux-gnu 6 | - gcc-powerpc64le-linux-gnu 7 | - gcc-powerpc-linux-gnu 8 | - gcc-riscv64-linux-gnu 9 | - gcc-s390x-linux-gnu 10 | 11 | - gcc-10-aarch64-linux-gnu 12 | - gcc-10-arm-linux-gnueabihf 13 | - gcc-10-i686-linux-gnu 14 | - gcc-10-powerpc64le-linux-gnu 15 | - gcc-10-powerpc-linux-gnu 16 | - gcc-10-riscv64-linux-gnu 17 | - gcc-10-s390x-linux-gnu 18 | 19 | - gcc-9-aarch64-linux-gnu 20 | - gcc-9-arm-linux-gnueabihf 21 | - gcc-9-i686-linux-gnu 22 | - gcc-9-powerpc64le-linux-gnu 23 | - gcc-9-s390x-linux-gnu 24 | - gcc-9-powerpc-linux-gnu 25 | - gcc-9-riscv64-linux-gnu 26 | 27 | - gcc-8-aarch64-linux-gnu 28 | - gcc-8-arm-linux-gnueabihf 29 | - gcc-8-i686-linux-gnu 30 | - gcc-8-powerpc64le-linux-gnu 31 | - gcc-8-s390x-linux-gnu 32 | - gcc-8-powerpc-linux-gnu 33 | - gcc-8-riscv64-linux-gnu 34 | 35 | # Packages not available on i386 36 | cross_compilers_packages_exclude_i386: 37 | - gcc-i686-linux-gnu 38 | - gcc-8-i686-linux-gnu 39 | - gcc-9-i686-linux-gnu 40 | - gcc-10-i686-linux-gnu 41 | 42 | cross_compilers_debian_bookworm_snapshot: true 43 | -------------------------------------------------------------------------------- /automation/ansible/roles/developer/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | developer_install_gui: false 3 | developer_gui_packages: [] 4 | 5 | developer_install_tui: true 6 | developer_tui_packages: 7 | # Used by tar when downloading .tar.bz2 releases with vlttng 8 | - bzip2 9 | - emacs-nox 10 | - gdb 11 | - git-review 12 | - npm # For working on web sites 13 | - pkg-config 14 | - ruby-bundler # For working on web sites 15 | - tmux 16 | - vim-nox 17 | # wget may be used by some vlttng commands 18 | - wget 19 | 20 | developer_install_vlttng: true 21 | developer_pip_requirements: 22 | - python3-pip 23 | - python3-setuptools 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/developer/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Include OS-specific variables 3 | ansible.builtin.include_vars: "{{item}}" 4 | with_first_found: 5 | - files: 6 | - "{{ansible_distribution}}-{{ansible_distribution_major_version}}.yml" 7 | - "{{ansible_distribution}}-{{ansible_distribution_release}}.yml" 8 | - "{{ansible_distribution}}.yml" 9 | - "{{ansible_os_family}}.yml" 10 | skip: true 11 | - name: OS-specific setup 12 | ansible.builtin.include_tasks: "{{item}}" 13 | with_first_found: 14 | - files: 15 | - "setup-{{ansible_os_family}}.yml" 16 | skip: true 17 | - name: Install vlttng 18 | block: 19 | - name: Install requirements to run pip 20 | ansible.builtin.package: 21 | name: "{{developer_pip_requirements}}" 22 | - name: Install vlttng using pip 23 | ansible.builtin.pip: 24 | name: vlttng 25 | extra_args: "{{(ansible_python_version is version('3.11', '>='))|ternary('--break-system-packages', '')}}" 26 | - name: Install developer TUI tools 27 | when: developer_install_tui 28 | ansible.builtin.package: 29 | name: "{{developer_tui_packages}}" 30 | - name: Install developer GUI tools 31 | when: developer_install_gui 32 | ansible.builtin.package: 33 | name: "{{developer_gui_packages}}" 34 | -------------------------------------------------------------------------------- /automation/ansible/roles/developer/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Activate required products 4 | when: ansible_distribution == 'SLES' 5 | include_role: 6 | name: suse 7 | tasks_from: product 8 | loop: "{{developer_sles_products|default([])}}" 9 | loop_control: 10 | loop_var: 'product' 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/developer/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | developer_tui_packages: 3 | # Used by tar when downloading .tar.bz2 releases with vlttng 4 | - bzip2 5 | - emacs-nox 6 | - gdb 7 | - git-review 8 | - pkg-config 9 | - tmux 10 | # - vim-nox 11 | - vim 12 | # wget may be used by some vlttng commands 13 | - wget 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/developer/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | developer_tui_packages: 3 | # Used by tar when downloading .tar.bz2 releases with vlttng 4 | - bzip2 5 | - emacs-nox 6 | - gdb 7 | # - git-review 8 | - pkg-config 9 | - tmux 10 | # - vim-nox 11 | - vim 12 | # wget may be used by some vlttng commands 13 | - wget 14 | 15 | developer_sles_products: 16 | # provides tmux 17 | - PackageHub 18 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | docker_upstream: true 4 | docker_upstream_packages: 5 | - 'docker-ce' 6 | - 'docker-ce-cli' 7 | - 'containerd.io' 8 | - 'docker-buildx-plugin' 9 | - 'docker-compose-plugin' 10 | 11 | docker_Debian_packages: 12 | - 'docker.io' 13 | - 'docker-compose' 14 | 15 | docker_sles_products: 16 | - 'sle-module-containers' 17 | 18 | docker_SLES_packages: 19 | - 'docker' 20 | 21 | docker_Ubuntu_packages: 22 | - 'docker.io' 23 | - 'docker-compose-v2' 24 | 25 | # Rocky Linux doesn't provide packages for docker 26 | docker_Rocky_packages: [] 27 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/files/daemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "bip": "10.11.0.1/16", 3 | "default-address-pools": 4 | [ 5 | {"base":"10.10.0.0/16","size":24} 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: 'Restart docker' 3 | ansible.builtin.service: 4 | name: 'docker' 5 | state: 'restarted' 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Include OS-specific variables 3 | ansible.builtin.include_vars: "{{item}}" 4 | with_first_found: 5 | - files: 6 | - "{{ansible_distribution}}-{{ansible_distribution_major_version}}.yml" 7 | - "{{ansible_distribution}}-{{ansible_distribution_release}}.yml" 8 | - "{{ansible_distribution}}.yml" 9 | - "{{ansible_os_family}}.yml" 10 | skip: true 11 | - name: OS-specific setup 12 | ansible.builtin.include_tasks: "{{item}}" 13 | with_first_found: 14 | - files: 15 | - "setup-{{ansible_os_family}}.yml" 16 | skip: true 17 | - name: Deploy docker network configuration 18 | block: 19 | - name: Create docker configuration directory 20 | ansible.builtin.file: 21 | path: '/etc/docker' 22 | state: 'directory' 23 | owner: 'root' 24 | group: 'root' 25 | mode: '0755' 26 | - name: Copy docker configuration 27 | ansible.builtin.copy: 28 | src: 'daemon.json' 29 | dest: '/etc/docker/daemon.json' 30 | owner: 'root' 31 | group: 'root' 32 | mode: '0644' 33 | notify: 34 | - 'Restart docker' 35 | - name: Install docker 36 | ansible.builtin.package: 37 | name: "{{docker_packages}}" 38 | - name: Ensure docker is running 39 | ansible.builtin.service: 40 | name: 'docker' 41 | state: 'started' 42 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - when: ansible_distribution_release in ['trixie', 'sid'] 3 | ansible.builtin.set_fact: 4 | docker_upstream: false 5 | - ansible.builtin.set_fact: 6 | docker_packages: "{{docker_upstream|ternary(docker_upstream_packages, lookup('vars', 'docker_' + ansible_distribution + '_packages', default=[]))}}" 7 | - when: docker_upstream 8 | block: 9 | - name: Add upstream docker apt key 10 | ansible.builtin.apt_key: 11 | url: "https://download.docker.com/linux/{{ansible_distribution|lower}}/gpg" 12 | - name: Add upstream docker sources 13 | ansible.builtin.apt_repository: 14 | filename: 'docker' 15 | repo: "deb https://download.docker.com/linux/{{ansible_distribution|lower}} {{ansible_distribution_release}} stable" 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - ansible.builtin.set_fact: 3 | docker_packages: "{{docker_upstream_packages}}" 4 | docker_upstream: true 5 | - ansible.builtin.yum_repository: 6 | name: docker 7 | description: 'Docker CE Stable - $basearch' 8 | baseurl: 'https://download.docker.com/linux/centos/$releasever/$basearch/stable' 9 | enabled: true 10 | gpgcheck: true 11 | gpgkey: 'https://download.docker.com/linux/centos/gpg' 12 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Add SLES products 4 | when: ansible_distribution == 'SLES' 5 | include_role: 6 | name: suse 7 | tasks_from: product 8 | loop: "{{docker_sles_products|default([])}}" 9 | loop_control: 10 | loop_var: product 11 | 12 | - ansible.builtin.set_fact: 13 | docker_packages: "{{docker_SLES_packages}}" 14 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/vars/SLES-15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Docker upstream only supports SLES s390x 4 | docker_upstream: false 5 | -------------------------------------------------------------------------------- /automation/ansible/roles/docker/vars/Ubuntu-24.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Docker upstream doesn't yet have a repository for Ubuntu noble 4 | docker_upstream: false 5 | -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/files/grokmirror_2.0.11-1_all.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lttng/lttng-ci/cda4c2262f9cb0e42f689d2b652f3ac80aecf226/automation/ansible/roles/gitmirror/files/grokmirror_2.0.11-1_all.deb -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/files/update.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eu 4 | 5 | # sudo -u gitdaemon git clone --mirror git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git 6 | 7 | update_git() { 8 | local repodir="$1" 9 | local origin="$2" 10 | 11 | if [ ! -d "${repodir}" ] ; then 12 | git clone --mirror "${origin}" "${repodir}" 13 | fi 14 | 15 | pushd "$repodir" 16 | 17 | git remote update 18 | #git gc 19 | mkdir -p info/web 20 | git for-each-ref --sort=-committerdate --format='%(committerdate:iso8601)' --count=1 >info/web/last-modified 21 | 22 | popd 23 | } 24 | 25 | ## 26 | # Vanilla composite repo 27 | ## 28 | 29 | update_git linux-all.git/ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 30 | 31 | pushd linux-all.git/ 32 | ## Add stable if needed 33 | if ! git remote | grep -q stable ; then 34 | git remote add stable https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 35 | git fetch stable 36 | fi 37 | ## Delete broken tree tags 38 | git tag -d v2.6.11 || true 39 | git tag -d v2.6.11-tree || true 40 | popd 41 | 42 | ## 43 | # EL kernel RPMs 44 | ## 45 | update_git rocky.git/ https://git.rockylinux.org/staging/rpms/kernel.git 46 | 47 | ## 48 | # SLES kernels 49 | ## 50 | update_git sles.git/ https://github.com/SUSE/kernel.git 51 | 52 | ## 53 | # Ubuntu kernels 54 | ## 55 | 56 | update_git ubuntu-focal.git/ git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/focal 57 | 58 | update_git ubuntu-jammy.git/ git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy 59 | 60 | update_git ubuntu-noble.git/ git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble 61 | 62 | ## 63 | # GDB repos 64 | ## 65 | 66 | update_git binutils-gdb.git/ git://sourceware.org/git/binutils-gdb.git 67 | 68 | ## 69 | # Glibc repos 70 | ## 71 | 72 | update_git glibc.git/ git://sourceware.org/git/glibc.git 73 | -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Reload apache 3 | shell: 4 | cmd: apache2ctl graceful 5 | - name: Restart apache 6 | ansible.builtin.systemd: 7 | name: apache2 8 | state: restarted 9 | - name: Restart git-daemon 10 | ansible.builtin.systemd: 11 | name: git-daemon 12 | state: restarted 13 | - name: Restart grok-pull 14 | ansible.builtin.systemd: 15 | name: "grok-pull@{{name}}" 16 | state: restarted 17 | -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/tasks/mirror_instance.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create storage directory 3 | ansible.builtin.file: 4 | path: "{{mirror.core.toplevel}}" 5 | state: directory 6 | owner: gitdaemon 7 | group: gitdaemon 8 | 9 | - name: Deploy config file 10 | ansible.builtin.template: 11 | dest: "/etc/grokmirror/{{name}}.conf" 12 | src: grokmirror.conf.j2 13 | vars: 14 | name: "{{name}}" 15 | data: "{{grokmirror_instance_defaults|combine(mirror, recursive=true)}}" 16 | notify: 17 | - Restart grok-pull 18 | 19 | - name: Systemd service 20 | ansible.builtin.systemd: 21 | name: "grok-pull@{{name}}" 22 | state: started 23 | enable: true 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/templates/apache2.conf.j2: -------------------------------------------------------------------------------- 1 | 2 | ServerAdmin webmaster@localhost 3 | DocumentRoot /var/www/html 4 | ErrorLog ${APACHE_LOG_DIR}/error.log 5 | CustomLog ${APACHE_LOG_DIR}/access.log combined 6 | 7 | RedirectMatch ^/$ /cgit/ 8 | 9 | 10 | {% if cgit_tls_key and cgit_tls_cert %} 11 | 12 | ServerAdmin webmaster@localhost 13 | DocumentRoot /var/www/html 14 | ErrorLog ${APACHE_LOG_DIR}/error.log 15 | CustomLog ${APACHE_LOG_DIR}/access.log combined 16 | 17 | SSLEngine on 18 | SSLCertificateFile {{cgit_tls_cert}} 19 | SSLCertificateKeyFile {{cgit_tls_key}} 20 | 21 | RedirectMatch ^/$ /cgit/ 22 | 23 | 24 | 25 | {% endif %} -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/templates/cgitrc.j2: -------------------------------------------------------------------------------- 1 | {% for entry in cgit_configuration %} 2 | {{entry[0]}}={{entry[1]}} 3 | {% endfor %} 4 | 5 | {% for section in cgit_sections %} 6 | {% for key, value in section.items() %} 7 | {{key}}={{value}} 8 | {% endfor %} 9 | 10 | {% endfor %} -------------------------------------------------------------------------------- /automation/ansible/roles/gitmirror/templates/grokmirror.conf.j2: -------------------------------------------------------------------------------- 1 | # {{name}} 2 | # 3 | {% for section, conf in data.items() %} 4 | [{{section}}] 5 | {% for key, value in conf.items() %} 6 | {% if value is not string and value is iterable %} 7 | {{key}} = {{value[0]}} 8 | {% for i in range(1, value|length) %} 9 | {{value[i]}} 10 | {% endfor %} 11 | {% else %} 12 | {{key}} = {{value}} 13 | {% endif %} 14 | {% endfor %} 15 | 16 | {% endfor %} -------------------------------------------------------------------------------- /automation/ansible/roles/incus/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | incus_core_pattern: '/tmp/core-%p' 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/incus/tasks/install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Configure bookworm-backports 4 | when: ansible_distribution == 'Debian' and ansible_distribution_major_version == '12' 5 | block: 6 | - ansible.builtin.apt_repository: 7 | repo: 'deb https://deb.debian.org/debian bookworm-backports main contrib non-free-firmware' 8 | - ansible.builtin.copy: 9 | content: "Unattended-Upgrade::Origins-Pattern:: \"origin=Debian Backports,codename=${distro_codename}-backports,label=Debian Backports\";\n" 10 | dest: '/etc/apt/apt.conf.d/90unattended_upgrades-backports.conf' 11 | owner: 'root' 12 | group: 'root' 13 | mode: '0644' 14 | notify: 15 | - 'apt update' 16 | 17 | - name: Install packages 18 | ansible.builtin.package: 19 | name: 20 | - incus 21 | - incus-base 22 | - incus-extras 23 | -------------------------------------------------------------------------------- /automation/ansible/roles/jenkins/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | jenkins_lts: true 4 | jenkins_dependencies: 5 | - fontconfig 6 | - openjdk-17-jre 7 | jenkins_plugins: 8 | - active-directory 9 | - ansicolor 10 | - authentication-tokens 11 | - build-keeper-plugin 12 | - build-timeout 13 | - categorized-view 14 | - checks-api 15 | - command-launcher 16 | - conditional-buildstep 17 | - config-file-provider 18 | - copyartifact 19 | - coverage 20 | - credentials 21 | - dark-theme 22 | - dashboard-view 23 | - email-ext 24 | - embeddable-build-status 25 | - envinject 26 | - environment-script 27 | - excludeMatrixParent 28 | - extended-read-permission 29 | - external-monitor-job 30 | - gerrit-checks-api 31 | - git 32 | - git-server 33 | - github 34 | - github-api 35 | - groovy 36 | - htmlpublisher 37 | - image-gallery 38 | - instance-identity 39 | - ircbot 40 | - javax-mail-api 41 | - jdk-tool 42 | - jobConfigHistory 43 | - job-dsl 44 | - junit 45 | - ldap 46 | - libvirt-slave 47 | - mapdb-api 48 | - matrix-project 49 | - metrics 50 | - monitoring 51 | - parameterized-trigger 52 | - permissive-script-security 53 | - pipeline-agent-build-history 54 | - pipeline-github-lib 55 | - pipeline-graph-view 56 | - 'pipeline-groovy-lib' # Replaces workflow-cps 57 | - pipeline-model-definition 58 | - pipeline-rest-api 59 | - pipeline-utility-steps 60 | - plot 61 | - postbuildscript 62 | - PrioritySorter 63 | - proc-cleaner-plugin 64 | - prometheus 65 | - promoted-builds 66 | - publish-over-ssh 67 | - purge-build-queue-plugin 68 | - rebuild 69 | - script-security 70 | - simple-theme-plugin 71 | - solarized-theme 72 | - ssh-slaves 73 | - tap 74 | - throttle-concurrents 75 | - timestamper 76 | - versioncolumn 77 | - warnings-ng 78 | - workflow-aggregator 79 | - workflow-api 80 | - workflow-basic-steps 81 | - workflow-job 82 | - ws-cleanup 83 | jenkins_restart_on_change: false 84 | -------------------------------------------------------------------------------- /automation/ansible/roles/jenkins/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Systemd daemon-reload 3 | ansible.builtin.systemd: 4 | daemon_reload: true 5 | 6 | - name: Request Jenkins restart 7 | when: jenkins_restart_on_change|default(false) 8 | community.general.jenkins_script: 9 | script: | 10 | import jenkins.model.* 11 | Jenkins.instance.safeRestart("Changes during Ansible run") 12 | url: "{{jenkins_url|default('http://localhost:8080')}}" 13 | user: "{{jenkins_url_username|default(lookup('community.general.bitwarden', '5b6f7c60-26ec-4066-8bd0-b05000de8c24', search='id', field='username')[0])}}" 14 | password: "{{jenkins_url_password|default(lookup('community.general.bitwarden', '5b6f7c60-26ec-4066-8bd0-b05000de8c24', search='id', field='password')[0])}}" 15 | 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/jenkins/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Install Jenkins keyring 4 | ansible.builtin.get_url: 5 | url: 'https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key' 6 | dest: '/usr/share/keyrings/jenkins-keyring.asc' 7 | - name: Add Jenkins stable apt repository 8 | ansible.builtin.apt_repository: 9 | repo: "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian{{'-stable' if jenkins_lts else ''}} binary/" 10 | - name: Install Jenkins depencies 11 | ansible.builtin.package: 12 | name: "{{jenkins_dependencies}}" 13 | - name: Install Jenkins 14 | ansible.builtin.package: 15 | name: 16 | - jenkins 17 | - name: Add service override folder 18 | ansible.builtin.file: 19 | state: 'directory' 20 | dest: '/etc/systemd/system/jenkins.service.d' 21 | owner: 'root' 22 | group: 'root' 23 | mode: '0755' 24 | - name: Add service override 25 | when: jenkins_systemd_service_override|default(false) 26 | ansible.builtin.copy: 27 | dest: '/etc/systemd/system/jenkins.service.d/override.conf' 28 | content: "{{jenkins_systemd_service_override}}" 29 | owner: 'root' 30 | group: 'root' 31 | mode: '0644' 32 | notify: 33 | - Systemd daemon-reload 34 | - Request Jenkins restart 35 | - name: Jenkins service 36 | ansible.builtin.service: 37 | name: jenkins 38 | enabled: true 39 | state: started 40 | - name: Jenkins plugin 41 | community.general.jenkins_plugin: 42 | name: "{{item}}" 43 | state: "{{item.state|default('present')}}" 44 | url: "{{jenkins_url|default('http://localhost:8080')}}" 45 | url_username: "{{jenkins_url_username}}" 46 | url_password: "{{jenkins_url_password}}" 47 | loop: "{{jenkins_plugins}}" 48 | notify: 49 | - Request Jenkins restart 50 | tags: 51 | - slow 52 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lava_devices: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/files/vhost-tls.conf: -------------------------------------------------------------------------------- 1 | 2 | ServerAdmin webmaster@localhost 3 | 4 | SSLEngine On 5 | SSLCertificateKeyFile /etc/ssl/private/internal.efficios.com.key 6 | SSLCertificateFile /etc/ssl/certs/internal.efficios.com.pem 7 | 8 | Alias /tmp/ /var/lib/lava/dispatcher/tmp/ 9 | 10 | # Let apache2 handle these URIs 11 | ProxyPass /tmp ! 12 | # Send web socket requests to lava-publisher 13 | ProxyPass /ws/ ws://127.0.0.1:8001/ws/ 14 | ProxyPassReverse /ws/ ws://127.0.0.1:8001/ws/ 15 | # Send request to Gunicorn 16 | ProxyPass / http://127.0.0.1:8000/ 17 | ProxyPassReverse / http://127.0.0.1:8000/ 18 | ProxyPreserveHost On 19 | 20 | DocumentRoot /usr/share/lava-server/static/lava_server/ 21 | 22 | 23 | Options -Indexes 24 | Require all granted 25 | AllowOverride None 26 | 27 | php_admin_flag engine Off 28 | 29 | 30 | 31 | LogLevel info 32 | ErrorLog ${APACHE_LOG_DIR}/lava-server.log 33 | CustomLog ${APACHE_LOG_DIR}/lava-server.log combined 34 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Reload apache 3 | shell: 4 | cmd: apache2ctl graceful 5 | - name: Restart apache 6 | ansible.builtin.service: 7 | name: apache2 8 | state: restarted 9 | - name: Restart lava-server-gunicorn 10 | ansible.builtin.service: 11 | name: lava-server-gunicorn 12 | state: restarted 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/tasks/enable_device.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Check device type details 3 | become: yes 4 | become_user: lavaserver 5 | register: device_details 6 | ignore_errors: true 7 | shell: 8 | cmd: "lava-server manage device-types details {{item}}" 9 | - name: Enable device type 10 | become: yes 11 | become_user: lavaserver 12 | when: device_details.rc == 1 13 | shell: 14 | cmd: "lava-server manage device-types add {{item}}" 15 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/templates/allowed_hosts.yaml.j2: -------------------------------------------------------------------------------- 1 | ALLOWED_HOSTS: 2 | # This allows the local dispatcher to run without issues 3 | - localhost 4 | {% for host in lava_allowed_hosts %} 5 | - {{host}} 6 | {% endfor%} 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/templates/device.jinja2.j2: -------------------------------------------------------------------------------- 1 | {% raw %}{%{% endraw %} extends '{{item.extend}}' {% raw %}%}{% endraw %} 2 | 3 | {% for name, value in item.vars.items() %} 4 | {% raw %}{%{% endraw %} set {{name}} = '{{value}}' {% raw %}%}{% endraw %} 5 | 6 | {% endfor %} 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/templates/ldap.yaml.j2: -------------------------------------------------------------------------------- 1 | AUTH_LDAP_SERVER_URI: "ldap://smb-adc02.internal.efficios.com:389" 2 | AUTH_LDAP_START_TLS: true 3 | AUTH_LDAP_BIND_DN: "{{ lookup('community.general.bitwarden', 'Jenkins Domain Account', field='binddn', collection_id='35c5d8b1-2520-4450-a479-aef50131b930')[0] }}" 4 | AUTH_LDAP_BIND_PASSWORD: "{{ lookup('community.general.bitwarden', 'Jenkins Domain Account', field='password', collection_id='35c5d8b1-2520-4450-a479-aef50131b930')[0] }}" 5 | AUTH_LDAP_USER_SEARCH: 'LDAPSearch("CN=Users,DC=internal,DC=efficios,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")' 6 | AUTH_LDAP_USER_ATTR_MAP: 7 | first_name: "givenName" 8 | email: "mail" 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/lava-server/vars/main.yml: -------------------------------------------------------------------------------- 1 | lava_allowed_hosts: 2 | - "{{ ansible_facts['fqdn'] }}" 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}.yml" 9 | - "{{ ansible_os_family }}.yml" 10 | skip: true 11 | 12 | # Setup/install tasks. 13 | - ansible.builtin.include_tasks: setup-RedHat.yml 14 | when: ansible_os_family in ['RedHat', 'Rocky'] 15 | 16 | - ansible.builtin.include_tasks: setup-Debian.yml 17 | when: ansible_os_family == 'Debian' 18 | 19 | - ansible.builtin.include_tasks: setup-Alpine.yml 20 | when: ansible_os_family == 'Alpine' 21 | 22 | - ansible.builtin.include_tasks: setup-Suse.yml 23 | when: ansible_os_family == 'Suse' 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure librseq build dependencies are installed. 6 | apk: "name={{ librseq_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure librseq build dependencies are installed. 6 | apt: "name={{ librseq_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure librseq build dependencies are installed. 3 | dnf: 4 | name: "{{ librseq_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure librseq build dependencies are installed. 3 | zypper: "name={{ librseq_packages }} state=installed update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | librseq_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | librseq_packages: 3 | - libseccomp-dev 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | librseq_packages: 3 | - libseccomp-devel 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/librseq/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | librseq_packages: 3 | - libseccomp-devel 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ ansible_os_family }}.yml" 5 | ignore_errors: true 6 | 7 | - name: Define libs_i386_packages. 8 | set_fact: 9 | libs_i386_packages: "{{ __libs_i386_packages|default([]) | list }}" 10 | when: libs_i386_packages is not defined 11 | 12 | - ansible.builtin.include_tasks: setup-Debian.yml 13 | when: ansible_os_family == 'Debian' 14 | 15 | # Install libs from the default package manager 16 | - ansible.builtin.package: 17 | name: "{{libs_i386_packages|default([])}}" 18 | when: ansible_userspace_architecture|default('') == 'x86_64' 19 | -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Check if i386 foreign architecture is enabled in dpkg. 3 | shell: dpkg --print-foreign-architectures | grep i386 4 | register: dpkg_i386_is_enabled 5 | failed_when: dpkg_i386_is_enabled.rc > 1 6 | changed_when: false 7 | check_mode: false 8 | 9 | - name: Add i386 foreign architecture to dpkg. 10 | command: dpkg --add-architecture i386 11 | when: dpkg_i386_is_enabled.rc == 1 and ansible_userspace_architecture|default('') == "x86_64" 12 | 13 | - name: Update apt cache. 14 | apt: update_cache=yes 15 | when: dpkg_i386_is_enabled.rc == 1 and ansible_userspace_architecture|default('') == "x86_64" 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __libs_i386_packages: 3 | - liblzma5:i386 4 | - libnuma1:i386 5 | - libpopt0:i386 6 | - libxml2:i386 7 | - zlib1g:i386 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __libs_i386_packages: 3 | - xz-devel.i686 4 | - numactl-devel.i686 5 | - popt-devel.i686 6 | - libxml2-devel.i686 7 | - zlib-devel.i686 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/libs-i386/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __libs_i386_packages: 3 | - liblzma5-32bit 4 | - libnuma1-32bit 5 | - libpopt0-32bit 6 | - libxml2-2-32bit 7 | - zlib-devel-32bit 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}.yml" 9 | - "{{ ansible_os_family }}.yml" 10 | skip: true 11 | 12 | # Setup/install tasks. 13 | - ansible.builtin.include_tasks: setup-RedHat.yml 14 | when: ansible_os_family in ['RedHat', 'Rocky'] 15 | 16 | - ansible.builtin.include_tasks: setup-Debian.yml 17 | when: ansible_os_family == 'Debian' 18 | 19 | - ansible.builtin.include_tasks: setup-Alpine.yml 20 | when: ansible_os_family == 'Alpine' 21 | 22 | - ansible.builtin.include_tasks: setup-Suse.yml 23 | when: ansible_os_family == 'Suse' 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure liburcu build dependencies are installed. 6 | apk: "name={{ liburcu_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure liburcu build dependencies are installed. 6 | apt: "name={{ liburcu_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure liburcu build dependencies are installed. 3 | dnf: 4 | name: "{{ liburcu_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure liburcu build dependencies are installed. 3 | zypper: "name={{ liburcu_packages }} state=installed update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | liburcu_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | liburcu_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | liburcu_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/liburcu/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | liburcu_packages: [] 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/libvirt/files/user-data: -------------------------------------------------------------------------------- 1 | rootnode-autoinstall.yml -------------------------------------------------------------------------------- /automation/ansible/roles/libvirt/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install virtualization packages 3 | apt: 4 | name: ['qemu-kvm', 'libvirt-daemon-system', 'python3-libvirt', 'python3-lxml'] 5 | - name: Run libvirtd 6 | systemd: 7 | name: libvirtd 8 | enabled: true 9 | state: started 10 | - name: Configure extra libvirt user groups 11 | ansible.builtin.user: 12 | name: "{{item}}" 13 | groups: 14 | - libvirt 15 | - libvirt-qemu 16 | append: true 17 | with_items: "{{libvirt_extra_users|default([])}}" 18 | - name: Download ISOs 19 | loop: "{{ isos }}" 20 | get_url: 21 | dest: "{{item.dest}}" 22 | url: "{{item.url}}" 23 | checksum: "{{item.checksum}}" 24 | - name: Create VM disks 25 | loop: "{{ lookup('vars', 'vms', default=[]) }}" 26 | vars: 27 | vm: "{{ vm_defaults | combine(item.vars) }}" 28 | when: vm.disk != "" 29 | shell: 30 | cmd: "qemu-img create -f qcow2 {{vm.disk}} {{vm.disk_capacity}}" 31 | creates: "{{vm.disk}}" 32 | - name: Define VMs 33 | # Note: is vm.uuid is not set and the template is changed, those changes will not be applied 34 | # Note: many changes will require the VM to be destroyed then started again 35 | community.libvirt.virt: 36 | command: define 37 | xml: "{{ lookup('template', item.template|default('vm_template.xml.j2')) }}" 38 | autostart: true 39 | loop: "{{ lookup('vars', 'vms', default=[]) }}" 40 | vars: 41 | vm: "{{ vm_defaults | combine(item.vars) }}" 42 | -------------------------------------------------------------------------------- /automation/ansible/roles/libvirt/tasks/vm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Merge defaults 3 | set_fact: 4 | vm: "{{vm_defaults|combine(object)}}" 5 | - name: Create VM disk 6 | when: vm.disk 7 | ansible.builtin.command: 8 | argv: [ 9 | 'qemu-img', 'create', '-f', 'qcow2', 10 | "{{vm.disk}}", "{{vm.disk_capacity}}", 11 | ] 12 | creates: "{{vm.disk}}" 13 | - name: Define VM 14 | # Note: is vm.uuid is not set and the template is changed, those changes will not be applied 15 | # Note: many changes will require the VM to be destroyed then started again 16 | community.libvirt.virt: 17 | command: define 18 | xml: "{{lookup('template', vm.template|default('vm_template.xml.j2'))}}" 19 | autostart: true 20 | -------------------------------------------------------------------------------- /automation/ansible/roles/libvirt/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | vm_defaults: 3 | memory: 4194304 4 | vcpu: 2 5 | pool: default 6 | disk_capacity: '80G' 7 | net_bridge: 'br102' 8 | # Non-default keys 9 | # cdrom: /path/to/file.iso 10 | # efi: true/false 11 | # name: xyz 12 | # uuid: xxxx-yyyy 13 | cpu_features: {} 14 | 15 | isos: 16 | - url: https://releases.ubuntu.com/jammy/ubuntu-22.04.4-live-server-amd64.iso 17 | checksum: "sha256:45f873de9f8cb637345d6e66a583762730bbea30277ef7b32c9c3bd6700a32b2" 18 | dest: /var/lib/iso/ubuntu-22.04.4-live-server-amd64.iso 19 | - url: https://cdimage.debian.org/cdimage/archive/12.4.0/i386/iso-cd/debian-12.4.0-i386-netinst.iso 20 | checksum: "sha256:3b39026f0dc0c1c37e3ebe9373aba1fc0d270a9c189416726d705d7f7b273a7a" 21 | dest: /var/lib/iso/debian-12.4.0-i386-netinst.iso 22 | - url: https://cdimage.debian.org/cdimage/archive/12.4.0/amd64/iso-cd/debian-12.4.0-amd64-netinst.iso 23 | checksum: "sha256:64d727dd5785ae5fcfd3ae8ffbede5f40cca96f1580aaa2820e8b99dae989d94" 24 | dest: /var/lib/iso/debian-12.4.0-amd64-netinst.iso 25 | - url: https://cdimage.debian.org/cdimage/archive/12.4.0/armhf/iso-cd/debian-12.4.0-armhf-netinst.iso 26 | checksum: "sha256:f78b2c0a694e6f877af330e0615a76806b1d4feed8afaca42fc56e4140cf0080" 27 | dest: /var/lib/iso/debian-12.4.0-armhf-netinst.iso 28 | - url: https://cdimage.debian.org/cdimage/archive/12.4.0/arm64/iso-cd/debian-12.4.0-arm64-netinst.iso 29 | checksum: "sha256:d32d2c63350a932dc0d9d45665985b41413f9e01efc0eacbea981d435f553d3d" 30 | dest: /var/lib/iso/debian-12.4.0-arm64-netinst.iso 31 | # Patched iPXE.iso with serial console + reboot + infinite timeout for LAVA 32 | # @see https://wiki.internal.efficios.com/lava#special_ipxe_boot_image_for_vms 33 | - url: http://obj.internal.efficios.com/lava/ipxe.iso 34 | checksum: "sha256:063bcfc9f9797636a97ccbf9dc5f52f54a85b87b0d143150102f80b8533b2f20" 35 | dest: /var/lib/iso/ipxe.iso 36 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_modules_checkout_repo: true -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}.yml" 9 | - "{{ ansible_os_family }}.yml" 10 | skip: true 11 | 12 | # Setup/install tasks. 13 | - ansible.builtin.include_tasks: setup-RedHat.yml 14 | when: ansible_os_family in ['RedHat', 'Rocky'] 15 | 16 | - ansible.builtin.include_tasks: setup-Debian.yml 17 | when: ansible_os_family == 'Debian' 18 | 19 | - ansible.builtin.include_tasks: setup-Alpine.yml 20 | when: ansible_os_family == 'Alpine' 21 | 22 | - ansible.builtin.include_tasks: setup-Suse.yml 23 | when: ansible_os_family == 'Suse' 24 | 25 | - name: checkout repo 26 | when: jenkins_user|bool and lttng_modules_checkout_repo 27 | git: repo=git://git-mirror.internal.efficios.com/git/linux-all.git 28 | dest=/home/jenkins/gitcache/linux-stable.git 29 | bare=yes 30 | become: yes 31 | become_user: jenkins 32 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure lttng-modules build dependencies are installed. 6 | apk: "name={{ lttng_modules_packages }} state=present" 7 | 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure lttng-modules build dependencies are installed. 6 | apt: "name={{ lttng_modules_packages }} state=present" 7 | 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure lttng-modules build dependencies are installed. 3 | dnf: 4 | name: "{{ lttng_modules_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure lttng-modules build dependencies are installed. 3 | zypper: "name={{ lttng_modules_packages }} state=installed update_cache=yes" 4 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_modules_packages: 3 | - libelf-dev 4 | - bc 5 | - gawk 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | Ubuntu-22.yml -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_modules_packages: 3 | - bc 4 | - elfutils-devel 5 | - gawk 6 | - kernel-devel 7 | - kernel-headers 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_modules_packages: 3 | - bc 4 | - gawk 5 | - kernel-devel 6 | - kernel-default-devel 7 | - kernel-syms 8 | - libelf-devel 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-modules/vars/Ubuntu-22.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_modules_packages: 3 | - bc 4 | - cpio 5 | - dctrl-tools 6 | - device-tree-compiler 7 | - dwarves 8 | - gawk 9 | - kernel-wedge 10 | - kmod 11 | - libelf-dev 12 | - lz4 13 | - s3cmd 14 | - u-boot-tools 15 | - zstd 16 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}.yml" 9 | - "{{ ansible_os_family }}.yml" 10 | skip: true 11 | 12 | # Setup/install tasks. 13 | - ansible.builtin.include_tasks: setup-RedHat.yml 14 | when: ansible_os_family in ['RedHat', 'Rocky'] 15 | 16 | - ansible.builtin.include_tasks: setup-Debian.yml 17 | when: ansible_os_family == 'Debian' 18 | 19 | - ansible.builtin.include_tasks: setup-Alpine.yml 20 | when: ansible_os_family == 'Alpine' 21 | 22 | - ansible.builtin.include_tasks: setup-Suse.yml 23 | when: ansible_os_family == 'Suse' 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure lttng-tools build dependencies are installed. 6 | apk: "name={{ lttng_tools_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure lttng-tools build dependencies are installed. 6 | apt: "name={{ lttng_tools_packages }} state=present" 7 | 8 | - name: Ensure lttng-tools build dependencies are installed (no recommends). 9 | apt: "name={{ lttng_tools_packages_no_recommends }} state=present install_recommends=no" 10 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure lttng-tools build dependencies are installed. 3 | dnf: 4 | name: "{{ lttng_tools_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure lttng-tools build dependencies are installed. 3 | zypper: "name={{ lttng_tools_packages }} state=installed update_cache=yes" 4 | 5 | - name: Ensure lttng-tools build dependencies are installed (no recommends). 6 | zypper: "name={{ lttng_tools_packages_no_recommends }} state=installed disable_recommends=yes" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_tools_packages: 3 | - asciidoc 4 | - bash-completion 5 | - libxml2-dev 6 | - popt-dev 7 | - xmlto 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_tools_packages: 3 | - bash-completion 4 | - libmsgpack-dev 5 | - libpopt-dev 6 | - libxml2-dev 7 | - shellcheck 8 | - systemtap-sdt-dev 9 | 10 | lttng_tools_packages_no_recommends: 11 | - asciidoc 12 | - xmlto 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_tools_packages: 3 | - asciidoc 4 | - bash-completion 5 | - libxml2-devel 6 | - popt-devel 7 | - systemtap-sdt-devel 8 | - xmlto 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-tools/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_tools_packages: 3 | - bash-completion 4 | - libxml2-devel 5 | - popt-devel 6 | - systemtap-sdt-devel 7 | 8 | lttng_tools_packages_no_recommends: 9 | - asciidoc 10 | - xmlto 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Include variables and define needed variables. 3 | - name: Include OS-specific variables. 4 | ansible.builtin.include_vars: "{{ item }}" 5 | with_first_found: 6 | - files: 7 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 8 | - "{{ ansible_distribution }}.yml" 9 | - "{{ ansible_os_family }}.yml" 10 | skip: true 11 | 12 | # Setup/install tasks. 13 | - ansible.builtin.include_tasks: setup-RedHat.yml 14 | when: ansible_os_family in ['RedHat', 'Rocky'] 15 | 16 | - ansible.builtin.include_tasks: setup-Debian.yml 17 | when: ansible_os_family == 'Debian' 18 | 19 | - ansible.builtin.include_tasks: setup-Alpine.yml 20 | when: ansible_os_family == 'Alpine' 21 | 22 | - ansible.builtin.include_tasks: setup-Suse.yml 23 | when: ansible_os_family == 'Suse' 24 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/tasks/setup-Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apk cache. 3 | apk: update_cache=yes 4 | 5 | - name: Ensure lttng-ust build dependencies are installed. 6 | apk: "name={{ lttng_ust_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Ensure lttng-ust build dependencies are installed. 6 | apt: "name={{ lttng_ust_packages }} state=present" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure lttng-ust build dependencies are installed. 3 | dnf: 4 | name: "{{ lttng_ust_packages }}" 5 | state: installed 6 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/Alpine.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_ust_packages: 3 | # - liblog4j1.2-java 4 | - numactl-dev 5 | - python3 6 | - texinfo 7 | - util-linux-dev 8 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_ust_packages: 3 | - liblog4j1.2-java 4 | - liblog4j2-java 5 | - libnuma-dev 6 | - python3 7 | - texinfo 8 | - uuid-dev 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_ust_packages: 3 | # - liblog4j1.2-java 4 | - libuuid-devel 5 | - numactl-devel 6 | # - texinfo 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | RedHat.yml -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/SLES-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_ust_log4j2_version: "2.17.1" 3 | lttng_ust_manual_log4j2_installation: true 4 | 5 | lttng_ust_packages: 6 | - libnuma-devel 7 | - libuuid-devel 8 | - log4j 9 | # This package doesn't exist on sles12 10 | # - log4j12 11 | - python3 12 | - texinfo 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/lttng-ust/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lttng_ust_packages: 3 | - libnuma-devel 4 | - libuuid-devel 5 | - log4j 6 | - log4j12 7 | - python3 8 | - texinfo 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/lxd/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | lxd_container_defaults: 3 | # The socket URL is different for Incus 4 | url: "unix:/var/lib/incus/unix.socket" 5 | ephemeral: false 6 | profiles: 7 | - ci-node 8 | source: 9 | type: image 10 | mode: pull 11 | # Until the cluster is migrated to Incus, this source will not work 12 | # server: https://images.linuxcontainers.org 13 | alias: debian/bookworm/cloud/amd64/ci-node/lxd 14 | wait_for_container: true 15 | 16 | lxd_core_pattern: '/tmp/core.%p' 17 | -------------------------------------------------------------------------------- /automation/ansible/roles/lxd/tasks/container.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Merge defaults 3 | set_fact: 4 | lxd_container_config: "{{lxd_container_defaults|combine(object)}}" 5 | - name: "Manage container {{lxd_container_config.name|default('Unknown')}}" 6 | community.general.lxd_container: "{{lxd_container_config}}" 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/netplan/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | netplan_manage: false 3 | netplan_package: 'netplan.io' 4 | 5 | # 0 or more non default config files 6 | # E.g. 7 | # netplan_configs: 8 | # - name: example 9 | # # filename: example # don't add '.yaml', defautls to name 10 | # # state: present 11 | # # dependencies: [] # list of packages to install to support this configuration 12 | # content: 13 | # network: 14 | # version: 2 15 | # ethernets: 16 | # eth1: 17 | # addresses: 18 | # ... 19 | netplan_configs: [] 20 | netplan_content: '' 21 | netplan_apply: true 22 | -------------------------------------------------------------------------------- /automation/ansible/roles/netplan/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Apply netplan 4 | when: netplan_apply 5 | ansible.builtin.command: 6 | argv: ['netplan', 'apply'] 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/netplan/tasks/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - when: item.dependencies|default([]) 3 | ansible.builtin.package: 4 | name: "{{item.dependencies}}" 5 | install_recommends: false 6 | 7 | - when: state == 'present' 8 | ansible.builtin.template: 9 | src: "netplan.yaml.j2" 10 | dest: "{{filename}}" 11 | mode: '0600' 12 | owner: 'root' 13 | group: 'root' 14 | notify: 15 | - 'Apply netplan' 16 | 17 | - when: state != 'present' 18 | ansible.builtin.file: 19 | path: "{{filename}}" 20 | state: "{{state}}" 21 | notify: 22 | - 'Apply netplan' 23 | -------------------------------------------------------------------------------- /automation/ansible/roles/netplan/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Include OS-specific variables. 3 | tags: 4 | - always 5 | ansible.builtin.include_vars: "{{ item }}" 6 | with_first_found: 7 | - files: 8 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}.yml" 9 | - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" 10 | - "{{ ansible_distribution }}.yml" 11 | - "{{ ansible_os_family }}.yml" 12 | skip: true 13 | 14 | - when: netplan_manage 15 | block: 16 | - name: Install netplan 17 | ansible.builtin.package: 18 | name: "{{netplan_package}}" 19 | - name: Update netplan default.yaml 20 | when: netplan_content 21 | ansible.builtin.copy: 22 | content: "{{netplan_content}}" 23 | dest: /etc/netplan/default.yaml 24 | owner: root 25 | group: root 26 | mode: '0600' 27 | notify: 28 | - 'Apply netplan' 29 | - name: Disable ifupdown on Debian 30 | when: ansible_distribution == "Debian" 31 | block: 32 | - name: Disable ifupdown networking 33 | ansible.builtin.systemd: 34 | name: networking.service 35 | masked: true 36 | - name: Enable systemd-networkd 37 | ansible.builtin.systemd: 38 | name: systemd-networkd 39 | enabled: true 40 | state: started 41 | - name: Manage non-default netplan configurations 42 | ansible.builtin.include_tasks: 43 | file: config.yml 44 | vars: 45 | "filename": "/etc/netplan/{{item.filename|default(item.name)}}.yaml" 46 | "netplan_content": "{{item.content}}" 47 | "state": "{{item.state|default('present')}}" 48 | loop: "{{netplan_configs}}" 49 | -------------------------------------------------------------------------------- /automation/ansible/roles/netplan/templates/netplan.yaml.j2: -------------------------------------------------------------------------------- 1 | {{netplan_content | to_nice_yaml }} 2 | -------------------------------------------------------------------------------- /automation/ansible/roles/rasdaemon/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | rasdaemon_prometheus_exporter: true 3 | rasdaemon_prometheus_exporter_bind_address: '0.0.0.0' 4 | rasdaemon_prometheus_exporter_port: 9797 5 | rasdaemon_prometheus_exporter_prerequisites: 6 | - python3 7 | -------------------------------------------------------------------------------- /automation/ansible/roles/rasdaemon/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Systemd daemon-reload 3 | ansible.builtin.systemd: 4 | daemon_reload: true 5 | - name: Restart rasdaemon-exporter 6 | ansible.builtin.service: 7 | name: rasdaemon-exporter 8 | state: restarted 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/rasdaemon/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install rasdaemon 3 | ansible.builtin.package: 4 | name: rasdaemon 5 | - name: Ensure rasdaemon is running 6 | ansible.builtin.service: 7 | name: rasdaemon 8 | state: started 9 | enabled: true 10 | - ansible.builtin.include_tasks: prometheus.yml 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/rasdaemon/tasks/prometheus.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install rasdaemon prometheus exporter requirements 3 | ansible.builtin.package: 4 | name: "{{rasdaemon_prometheus_exporter_prerequisites}}" 5 | - name: Install rasdaemon prometheus exporter 6 | ansible.builtin.copy: 7 | dest: '/usr/local/bin/rasdaemon-exporter' 8 | src: 'rasdaemon-exporter.py' 9 | owner: 'root' 10 | group: 'root' 11 | mode: '0755' 12 | notify: 13 | - Restart rasdaemon-exporter 14 | - name: Deploy rasdaemon prometheus exporter service 15 | ansible.builtin.template: 16 | src: 'rasdaemon-exporter.service.j2' 17 | dest: '/etc/systemd/system/rasdaemon-exporter.service' 18 | notify: 19 | - Systemd daemon-reload 20 | - Restart rasdaemon-exporter 21 | - name: Ensure rasdaemon prometheus exporter service is running 22 | ansible.builtin.service: 23 | name: rasdaemon-exporter 24 | enabled: "{{rasdaemon_prometheus_exporter}}" 25 | state: "{{rasdaemon_prometheus_exporter|ternary('started', 'stopped')}}" 26 | -------------------------------------------------------------------------------- /automation/ansible/roles/rasdaemon/templates/rasdaemon-exporter.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Rasdaemon Prometheus Exporter 3 | After=network.target 4 | 5 | [Service] 6 | Type=simple 7 | ExecStart=/usr/local/bin/rasdaemon-exporter -l "{{rasdaemon_prometheus_exporter_bind_address}}" -p "{{rasdaemon_prometheus_exporter_port}}" 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /automation/ansible/roles/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | collections: 3 | - name: community.general 4 | version: '>=5.4.0' 5 | type: galaxy 6 | - name: community.windows 7 | version: '>=2.2.0' 8 | type: galaxy 9 | -------------------------------------------------------------------------------- /automation/ansible/roles/suse/tasks/product.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: "Connect product '{{product}}' using full version" 4 | ansible.builtin.command: 5 | argv: ['SUSEConnect', '-p', "{{product}}/{{ansible_distribution_version}}/{{ansible_architecture}}"] 6 | register: connect 7 | ignore_errors: true 8 | # Some products don't use the full version, but only the major version 9 | - name: "Connect product '{{product}}' using major version" 10 | when: connect.rc != 0 11 | ansible.builtin.command: 12 | argv: ['SUSEConnect', '-p', "{{product}}/{{ansible_distribution_major_version}}/{{ansible_architecture}}"] 13 | -------------------------------------------------------------------------------- /automation/ansible/roles/zfs/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | zfs_arc_max: 34359738368 3 | -------------------------------------------------------------------------------- /automation/ansible/roles/zfs/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install ZFS on Debian 3 | when: ansible_distribution == 'Debian' 4 | apt: 5 | name: zfs-dkms 6 | - name: Set ZFS module options 7 | community.general.modprobe: 8 | name: zfs 9 | state: present 10 | params: "zfs_arc_max={{zfs_arc_max}}" 11 | - name: Set default compression 12 | community.general.zfs: 13 | name: "tank" 14 | state: present 15 | extra_zfs_properties: 16 | compression: zstd 17 | atime: 'off' 18 | xattr: 'sa' 19 | - name: Create datasets 20 | community.general.zfs: 21 | name: "tank/{{item}}" 22 | state: present 23 | extra_zfs_properties: 24 | mountpoint: 'none' 25 | with_items: 26 | - libvirt 27 | - lxd 28 | - name: Create ISO dataset 29 | community.general.zfs: 30 | name: 'tank/iso' 31 | state: present 32 | extra_zfs_properties: 33 | mountpoint: '/var/lib/iso' 34 | - name: Create libvirt/images dataset 35 | community.general.zfs: 36 | name: 'tank/libvirt/images' 37 | state: present 38 | extra_zfs_properties: 39 | mountpoint: '/var/lib/libvirt/images' 40 | recordsize: '64k' 41 | -------------------------------------------------------------------------------- /automation/ansible/site.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - import_playbook: hosts.yml 3 | - import_playbook: infra_lava.yml 4 | - import_playbook: node_armhf.yml 5 | - import_playbook: node_arm64.yml 6 | - import_playbook: node_ppc64el.yml 7 | - import_playbook: node_riscv64.yml 8 | - import_playbook: node_s390x.yml 9 | - import_playbook: node_i386.yml 10 | - import_playbook: node_amd64.yml 11 | - import_playbook: node_standalone.yml 12 | - import_playbook: node_sles.yml 13 | - import_playbook: node_el.yml 14 | - hosts: node_yocto 15 | roles: 16 | - common 17 | - common-node 18 | - netplan 19 | - hosts: gitmirror 20 | roles: 21 | - common 22 | - gitmirror 23 | - hosts: jenkins 24 | roles: 25 | - common 26 | - jenkins 27 | - hosts: ci_node:developer 28 | roles: 29 | - common 30 | - common-node 31 | - cross-compilers 32 | - compilers 33 | - babeltrace 34 | - binutils-gdb 35 | - librseq 36 | - liburcu 37 | - lttng-ust 38 | - lttng-tools 39 | - lttng-modules 40 | - libs-i386 41 | - hosts: developer 42 | roles: 43 | - developer 44 | - docker 45 | -------------------------------------------------------------------------------- /automation/ansible/templates/cloud_init_netconf.j2: -------------------------------------------------------------------------------- 1 | version: 2 2 | ethernets: 3 | eth0: 4 | dhcp4: false 5 | addresses: 6 | - {{address}}/16 7 | routes: 8 | - to: 0.0.0.0/0 9 | via: 172.18.0.1 10 | nameservers: 11 | search: 12 | - 'internal.efficios.com' 13 | addresses: 14 | - '172.18.0.13' 15 | -------------------------------------------------------------------------------- /automation/images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lttng/lttng-ci/cda4c2262f9cb0e42f689d2b652f3ac80aecf226/automation/images/.gitkeep -------------------------------------------------------------------------------- /automation/images/yocto33-amd64.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | image: 4 | distribution: 'yocto' 5 | release: '3.3' 6 | architecture: 'x86_64' 7 | 8 | source: 9 | downloader: rootfs-http 10 | url: https://obj.internal.efficios.com/jenkins/rootfs_amd64_yocto33.tar.bz2 11 | 12 | targets: 13 | lxc: 14 | create_message: | 15 | You just created an {{image.description }} container. 16 | 17 | files: 18 | - name: hostname 19 | path: /etc/hostname 20 | generator: hostname 21 | 22 | - name: hosts 23 | path: /etc/hosts 24 | generator: hosts 25 | 26 | - path: /etc/machine-id 27 | generator: dump 28 | 29 | - path: /var/lib/dbus/machine-id 30 | generator: remove 31 | 32 | - path: /etc/systemd/network/eth0.network 33 | generator: dump 34 | content: |- 35 | [Match] 36 | Name=eth0 37 | 38 | [Network] 39 | DHCP=true 40 | 41 | [DHCPv4] 42 | UseDomains=true 43 | 44 | [DHCP] 45 | ClientIdentifier=mac 46 | types: 47 | - container 48 | variants: 49 | - default 50 | 51 | packages: 52 | manager: opkg 53 | update: false 54 | cleanup: false 55 | sets: [] 56 | repositories: [] 57 | 58 | actions: [] 59 | -------------------------------------------------------------------------------- /etc/jenkins_jobs.ini-sample: -------------------------------------------------------------------------------- 1 | [job_builder] 2 | ignore_cache=False 3 | keep_descriptions=True 4 | filter_modules=jjb_filters 5 | 6 | [jenkins] 7 | user=jenkins 8 | password=1234567890abcdef1234567890abcdef 9 | url=https://ci.lttng.org 10 | -------------------------------------------------------------------------------- /jjb_filters/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | """ 4 | import jinja2 5 | 6 | 7 | @jinja2.pass_environment 8 | def do_groovy(env, data, skip_list_wrap=False): 9 | list_format = "[{}]" 10 | if skip_list_wrap: 11 | list_format = "{}" 12 | if isinstance(data, str): 13 | return '"{}"'.format(data.replace('"', '"')) 14 | elif isinstance(data, list) or isinstance(data, tuple): 15 | _data = [do_groovy(env, d) for d in data] 16 | return list_format.format(", ".join(_data)) 17 | elif isinstance(data, dict): 18 | _data = [ 19 | "{}: {}".format(key, do_groovy(env, value)) for key, value in data.items() 20 | ] 21 | return "[{}]".format(", ".join(_data)) 22 | elif isinstance(data, bool): 23 | return "true" if data else "false" 24 | else: 25 | raise Exception("Unknown data type: '{}'".format(type(data))) 26 | 27 | 28 | FILTERS = { 29 | "to_groovy": do_groovy, 30 | } 31 | -------------------------------------------------------------------------------- /jobs/dev.yaml: -------------------------------------------------------------------------------- 1 | - view-template: 2 | name: 'Developers' 3 | view-type: categorized 4 | regex: '^dev_.*' 5 | regex_to_ignore_on_color_computing: '.*' 6 | categorization_criteria: 7 | - group_regex: 'dev_test_.*' 8 | naming_rule: 'Test' 9 | - group_regex: '^dev_upstream_.*' 10 | naming_rule: 'Upstream' 11 | # By project 12 | - group_regex: 'dev_review_babeltrace_.*' 13 | naming_rule: 'Babeltrace' 14 | - group_regex: 'dev_review_barectf_.*' 15 | naming_rule: 'BareCTF' 16 | - group_regex: 'dev_review_binutils-gdb_.*' 17 | naming_rule: 'Binutils' 18 | - group_regex: 'dev_review_glibc.*' 19 | naming_rule: 'glibc' 20 | - group_regex: 'dev_review_librseq_.*' 21 | naming_rule: 'librseq' 22 | - group_regex: 'dev_review_liburcu_.*' 23 | naming_rule: 'liburcu' 24 | - group_regex: 'dev_review_lttng-modules_.*' 25 | naming_rule: 'LTTng-Modules' 26 | - group_regex: 'dev_review_lttng-(docs|tools)_.*' 27 | naming_rule: 'LTTng-Tools' 28 | - group_regex: 'dev_review_lttng-ust[-_].*' 29 | naming_rule: 'LTTng-UST' 30 | - group_regex: 'dev_review_normand_.*' 31 | naming_rule: 'Normand' 32 | # User-specific 33 | - group_regex: 'dev_compudj_.*' 34 | naming_rule: 'U:compudj' 35 | - group_regex: 'dev_jgalar_.*' 36 | naming_rule: 'U:jgalar' 37 | - group_regex: 'dev_mjeanson_.*' 38 | naming_rule: 'U:mjeanson' 39 | - group_regex: 'dev_odion_.*' 40 | naming_rule: 'U:odion' 41 | - group_regex: '.*-www$' 42 | naming_rule: 'websites' 43 | 44 | - project: 45 | name: developer-views 46 | views: 47 | - Developers 48 | -------------------------------------------------------------------------------- /jobs/integration.yaml: -------------------------------------------------------------------------------- 1 | ## Jobs 2 | - job: 3 | name: 'integration_ust-2.12-lower-urcu_testsuite' 4 | description: | 5 |

Job is managed by Jenkins Job Builder.

6 | project-type: pipeline 7 | sandbox: true 8 | dsl: 9 | !include-raw-verbatim: pipelines/integration/ust-2.12-lower-urcu_testsuite.groovy 10 | 11 | - job-template: 12 | name: 'integration_lttng-tools-{version}-32-64_testsuite' 13 | description: | 14 | Integration pipeline for multi-bitness scenario (32/64). 15 | This essentially tests frontier scenario where the bitness between component changes. 16 | 17 |

Job is managed by Jenkins Job Builder.

18 | project-type: pipeline 19 | sandbox: true 20 | dsl: 21 | !include-jinja2: pipelines/integration/lttng-tools-_version_-32-64_testsuite.groovy.j2 22 | 23 | 24 | ## Views 25 | - view-template: 26 | name: 'Integration' 27 | view-type: list 28 | regex: 'integration[-_].*' 29 | 30 | 31 | ## Projects 32 | - project: 33 | name: integration 34 | views: 35 | - 'Integration' 36 | jobs: 37 | - 'integration_ust-2.12-lower-urcu_testsuite' 38 | 39 | - project: 40 | name: integration-32-64 41 | jobs: 42 | - 'integration_lttng-tools-{version}-32-64_testsuite': 43 | version: master 44 | babelversion: stable-2.0 45 | urcu_version: master 46 | - 'integration_lttng-tools-{version}-32-64_testsuite': 47 | version: stable-2.13 48 | babelversion: stable-2.0 49 | urcu_version: stable-0.13 50 | - 'integration_lttng-tools-{version}-32-64_testsuite': 51 | version: stable-2.12 52 | babelversion: stable-2.0 53 | urcu_version: stable-0.13 54 | -------------------------------------------------------------------------------- /jobs/linux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - defaults: 4 | name: linux-kernel 5 | concurrent: true 6 | description: | 7 |

Job is managed by Jenkins Job Builder

8 | # As the source code doesn't contain a Jenkinsfile, multibranch pipelines don't work 9 | project-type: pipeline 10 | sandbox: true 11 | dsl: 12 | !include-jinja2: pipelines/linux/pipeline.groovy.j2 13 | triggers: 14 | - github 15 | # Vars used by pipeline and/or projects 16 | cc: 'gcc' 17 | cxx: 'g++' 18 | cross_host_arch: '' 19 | github_user: '' 20 | github_project: 'linux' 21 | github_branch_pattern: 'origin/ci/*' 22 | stable_mirror: 'git://git-mirror.internal.efficios.com/git/linux-all.git' 23 | email_to: '' 24 | default_label: 'deb12-amd64' 25 | job_prefix: '' 26 | job_suffix: '' 27 | skip_arches: '' 28 | skip_configs: '' 29 | skip_checkpatch: false 30 | 31 | ## Anchors 32 | 33 | ## Job templates 34 | 35 | - job-template: 36 | name: '{job_prefix}linux_kernel{job_suffix}' 37 | defaults: linux-kernel 38 | 39 | ## Views 40 | 41 | - view-template: 42 | name: 'Linux Kernel' 43 | view-type: list 44 | regex: '.*[-_]?linux_kernel[-_].*' 45 | 46 | ## Projects 47 | 48 | - project: 49 | name: 'compudj' 50 | job_prefix: 'dev_compudj_' 51 | email_to: 'mathieu.desnoyers@efficios.com' 52 | github_user: 'compudj' 53 | jobs: 54 | - '{job_prefix}linux_kernel{job_suffix}': 55 | github_project: 'linux-dev' 56 | job_suffix: '_crossbuild_fast' 57 | skip_configs: 'allnoconfig,allyesconfig,allmodconfig' 58 | skip_checkpatch: true 59 | cross_host_arch: 'amd64' 60 | - '{job_prefix}linux_kernel{job_suffix}': 61 | github_project: 'linux-dev' 62 | job_suffix: '_crossbuild' 63 | cross_host_arch: 'amd64' 64 | skip_configs: 'defconfig' 65 | 66 | - project: 67 | name: linux-views 68 | views: 69 | - 'Linux Kernel' 70 | -------------------------------------------------------------------------------- /lava/benchmark/babeltrace/benchmark.yml: -------------------------------------------------------------------------------- 1 | metadata: 2 | format: Lava-Test Test Definition 1.0 3 | name: babeltrace 2.0 benchmark 4 | description: "Run benchmark for babeltrace" 5 | params: 6 | TRACE_default_LOCATION: "https://obj.internal.efficios.com/lava/traces/benchmark/babeltrace/babeltrace_benchmark_trace.tar.gz" 7 | TRACE_tools_2_10_LOCATION: "https://obj.internal.efficios.com/lava/traces/benchmark/babeltrace/babeltrace_benchmark_trace-tools-2.10.tar.gz" 8 | TRACE_tools_2_14_LOCATION: "https://obj.internal.efficios.com/lava/traces/benchmark/babeltrace/babeltrace_benchmark_trace-tools-2.14.tar.gz" 9 | COMMITS: "invalid" 10 | GIT_URL: "https://github.com/efficios/babeltrace.git" 11 | SCRIPT_REPO: "https://github.com/lttng/lttng-ci.git" 12 | SCRIPT_BRANCH: "master" 13 | run: 14 | steps: 15 | - cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 16 | - echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 17 | - apt-get install -q -y time curl python3 wget 18 | - git clone -q ${SCRIPT_REPO} -b ${SCRIPT_BRANCH} ci 19 | - export TMPDIR="/tmp" 20 | - mkdir -p /tmp/coredump 21 | - echo "/tmp/coredump/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern 22 | - ulimit -c unlimited 23 | - mkdir /tmp/ram_disk 24 | - mount -t tmpfs -o size=10024m new_ram_disk /tmp/ram_disk 25 | - git clone -q ${GIT_URL} babeltrace 26 | - export TRACE_default_LOCATION="${TRACE_default_LOCATION}" TRACE_tools_2_10_LOCATION="${TRACE_tools_2_10_LOCATION}" TRACE_tools_2_14_LOCATION="${TRACE_tools_2_14_LOCATION}" COMMITS="${COMMITS}" 27 | - bash -x ./ci/lava/benchmark/babeltrace/batch.sh $(realpath babeltrace) /tmp/ram_disk 28 | -------------------------------------------------------------------------------- /lava/deploy_devices_dict.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -exu 2 | # 3 | # Copyright (C) 2018 - Jonathan Rajotte-Julien 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | # Simple deployment of lava device dictionaries 19 | 20 | ssh -t -l lavaserver lava-master-03.internal.efficios.com 'sudo ln -s /var/lib/lava-server/home/lttng-ci/lava/devices/* /etc/lava-server/dispatcher-config/devices/' 21 | -------------------------------------------------------------------------------- /lava/ipxe/0001-Enable-console-and-reboot-command.patch: -------------------------------------------------------------------------------- 1 | From 77db3e129cebc2d715a8262bd16914404c446370 Mon Sep 17 00:00:00 2001 2 | From: Jonathan Rajotte 3 | Date: Thu, 15 Nov 2018 17:17:15 -0500 4 | Subject: [PATCH] Enable console and reboot command 5 | 6 | Signed-off-by: Jonathan Rajotte 7 | --- 8 | src/config/console.h | 2 +- 9 | src/config/general.h | 2 +- 10 | 2 files changed, 2 insertions(+), 2 deletions(-) 11 | 12 | diff --git a/src/config/console.h b/src/config/console.h 13 | index 9f770d09..62a8c792 100644 14 | --- a/src/config/console.h 15 | +++ b/src/config/console.h 16 | @@ -34,7 +34,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); 17 | * 18 | */ 19 | 20 | -//#define CONSOLE_SERIAL /* Serial port console */ 21 | +#define CONSOLE_SERIAL /* Serial port console */ 22 | //#define CONSOLE_FRAMEBUFFER /* Graphical framebuffer console */ 23 | //#define CONSOLE_SYSLOG /* Syslog console */ 24 | //#define CONSOLE_SYSLOGS /* Encrypted syslog console */ 25 | diff --git a/src/config/general.h b/src/config/general.h 26 | index 3c14a2cd..cf09d7fe 100644 27 | --- a/src/config/general.h 28 | +++ b/src/config/general.h 29 | @@ -142,7 +142,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); 30 | //#define LOTEST_CMD /* Loopback testing commands */ 31 | //#define VLAN_CMD /* VLAN commands */ 32 | //#define PXE_CMD /* PXE commands */ 33 | -//#define REBOOT_CMD /* Reboot command */ 34 | +#define REBOOT_CMD /* Reboot command */ 35 | //#define POWEROFF_CMD /* Power off command */ 36 | //#define IMAGE_TRUST_CMD /* Image trust management commands */ 37 | //#define PCI_CMD /* PCI commands */ 38 | -- 39 | 2.17.1 40 | 41 | -------------------------------------------------------------------------------- /lava/ipxe/infinite_prompt.ipxe: -------------------------------------------------------------------------------- 1 | #!ipxe 2 | :retry_prompt 3 | prompt --key 0x02 --timeout 1000 Press Ctrl-B for the iPXE command line... && shell || goto retry_prompt 4 | -------------------------------------------------------------------------------- /lava/kvm/generate_kvm_virsh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -exu 2 | # 3 | # Copyright (C) 2018 - Jonathan Rajotte-Julien 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | export LIBVIRT_DEFAULT_URI="qemu:///system" 19 | 20 | tmp=$(mktemp) 21 | name=$1 22 | virsh vol-create-as --pool default --name "${name}.raw" --capacity 2G --format raw 23 | data_disk_path="$(virsh vol-path ${name}.raw --pool default)" 24 | sudo mkfs.ext4 "$data_disk_path" 25 | virt-install --print-xml \ 26 | --name "$name" \ 27 | --memory 2096\ 28 | --disk /var/lib/libvirt/images/ipxe.iso,device=cdrom \ 29 | --boot cdrom \ 30 | --disk "$data_disk_path,format=raw" \ 31 | --vcpus 2 \ 32 | --cpu host \ 33 | --serial pty \ 34 | --graphics none \ 35 | --autostart \ 36 | --network bridge=br0 \ 37 | --check path_in_use=off > "$tmp" 38 | virsh define --validate "$tmp" 39 | virsh start "$name" 40 | rm -rf "$tmp" 41 | 42 | -------------------------------------------------------------------------------- /lava/rootfs/vmdeboostrap/external-packages.sha1sum: -------------------------------------------------------------------------------- 1 | 5bfe242e609717d86e734e42e8a357947fbd70b3 linaro-overlay_1112.2_all.deb 2 | 00970ed3c6f0722b30163f0ffa87d7216199cdda linaro-overlay-minimal_1112.2_all.deb 3 | -------------------------------------------------------------------------------- /lava/system-tests/authorized_keys: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgXxRLBKUwG8F/X9/RI3cNWOETFhXSxY2WIcnMvHCxphAOCOuX3XjZ5H5pOSI5uCrGhDGNX32I9ie7A3sgwUbw/Em8hSBF9DG4gUACl/4H1cKgG4qE9vd0j4ocHhJU15C03RDG87P0ecIeDuWVwVjLtylJConcZhRTnzuOVO4qkdlHvDY5M7ELTCprZHI+OhlWBquL829bRnZE9evdyGOYv9XHeVVjzHlpbLd0WkviNgumcYSuM16R7WvjGkjz80wp97UqWsaE/JIb87L10i5ByFGRqTmB+6gBhIuO1c37KhBULeOQVGumxQY68x9tRgLMlQmhcWJQ+dtPl4UELQHV jeremie.galarneau@efficios.com 2 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnCyGcahJXys7md2yb3jP8L6hLN3D72aZCzsqUrJDsC kstewart@laptop-kstewart 3 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVFn/ymsG8LqPvgVzyMaSVzYCVn/440ME8O6AzbZG39 mjeanson@laptop-mjeanson 4 | -------------------------------------------------------------------------------- /lava/system-tests/kernel-tests.yml: -------------------------------------------------------------------------------- 1 | metadata: 2 | format: Lava-Test Test Definition 1.0 3 | name: lttng-kernel-test 4 | description: "Run kernel test suite" 5 | params: 6 | JENKINS_BUILD_ID: "invalid_jenkins_build_id" 7 | LTTNG_VERSION_STRING: "invalid_version_string" 8 | run: 9 | steps: 10 | - git clone "${CI_REPO}" --branch="${CI_BRANCH}" ci 11 | - export TMPDIR="/tmp" 12 | - mkdir -p /tmp/coredump 13 | - echo "/tmp/coredump/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern 14 | - ulimit -c unlimited 15 | - source /root/python-venv/bin/activate 16 | - source /root/lttngvenv/activate 17 | - pushd /root/lttngvenv/src/lttng-tools 18 | - lava-test-case build-test-suite --shell "make" 19 | - lava-test-case run-tests --shell "$(dirs -l +1)/ci/scripts/system-tests/run-test-suites.sh ${LTTNG_VERSION_STRING}" 20 | - popd 21 | -------------------------------------------------------------------------------- /lava/system-tests/perf-tests.yml: -------------------------------------------------------------------------------- 1 | metadata: 2 | format: Lava-Test Test Definition 1.0 3 | name: lttng-perf-tests 4 | description: "Run perf regression test suite" 5 | params: 6 | JENKINS_BUILD_ID: "invalid_jenkins_build_id" 7 | LTTNG_VERSION_STRING: "invalid_version_string" 8 | run: 9 | steps: 10 | - git clone "${CI_REPO}" --branch="${CI_BRANCH}" ci 11 | - export TMPDIR="/tmp" 12 | - mkdir -p /tmp/coredump 13 | - echo "/tmp/coredump/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern 14 | - ulimit -c unlimited 15 | - source /root/python-venv/bin/activate 16 | - source /root/lttngvenv/activate 17 | - pushd /root/lttngvenv/src/lttng-tools 18 | - lava-test-case build-test-suite --shell "make" 19 | - cd tests 20 | #Need to check if the file is present for branches where the testcase was not backported 21 | - lava-test-case run-tests --shell "if [ -e perf_regression ]; then prove --nocolor --verbose --merge --exec '' - < perf_regression; else echo 'perf_regression not found'; fi" 22 | - popd 23 | -------------------------------------------------------------------------------- /lava/system-tests/setup.yml: -------------------------------------------------------------------------------- 1 | metadata: 2 | format: Lava-Test Test Definition 1.0 3 | name: x86-env-setup 4 | description: "Basic environment setup for x86 board" 5 | os: 6 | - debian 7 | - ubuntu 8 | devices: 9 | - x86 10 | run: 11 | steps: 12 | - chmod 755 / 13 | - echo nameserver 172.18.0.13 > /etc/resolv.conf 14 | - ip a 15 | - groupadd tracing 16 | - depmod -a 17 | # The locale generation is required for the python venv 18 | # to be correctgly created. 19 | - locale-gen en_US.UTF-8 20 | - python3 -m venv /root/python-venv 21 | - source /root/python-venv/bin/activate 22 | - pip3 install vlttng 23 | - hash -r 24 | - git clone "${CI_REPO}" --branch="${CI_BRANCH}" ci 25 | - mkdir -p /root/.ssh 26 | - chmod 700 /root/.ssh 27 | - cp lava/system-tests/authorized_keys /root/.ssh/authorized_keys 28 | - chmod 600 /root/.ssh/authorized_keys 29 | - sync 30 | -------------------------------------------------------------------------------- /lava/system-tests/upload-artifacts.yml: -------------------------------------------------------------------------------- 1 | metadata: 2 | format: Lava-Test Test Definition 1.0 3 | name: lttng-upload-artifacts 4 | description: "Upload build artifacts" 5 | params: 6 | JENKINS_BUILD_ID: "invalid_jenkins_build_id" 7 | run: 8 | steps: 9 | - git clone "${CI_REPO}" --branch="${CI_BRANCH}" ci 10 | - tar czf coredump.tar.gz /tmp/coredump 11 | - ./ci/lava/upload_artifact.sh coredump.tar.gz "results/${JENKINS_BUILD_ID}/${TESTRUN_ID}-coredump.tar.gz" 12 | -------------------------------------------------------------------------------- /lava/upload_artifact.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eux 2 | # Copyright (C) 2018 - Jonathan Rajotte-Julien 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | bucket=lava 18 | file=$1 19 | #Path must include the file name 20 | path=$2 21 | 22 | host=obj.internal.efficios.com 23 | s3_k='jenkins' 24 | s3_s='echo123456' 25 | 26 | resource="/${bucket}/${path}" 27 | content_type="application/octet-stream" 28 | date=$(date -R) 29 | _signature="PUT\n\n${content_type}\n${date}\n${resource}" 30 | signature=$(echo -en "$_signature" | openssl sha1 -hmac "$s3_s" -binary | base64) 31 | 32 | curl -v -k -X PUT -T "${file}" \ 33 | -H "Host: $host" \ 34 | -H "Date: ${date}" \ 35 | -H "Content-Type: ${content_type}" \ 36 | -H "Authorization: AWS ${s3_k}:${signature}" \ 37 | https://"${host}${resource}" 38 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "lttng-ci" 3 | version = "0.1.0" 4 | description = "Configuration for ci.lttng.org" 5 | authors = [ 6 | "Michael Jeanson ", 7 | "Kienan Stewart ", 8 | ] 9 | license = "GPL-2.0" 10 | readme = "README.md" 11 | package-mode = false 12 | 13 | [tool.poetry.dependencies] 14 | python = "^3.12" 15 | jenkins-job-builder = "^6.4.2" 16 | 17 | [tool.poetry.group.dev.dependencies] 18 | black = "^24.10.0" 19 | isort = "^5.13.2" 20 | pre-commit = "^4.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | 26 | [tool.black] 27 | 28 | [tool.isort] 29 | profile = "black" 30 | -------------------------------------------------------------------------------- /scripts/babeltrace-benchmark/requirement.txt: -------------------------------------------------------------------------------- 1 | GitPython 2 | Jinja2 3 | matplotlib 4 | minio~=4.0.17 5 | numpy 6 | s3cmd 7 | -------------------------------------------------------------------------------- /scripts/barectf/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-FileCopyrightText: 2015-2023 Michael Jeanson 4 | # SPDX-License-Identifier: GPL-2.0-or-later 5 | 6 | set -exu 7 | 8 | SRCDIR="src/barectf" 9 | 10 | PYTHON3="python3" 11 | PYENV_HOME=$WORKSPACE/.pyenv/ 12 | 13 | # Delete previously built virtualenv 14 | if [ -d "$PYENV_HOME" ]; then 15 | rm -rf "$PYENV_HOME" 16 | fi 17 | 18 | # Create virtualenv and install necessary packages 19 | virtualenv -p $PYTHON3 "$PYENV_HOME" 20 | 21 | set +u 22 | # shellcheck disable=SC1090,SC1091 23 | . "$PYENV_HOME/bin/activate" 24 | set -u 25 | 26 | pip install --quiet poetry tox 27 | 28 | cd "$SRCDIR" 29 | 30 | # test 31 | tox -v 32 | 33 | # EOF 34 | -------------------------------------------------------------------------------- /scripts/common/check-format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-FileCopyrightText: 2023 Michael Jeanson 4 | # SPDX-License-Identifier: GPL-2.0-or-later 5 | 6 | set -exu 7 | 8 | print_header() { 9 | set +x 10 | 11 | local message=" $1 " 12 | local message_len 13 | local padding_len 14 | 15 | message_len="${#message}" 16 | padding_len=$(( (80 - (message_len)) / 2 )) 17 | 18 | 19 | printf '\n'; printf -- '#%.0s' {1..80}; printf '\n' 20 | printf -- '-%.0s' {1..80}; printf '\n' 21 | printf -- '#%.0s' $(seq 1 $padding_len); printf '%s' "$message"; printf -- '#%.0s' $(seq 1 $padding_len); printf '\n' 22 | printf -- '-%.0s' {1..80}; printf '\n' 23 | printf -- '#%.0s' {1..80}; printf '\n\n' 24 | 25 | set -x 26 | } 27 | 28 | cd "src/$PROJECT_NAME" 29 | 30 | # Check if the topmost patch is properly formatted 31 | git diff -U0 --no-color --relative HEAD^ | clang-format-diff-14 -p1 -i 32 | 33 | # If the tree has local changes, the formatting was incorrect 34 | GIT_DIFF_OUTPUT=$(git diff) 35 | if [ -n "$GIT_DIFF_OUTPUT" ]; then 36 | print_header "Saving clang-format proposed fixes in clang-format-fixes.diff" 37 | git diff > "$WORKSPACE/clang-format-fixes.diff" 38 | exit 1 39 | fi 40 | 41 | print_header "clang-format is happy!" 42 | 43 | # EOF 44 | # vim: expandtab tabstop=4 shiftwidth=4 45 | -------------------------------------------------------------------------------- /scripts/common/clean-build-dir.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | # 3 | # 4 | # 5 | 6 | rm -rf "${WORKSPACE}/build" 7 | -------------------------------------------------------------------------------- /scripts/common/cygpath-prefix: -------------------------------------------------------------------------------- 1 | set -exu 2 | 3 | WORKSPACE="$(cygpath "$WORKSPACE")" 4 | 5 | cd "$WORKSPACE" 6 | -------------------------------------------------------------------------------- /scripts/common/cygwin64-shebang: -------------------------------------------------------------------------------- 1 | #!c:\cygwin64\bin\bash --login 2 | -------------------------------------------------------------------------------- /scripts/common/msys2-shebang: -------------------------------------------------------------------------------- 1 | #!c:\msys64\usr\bin\bash --login 2 | -------------------------------------------------------------------------------- /scripts/common/override-build-std.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-FileCopyrightText: 2020 Jonathan Rajotte-Julien 4 | # SPDX-License-Identifier: GPL-2.0-or-later 5 | 6 | # This file should be used as a jenkins job builder RAW import allowing the 7 | # override of the "build" variable on shell builder execution. 8 | 9 | set -exu 10 | 11 | # shellcheck disable=SC2034 12 | build=std 13 | -------------------------------------------------------------------------------- /scripts/lttng-ivc/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (C) 2017 Jonathan Rajotte-Julien 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | set -xu 19 | 20 | PYTHON3="python3" 21 | 22 | # Tox does not support long path venv for whatever reason. 23 | PYENV_HOME=$(mktemp -d) 24 | 25 | # Create virtualenv and install necessary packages 26 | virtualenv --system-site-packages -p $PYTHON3 "$PYENV_HOME" 27 | 28 | set +ux 29 | # shellcheck disable=SC1091 30 | . "$PYENV_HOME/bin/activate" 31 | set -ux 32 | 33 | pip install --quiet tox 34 | 35 | # Hack for path too long in venv wrapper shebang 36 | TOXWORKDIR=$(mktemp -d) 37 | export TOXWORKDIR 38 | 39 | cd src/ || exit 1 40 | 41 | # Required to build tools < 2.11 with GCC >= 10 42 | export CFLAGS="-fcommon" 43 | 44 | # Run test suite via tox 45 | tox -v -e babeltrace -- --junit-xml="${WORKSPACE}/result.xml" 46 | 47 | # Remove base venv 48 | deactivate 49 | rm -rf "$PYENV_HOME" 50 | 51 | # Save 52 | cp -r "$TOXWORKDIR" "${WORKSPACE}/artifacts" 53 | rm -rf "$TOXWORKDIR" 54 | 55 | # EOF 56 | 57 | -------------------------------------------------------------------------------- /scripts/lttng-tools/gerrit-install-deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (C) 2020 Jonathan Rajotte-Julien 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | set -exu 19 | 20 | # Required variables 21 | WORKSPACE=${WORKSPACE:-} 22 | 23 | # Move any custom dependencies to the deps folder 24 | if [ -d "$WORKSPACE/build/" ]; then 25 | cp -r "$WORKSPACE/build/" "$WORKSPACE/deps/" 26 | fi 27 | -------------------------------------------------------------------------------- /scripts/lttng-tools/postbuild_collect_tap_results.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-FileCopyrightText: 2021 Jonathan Rajotte-Julien 4 | # 5 | # SPDX-License-Identifier: GPL-2.0-or-later 6 | 7 | # Collect the tap logs in a post build step when the build was terminated due 8 | # to timeout. 9 | 10 | set -exu 11 | 12 | # Required variables 13 | WORKSPACE=${WORKSPACE:-} 14 | 15 | SRCDIR="$WORKSPACE/src/lttng-tools" 16 | TAPDIR="$WORKSPACE/tap" 17 | LOGDIR="$WORKSPACE/log" 18 | 19 | cd "$SRCDIR" 20 | 21 | # Collect all available tap logs 22 | rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$TAPDIR" || true 23 | 24 | # Collect the test suites top-level log which includes all tests failures 25 | rsync -a --include 'test-suite.log' --include '*/' --exclude='*' tests/ "$LOGDIR" || true 26 | 27 | # EOF 28 | -------------------------------------------------------------------------------- /scripts/lttng-tools/postbuild_wait_10_seconds.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-FileCopyrightText: 2023 Michael Jeanson 4 | # 5 | # SPDX-License-Identifier: GPL-2.0-or-later 6 | 7 | set -exu 8 | 9 | sleep 10s 10 | 11 | # EOF 12 | -------------------------------------------------------------------------------- /scripts/lttng-tools/prebuild_clean_processes_coredumps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-FileCopyrightText: 2018 Jonathan Rajotte-Julien 4 | # 5 | # SPDX-License-Identifier: GPL-2.0-or-later 6 | 7 | set -exu 8 | 9 | pids=() 10 | 11 | # Kill any LTTng-related process 12 | lttng_processes="$(pgrep -l 'lttng|gen-ust-.+')" || true 13 | if [ -n "$lttng_processes" ]; then 14 | echo "The following LTTng processes were detected running on the system and will be killed:" 15 | echo "$lttng_processes" 16 | 17 | # Build the pids array 18 | while read -r pid; do 19 | pids+=("$pid") 20 | done < <(cut -d ' ' -f 1 <<< "$lttng_processes") 21 | 22 | kill -SIGKILL "${pids[@]}" 23 | fi 24 | 25 | # Remove any coredump already present 26 | find "/tmp" -name "core\.[0-9]*" -type f -delete || true 27 | -------------------------------------------------------------------------------- /scripts/normand/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xeu 2 | # 3 | # SPDX-FileCopyrightText: 2023 Philippe Proulx 4 | # SPDX-License-Identifier: GPL-2.0-or-later 5 | 6 | SRCDIR="src/normand" 7 | VENV="$WORKSPACE/.pyenv/" 8 | 9 | # Delete previously built virtual environment just in case 10 | if [[ -d "$VENV" ]]; then 11 | rm -rf "$VENV" 12 | fi 13 | 14 | # Create virtual environment and enter it 15 | virtualenv -p python3 "$VENV" 16 | set +u 17 | # shellcheck disable=SC1090,SC1091 18 | . "$VENV/bin/activate" 19 | set -u 20 | 21 | # Install Poetry and pytest 22 | pip install poetry pytest 23 | 24 | # Install the cloned version of Normand. 25 | # 26 | # Poetry doesn't create another virtual environment because it reuses 27 | # the current one. 28 | cd "$SRCDIR" 29 | poetry install 30 | 31 | # Test 32 | pytest -v 33 | 34 | # EOF 35 | -------------------------------------------------------------------------------- /scripts/packaging/el7/add-efficios-repo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | yum -y install wget 6 | 7 | wget -P /etc/yum.repos.d/ https://packages.efficios.com/repo.files/EfficiOS-RHEL7-x86-64.repo 8 | 9 | rpmkeys --import https://packages.efficios.com/rhel/repo.key 10 | 11 | yum updateinfo 12 | -------------------------------------------------------------------------------- /scripts/packaging/el7/install-lttng-packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | yum install -y kmod-lttng-modules lttng-tools babeltrace 6 | 7 | -------------------------------------------------------------------------------- /scripts/packaging/sles12/add-efficios-repo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | zypper --non-interactive addrepo https://packages.efficios.com/repo.files/EfficiOS-SLE12-x86-64.repo 6 | 7 | rpmkeys --import https://packages.efficios.com/sle/repo.key 8 | 9 | zypper --non-interactive refresh 10 | -------------------------------------------------------------------------------- /scripts/packaging/sles12/install-lttng-packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | zypper --non-interactive install lttng-modules-kmp-default lttng-tools babeltrace 6 | 7 | -------------------------------------------------------------------------------- /scripts/packaging/systemd-enable-and-start-relayd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | systemctl enable lttng-relayd 6 | 7 | systemctl start lttng-relayd 8 | -------------------------------------------------------------------------------- /scripts/packaging/systemd-enable-and-start-sessiond.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | systemctl enable lttng-sessiond 6 | 7 | systemctl start lttng-sessiond 8 | -------------------------------------------------------------------------------- /scripts/packaging/test-run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -exu 4 | 5 | lttng create 6 | lttng enable-event -a -k 7 | lttng start 8 | sleep 1 9 | lttng stop 10 | 11 | count=$(lttng view | wc -l) 12 | if [ $count -lt "100" ]; then 13 | false 14 | fi 15 | 16 | 17 | -------------------------------------------------------------------------------- /scripts/system-tests/build-modules.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xeu 2 | # Copyright (C) 2016 - Francis Deslauriers 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | echo 'modules-built.txt does not exist' 18 | echo 'So we build them against the kernel' 19 | 20 | $SCP_COMMAND "$STORAGE_USER@$STORAGE_HOST:$STORAGE_KERNEL_MODULE_SYMVERS" "$LINUX_PATH/Module.symvers" 21 | 22 | 23 | KERNELDIR="$LINUX_PATH" make -j"$NPROC" --directory="$LTTNG_MODULES_PATH" 24 | KERNELDIR="$LINUX_PATH" make -j"$NPROC" --directory="$LTTNG_MODULES_PATH" modules_install INSTALL_MOD_PATH="$MODULES_INSTALL_FOLDER" 25 | 26 | # Extract the linux modules to MODULES_INSTALL_FOLDER. 27 | # The resulting tarball will contain both lttng-modules and linux modules needed 28 | # for testing 29 | $S3_COMMAND get "s3://$S3_STORAGE_LINUX_MODULES" 30 | tar -xvzf $(basename "$S3_STORAGE_LINUX_MODULES") -C "$MODULES_INSTALL_FOLDER" 31 | 32 | tar -czf "$DEPLOYDIR/$BUILD_NAME.lttng.modules.tar.gz" -C "$MODULES_INSTALL_FOLDER/" lib/ 33 | 34 | $SCP_COMMAND "$DEPLOYDIR/$BUILD_NAME.lttng.modules.tar.gz" "$STORAGE_USER@$STORAGE_HOST:$STORAGE_LTTNG_MODULES" 35 | $S3_COMMAND put "$DEPLOYDIR/$BUILD_NAME.lttng.modules.tar.gz" s3://"$S3_STORAGE_LTTNG_MODULES" 36 | -------------------------------------------------------------------------------- /scripts/system-tests/checkout-modules.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (C) 2022 Michael Jeanson 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | set -exu 19 | 20 | git clone "$LTTNG_MODULES_REPO" src/lttng-modules && \ 21 | cd src/lttng-modules && \ 22 | git reset --hard "$LTTNG_MODULES_COMMIT_ID" 23 | -------------------------------------------------------------------------------- /scripts/system-tests/inject-ssh-commands.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xeu 2 | # Copyright (C) 2017 - Francis Deslauriers 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | echo SSH_COMMAND="ssh -oStrictHostKeyChecking=no -i $identity_file" >> properties.txt 18 | echo SCP_COMMAND="scp -oStrictHostKeyChecking=no -i $identity_file" >> properties.txt 19 | echo S3_COMMAND="s3cmd -c ${WORKSPACE}/s3cfg" >> properties.txt 20 | -------------------------------------------------------------------------------- /scripts/system-tests/run-baremetal-tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xeu 2 | # Copyright (C) 2016 - Francis Deslauriers 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | echo 'At this point, we built the modules and kernel if we needed to.' 18 | echo 'We can now launch the lava job using those artefacts' 19 | 20 | venv=$(mktemp -d) 21 | virtualenv -p python3 "$venv" 22 | 23 | set +eu 24 | source "${venv}/bin/activate" 25 | set -eu 26 | pip install pyyaml Jinja2 27 | 28 | python -u "$LTTNG_CI_PATH"/scripts/system-tests/lava2-submit.py \ 29 | -t baremetal-tests \ 30 | -lv "$LTTNG_VERSION" \ 31 | -j "$JOB_NAME" \ 32 | -k "$S3_URL_KERNEL_IMAGE" \ 33 | -lm "$S3_URL_LTTNG_MODULES" \ 34 | -tu "$LTTNG_TOOLS_REPO" \ 35 | -uu "$LTTNG_UST_REPO" \ 36 | -tc "$LTTNG_TOOLS_COMMIT_ID" \ 37 | -uc "$LTTNG_UST_COMMIT_ID" \ 38 | -id "$BUILD_TAG" \ 39 | -r "$ROOTFS_URL" \ 40 | --ci-repo "$LTTNG_CI_REPO" \ 41 | --ci-branch "$LTTNG_CI_BRANCH" 42 | 43 | set +eu 44 | deactivate 45 | set -eu 46 | rm -rf "$venv" 47 | -------------------------------------------------------------------------------- /scripts/system-tests/run-kvm-tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xeu 2 | # Copyright (C) 2016 - Francis Deslauriers 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | echo 'At this point, we built the modules and kernel if we needed to.' 18 | echo 'We can now launch the lava job using those artefacts' 19 | 20 | venv=$(mktemp -d) 21 | virtualenv -p python3 "$venv" 22 | set +eu 23 | source "${venv}/bin/activate" 24 | set -eu 25 | pip install pyyaml Jinja2 26 | 27 | python -u "$LTTNG_CI_PATH"/scripts/system-tests/lava2-submit.py \ 28 | -t kvm-tests \ 29 | -lv "$LTTNG_VERSION" \ 30 | -j "$JOB_NAME" \ 31 | -k "$S3_URL_KERNEL_IMAGE" \ 32 | -lm "$S3_URL_LTTNG_MODULES" \ 33 | -tu "$LTTNG_TOOLS_REPO" \ 34 | -uu "$LTTNG_UST_REPO" \ 35 | -tc "$LTTNG_TOOLS_COMMIT_ID" \ 36 | -uc "$LTTNG_UST_COMMIT_ID" \ 37 | -id "$BUILD_TAG" \ 38 | -r "$ROOTFS_URL" \ 39 | --ci-repo "$LTTNG_CI_REPO" \ 40 | --ci-branch "$LTTNG_CI_BRANCH" 41 | 42 | set +eu 43 | deactivate 44 | set -eu 45 | rm -rf "$venv" 46 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 1.9 3 | skipsdist = True 4 | toxworkdir = {env:TOXWORKDIR:.tox} 5 | 6 | [testenv] 7 | skip_install = True 8 | deps = git+git://github.com/lttng/jenkins-job-builder 9 | commands = jenkins-jobs --conf etc/jenkins_jobs.ini-tox test jobs/ -o test/ 10 | --------------------------------------------------------------------------------