Tests #216
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: Tests | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
schedule: | |
- cron: '0 2 * * *' | |
jobs: | |
unit-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest"] | |
ruby: ["2.7.1"] | |
bundler: ["2.1.4"] | |
include: | |
# Test versions from Ubuntu 22.04 | |
- os: ubuntu-latest | |
ruby: "3.0.2" | |
bundler: "2.3.5" | |
# Test versions from RHEL8 & RHEL9 | |
- os: ubuntu-latest | |
ruby: "3.1.2" | |
bundler: "2.3.7" | |
# Test versions from Amazon Linux 2023 | |
- os: ubuntu-latest | |
ruby: "3.2.2" | |
bundler: "2.4.10" | |
runs-on: ${{ matrix.os }} | |
name: Unit tests | |
steps: | |
- name: Checkout ${{ github.sha }} | |
uses: actions/checkout@v3 | |
- name: Setup Ruby ${{ matrix.ruby }} using Bundler ${{ matrix.bundler }} | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler: ${{ matrix.bundler }} | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/vendor/bundle | |
key: ${{ runner.os }}-${{ matrix.ruby }}-unit-gems-${{ hashFiles('apps/*/Gemfile.lock', 'Gemfile.lock') }}-1 | |
- name: Setup Bundler | |
run: | | |
bundle config path ~/vendor/bundle | |
bundle install | |
gem install rake | |
- name: Setup rclone | |
run: sudo apt-get update && sudo apt-get install rclone | |
- name: Run unit tests | |
run: bundle exec rake test:unit | |
- name: Run ShellCheck | |
run: bundle exec rake test:shellcheck | |
- name: Run Zeitwerk check | |
run: | | |
cd apps/dashboard | |
bundle install | |
bundle exec rake zeitwerk:check | |
- name: Run lint tests | |
run: bundle exec rake lint || true | |
- name: Run System Dashboard tests | |
run: cd apps/dashboard; bin/rake test:system | |
- name: Upload system test failures. | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: system-test-failures | |
path: apps/dashboard/tmp/screenshots/*.png | |
k8s-tests: | |
runs-on: ubuntu-latest | |
name: Kubernetes tests | |
steps: | |
- name: Checkout ${{ github.sha }} | |
uses: actions/checkout@v3 | |
- name: Create kind cluster | |
uses: container-tools/kind-action@v2 | |
- name: Apply ondemand RBAC | |
run: kubectl apply -f hooks/k8s-bootstrap/ondemand.yaml | |
- name: Get ondemand token | |
id: token | |
run: | | |
TOKEN_NAME=$(kubectl describe serviceaccount ondemand -n ondemand | grep Tokens | awk '{ print $2 }') | |
TOKEN=$(kubectl describe secret $TOKEN_NAME -n ondemand | grep "token:" | awk '{ print $2 }') | |
echo "ondemand=${TOKEN}" >> $GITHUB_OUTPUT | |
- name: Setup kubectl | |
run: | | |
kubectl config set-credentials ondemand --token="${{ steps.token.outputs.ondemand }}" | |
kubectl config set-context kind-kind --user=ondemand | |
kubectl config use-context kind-kind | |
kubectl cluster-info | |
- name: Test k8s-bootstrap | |
run: /bin/bash hooks/k8s-bootstrap/k8s-bootstrap-ondemand.sh test hooks/hook.env.example | |
e2e-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04] | |
dist: | |
- el7 | |
- el8 | |
- el9 | |
- amzn2023 | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
arch: | |
- x86_64 | |
- aarch64 | |
- ppc64le | |
version: ["3.1"] | |
exclude: | |
# Amazon 2023 on aarch64 is very slow and will time out | |
- dist: amzn2023 | |
arch: aarch64 | |
# Amazon 2023 doesn't have ppc64le containers | |
- dist: amzn2023 | |
arch: ppc64le | |
# Ubuntu doesn't have way to get NodeJS 14+ on ppc64le | |
- dist: ubuntu-20.04 | |
arch: ppc64le | |
# Ubuntu doesn't have way to get NodeJS 14+ on ppc64le | |
- dist: ubuntu-22.04 | |
arch: ppc64le | |
runs-on: ${{ matrix.os }} | |
name: E2E test ${{ matrix.dist }}-${{ matrix.arch }} | |
steps: | |
- name: Checkout ${{ github.sha }} | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Ruby using Bundler | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "2.7.1" | |
bundler: "2.1.4" | |
bundler-cache: true | |
- name: Build package | |
if: matrix.arch == 'x86_64' | |
run: bundle exec rake package:build[${{ matrix.dist }},${{ matrix.arch }}] | |
env: | |
VERSION: "${{ matrix.version }}.0" | |
OOD_PACKAGING_DEBUG: 'true' | |
- name: Run package tests | |
if: matrix.arch == 'x86_64' | |
run: bundle exec rake test:e2e | |
env: | |
BEAKER_set: ${{ matrix.dist }} | |
OOD_BUILD_REPO: ${{ matrix.version }} | |
- name: arch distro | |
if: ${{ matrix.arch != 'x86_64' && github.event_name == 'schedule' }} | |
run: | | |
DISTRO=$(echo "${{ matrix.os }}" | sed 's|\-||g') | |
echo "DISTRO=${DISTRO}" >> $GITHUB_ENV | |
if [ "${{ matrix.arch }}" == "aarch64" ]; then | |
echo "PLATFORM=linux/arm64" >> $GITHUB_ENV | |
fi | |
if [ "${{ matrix.arch }}" == "ppc64le" ]; then | |
echo "PLATFORM=linux/ppc64le" >> $GITHUB_ENV | |
fi | |
- name: Test OnDemand | |
if: ${{ matrix.arch != 'x86_64' && github.event_name == 'schedule' }} | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: ${{ matrix.arch }} | |
distro: ${{ env.DISTRO }} | |
githubToken: ${{ github.token }} | |
install: | | |
apt update -y | |
apt install -y ruby-bundler ruby-dev build-essential git \ | |
apt-transport-https ca-certificates curl software-properties-common | |
# Not available for ppc64le | |
# apt install -y chromium-chromedriver | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg | |
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null | |
apt update -y | |
apt install -y docker-ce | |
dockerRunArgs: | | |
--platform ${{ env.PLATFORM }} | |
run: | | |
git config --global --add safe.directory $GITHUB_WORKSPACE | |
bundle install | |
bundle exec rake package:build[${{ matrix.dist }},${{ matrix.arch }}] | |
# e2e tests fail with issues accessing chorium | |
# bundle exec rake test:e2e | |
env: | | |
VERSION: "${{ matrix.version }}.0" | |
OOD_PACKAGING_DEBUG: 'true' | |
BEAKER_set: ${{ matrix.dist }}-${{ matrix.arch }} | |
OOD_BUILD_REPO: ${{ matrix.version }} | |
DOCKER_IN_DOCKER: 'true' | |
- name: Debug failure | |
if: failure() | |
run: | | |
find tmp/e2e_ctr/ -type f -name *.log -exec cat {} + |