Python 3 Lab Controller support #289
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Review-checks | |
# If a pull-request is pushed then cancel all previously running jobs related | |
# to that pull-request | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: true | |
on: [pull_request] | |
jobs: | |
check-docs: | |
env: | |
# https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ | |
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
runs-on: ubuntu-latest | |
container: | |
image: centos:7 | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Fixup CentOS repo files | |
run: | | |
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo | |
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo | |
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | |
- name: Install utils | |
run: | | |
yum install -y git wget ca-certificates | |
- name: Fetch Beaker repository | |
run: | | |
wget https://beaker-project.org/yum/beaker-server-RedHatEnterpriseLinux.repo -P /etc/yum.repos.d/ | |
- name: Install Beaker dependency from specfile | |
run: | | |
yum-builddep *.spec -y | |
- name: Build documentation | |
run: | | |
make -C documentation html SPHINXOPTS="-W" | |
mv documentation/_build/html /__w | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: beaker-docs | |
path: /home/runner/work/html | |
integration-tests: | |
runs-on: ubuntu-latest | |
env: | |
MYSQL_USER: beaker | |
MYSQL_PASSWORD: beaker | |
MYSQL_ROOT_PASSWORD: toor | |
# https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ | |
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
strategy: | |
fail-fast: false | |
matrix: | |
test-target: ["bkr.inttest.client", "bkr.inttest.labcontroller", "bkr.inttest.server"] | |
container: | |
image: centos:7 | |
options: --init | |
services: | |
database: | |
image: mariadb:10-ubi | |
env: | |
MYSQL_USER: ${{ env.MYSQL_USER }} | |
MYSQL_PASSWORD: ${{ env.MYSQL_PASSWORD }} | |
MYSQL_ROOT_PASSWORD: ${{ env.MYSQL_ROOT_PASSWORD }} | |
ports: | |
- 3306 | |
steps: | |
- name: Fixup CentOS repo files | |
run: | | |
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo | |
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo | |
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | |
# We have to install git 2.18+ to perform checkout via git | |
# This is possible only via IUS repositories | |
- name: Install git to allow checkout | |
run: | | |
yum install https://repo.ius.io/ius-release-el7.rpm epel-release -y | |
yum install git236-core -y | |
# Do not upgrade to @v4 as node 20 is incompatible with CentOS 7 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# Remove custom git from the IUS repository - git will be reinstalled later as it is needed by beaker itself. | |
- name: Remove git236 and YUM repositories | |
run: yum remove git236-core ius-release epel-release -y | |
- name: Add Beaker Server YUM repository | |
run: | | |
curl -o /etc/yum.repos.d/beaker-server.repo https://beaker-project.org/yum/beaker-server-RedHatEnterpriseLinux.repo | |
- name: Install Beaker dependencies | |
run: | | |
yum install epel-release mariadb beaker-integration-tests -y | |
yum-builddep beaker.spec -y | |
yum remove beaker-common \ | |
beaker-client \ | |
beaker-lab-controller \ | |
beaker-server \ | |
beaker-integration-tests -y | |
- name: Checkout submodules | |
run: | | |
git submodule update --init --recursive | |
- name: Configure database for testing | |
run: | | |
cat <<EOT > init.sql | |
CREATE DATABASE beaker_test; | |
CREATE DATABASE beaker_migration_test; | |
GRANT ALL PRIVILEGES ON beaker_test.* TO 'beaker'@'%'; | |
GRANT ALL PRIVILEGES ON beaker_migration_test.* TO 'beaker'@'%'; | |
SET GLOBAL max_allowed_packet=1073741824; | |
SET GLOBAL character_set_server=utf8; | |
EOT | |
mysql -uroot -p${{ env.MYSQL_ROOT_PASSWORD }} -h database < init.sql | |
sed -i 's/@localhost/@database/g' IntegrationTests/server-test.cfg | |
- name: Update version | |
run: | | |
# Update the version in common/__init__.py, as this file is used in the application and tests to determine the version | |
current_version=$(grep -oE "__version__ = '[^']+'" Common/bkr/common/__init__.py | cut -d "'" -f 2) | |
new_version="$current_version.git.$(git rev-parse --short HEAD)" | |
sed -i "s/__version__ = '$current_version'/__version__ = '$new_version'/" Common/bkr/common/__init__.py | |
- name: Run integration tests for ${{ matrix.test-target }} | |
run: | | |
pushd IntegrationTests | |
# Disable Selenium tests until we have plan for selenium driver + firefox | |
rm -rf src/bkr/inttest/server/selenium | |
./run-tests.sh -v ${{ matrix.test-target }} | |
unit-tests: | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.os-target.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
test-target: | |
- Common | |
- Client | |
- LabController | |
os-target: | |
- name: centos:7 | |
- name: quay.io/centos/centos:stream9 | |
additional_repo: "crb" | |
steps: | |
- name: Set BKR_PY3 environment variable | |
run: echo "BKR_PY3=1" >> $GITHUB_ENV | |
if: matrix.os-target.name != 'centos:7' | |
- name: Install DNF and plugins | |
run: yum install -y dnf 'dnf-command(builddep)' 'dnf-command(config-manager)' | |
- name: Enable additional repositories | |
run: | | |
IFS=', ' read -r -a repos <<< "${{ matrix.os-target.additional_repo }}" | |
for repo in "${repos[@]}"; do | |
dnf config-manager --set-enabled $repo | |
done | |
# Do not upgrade to @v4 as node 20 is incompatible with CentOS 7 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Fixup CentOS repo files | |
if: matrix.os-target.name == 'centos:7' | |
run: | | |
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo | |
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo | |
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | |
- name: Add Beaker Server YUM repository | |
if: matrix.os-target.name == 'centos:7' | |
run: | | |
curl -o /etc/yum.repos.d/beaker-server.repo https://beaker-project.org/yum/beaker-server-RedHatEnterpriseLinux.repo | |
# Build dependencies must be sufficient, the same is done during RPM build | |
- name: Install Beaker dependency from specfile | |
run: | | |
dnf builddep -y *.spec | |
- name: Run unit tests | |
run: | | |
pushd ${{ matrix.test-target }} | |
./run-tests.sh |