diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml deleted file mode 100644 index 3ad002d..0000000 --- a/.github/workflows/e2e.yml +++ /dev/null @@ -1,141 +0,0 @@ -name: E2E Testing - -on: - workflow_dispatch: - push: - paths-ignore: - - ".github/workflows/images-*" - - ".github/workflows/ubuntu.yml" - - ".github/workflows/macos.yml" - - ".github/workflows/debian-cache.yml" - -jobs: - test-end-to-end: - name: E2E Testing - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - os: [ - { distro: Ubuntu, release: 12.04 }, - { distro: Ubuntu, release: 14.04 }, - { distro: Ubuntu, release: 16.04 }, - { distro: Ubuntu, release: 18.04 }, - { distro: Ubuntu, release: 20.04 }, - { distro: Ubuntu, release: 22.04 }, - { distro: CentOS, release: 6 }, - { distro: CentOS, release: 7 }, - { distro: CentOS, release: 8 }, - { distro: OracleLinux, release: 6 }, - { distro: OracleLinux, release: 7 }, - { distro: OracleLinux, release: 8 }, - { distro: OracleLinux, release: 9 }, - { distro: Debian, release: 7 }, - { distro: Debian, release: 8 }, - { distro: Debian, release: 9 }, - { distro: Debian, release: 10 }, - { distro: Debian, release: 11 } - ] - - steps: - - uses: actions/checkout@v1 - - - name: Build - run: go build - - - uses: digitalocean/action-doctl@v2 - with: - token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} - - - uses: webfactory/ssh-agent@v0.8.0 - with: - ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - - - name: Create droplet - run: >- - doctl compute droplet create - --size s-1vcpu-1gb - --tag-name=github-actions - --image almalinux-9-x64 - --ssh-keys='b4:4c:66:7d:be:19:25:43:1c:e0:02:61:9f:49:12:94' - --wait - --region fra1 - ga-out-of-tree-e2e-${{ matrix.os.distro }}-${{ matrix.os.release }}-$GITHUB_SHA - - - name: End-to-End Testing [${{ matrix.os.distro }} ${{ matrix.os.release }}] - shell: bash - run: | - sleep 1m - - IP=$(doctl compute droplet list \ - --tag-name=github-actions \ - --format "Name,Public IPv4" \ - | grep -v ID \ - | grep ga-out-of-tree-e2e-${{ matrix.os.distro }}-${{ matrix.os.release }}-$GITHUB_SHA \ - | awk '{print $2}') - - while ! ssh -o StrictHostKeyChecking=accept-new root@$IP echo - do - sleep 1s - done - - ssh root@$IP "cloud-init status --wait" - - ssh root@$IP "dnf install -y podman qemu-kvm-core" - - ssh root@$IP "ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64" - - scp ./out-of-tree root@$IP:/usr/local/bin/ - - echo 'name = "out-of-tree script"' >> .out-of-tree.toml - echo 'type = "script"' >> .out-of-tree.toml - echo 'script = "script.sh"' >> .out-of-tree.toml - echo '[[supported_kernels]]' >> .out-of-tree.toml - echo 'distro_type = "${{ matrix.os.distro }}"' >> .out-of-tree.toml - echo 'distro_release = "${{ matrix.os.release }}"' >> .out-of-tree.toml - echo 'release_mask = ".*"' >> .out-of-tree.toml - echo -e '#!/bin/sh\necho ok' >> script.sh - - scp .out-of-tree.toml script.sh root@$IP: - - echo '[Unit]' >> test.service - echo 'Description=e2e' >> test.service - echo '[Service]' >> test.service - echo 'RemainAfterExit=yes' >> test.service - echo 'StandardError=append:/var/log/test.log' >> test.service - echo 'StandardOutput=append:/var/log/test.log' >> test.service - echo 'Type=oneshot' >> test.service - echo 'WorkingDirectory=/root' >> test.service - echo 'TimeoutStopSec=1' >> test.service - echo 'Environment=XDG_RUNTIME_DIR=/home/user' >> test.service - echo 'ExecStart=/usr/local/bin/out-of-tree kernel autogen --max=1' >> test.service - echo 'ExecStart=/usr/local/bin/out-of-tree pew' >> test.service - - scp test.service root@$IP:/etc/systemd/system/test.service - - ssh root@$IP systemctl daemon-reload - - ssh root@$IP systemctl start test --no-block - - while ! ssh root@$IP systemctl show test -p SubState --value | grep -E '(failed|exited)' - do - sleep 30s - done - - ssh root@$IP "cat /var/log/test.log" - - scp -r root@$IP:.out-of-tree/logs . - - ssh root@$IP systemctl is-active test - - - name: Archive logs - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-end-to-end-${{ matrix.os.distro }}-${{ matrix.os.release }}-logs - path: logs - - - name: Delete droplet - if: always() - run: doctl compute droplet delete -f ga-out-of-tree-e2e-${{ matrix.os.distro }}-${{ matrix.os.release }}-$GITHUB_SHA diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index c8acfa4..9557420 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -74,3 +74,68 @@ jobs: with: name: test-end-to-end-examples-logs path: /home/runner/.out-of-tree/logs + + test-end-to-end: + name: E2E Testing + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + os: [ + { distro: Ubuntu, release: 12.04 }, + { distro: Ubuntu, release: 14.04 }, + { distro: Ubuntu, release: 16.04 }, + { distro: Ubuntu, release: 18.04 }, + { distro: Ubuntu, release: 20.04 }, + { distro: Ubuntu, release: 22.04 }, + { distro: CentOS, release: 6 }, + { distro: CentOS, release: 7 }, + { distro: CentOS, release: 8 }, + { distro: OracleLinux, release: 6 }, + { distro: OracleLinux, release: 7 }, + { distro: OracleLinux, release: 8 }, + # { distro: OracleLinux, release: 9 } + { distro: Debian, release: 7 }, + { distro: Debian, release: 8 }, + { distro: Debian, release: 9 }, + { distro: Debian, release: 10 }, + { distro: Debian, release: 11 } + ] + + steps: + - uses: actions/checkout@v1 + + - name: Build + run: go build + + - name: Install dependencies for tests + run: | + sudo apt-get update + sudo apt-get install qemu-system-x86 + + - name: End-to-End Testing [${{ matrix.os.distro }} ${{ matrix.os.release }}] + run: | + mkdir test + cd test + + echo 'name = "out-of-tree script"' >> .out-of-tree.toml + echo 'type = "script"' >> .out-of-tree.toml + echo 'script = "script.sh"' >> .out-of-tree.toml + echo '[[supported_kernels]]' >> .out-of-tree.toml + echo 'distro_type = "${{ matrix.os.distro }}"' >> .out-of-tree.toml + echo 'distro_release = "${{ matrix.os.release }}"' >> .out-of-tree.toml + echo 'release_mask = ".*"' >> .out-of-tree.toml + + echo -e '#!/bin/sh\necho ok' >> script.sh + + ../out-of-tree --log-level=debug kernel list-remote --distro=${{ matrix.os.distro }} --ver=${{ matrix.os.release }} + ../out-of-tree --log-level=debug kernel autogen --max=1 --shuffle + ../out-of-tree --log-level=debug pew --qemu-timeout=10m + + - name: Archive logs + if: always() + uses: actions/upload-artifact@v3 + with: + name: test-end-to-end-${{ matrix.os.distro }}-${{ matrix.os.release }}-logs + path: /home/runner/.out-of-tree/logs