Use one of our luet packages to install k3s (#1814) #4873
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: Build and test images | |
on: | |
push: | |
branches: | |
- master | |
paths: | |
- '**' | |
concurrency: | |
group: ci-image-${{ github.head_ref || github.ref }}-${{ github.repository }} | |
cancel-in-progress: true | |
env: | |
FORCE_COLOR: 1 | |
jobs: | |
get-matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git fetch --prune --unshallow | |
sudo apt update && sudo apt install -y jq | |
- id: set-matrix | |
run: | | |
content=`cat .github/flavors.json | jq 'map(select(.frameworkonly != "true"))'` | |
# the following lines are only required for multi line json | |
# the following lines are only required for multi line json | |
content="${content//'%'/'%25'}" | |
content="${content//$'\n'/'%0A'}" | |
content="${content//$'\r'/'%0D'}" | |
# end of optional handling for multi line json | |
# end of optional handling for multi line json | |
echo "::set-output name=matrix::{\"include\": $content }" | |
get-framework-matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git fetch --prune --unshallow | |
- id: set-matrix | |
run: | | |
content=`cat .github/flavors.json` | |
# the following lines are only required for multi line json | |
# the following lines are only required for multi line json | |
content="${content//'%'/'%25'}" | |
content="${content//$'\n'/'%0A'}" | |
content="${content//$'\r'/'%0D'}" | |
# end of optional handling for multi line json | |
# end of optional handling for multi line json | |
echo "::set-output name=matrix::{\"include\": $content }" | |
core: | |
uses: ./.github/workflows/reusable-build-flavor.yaml | |
secrets: inherit | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- get-matrix | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJson(needs.get-matrix.outputs.matrix)}} | |
framework: | |
uses: ./.github/workflows/reusable-build-framework-flavor.yaml | |
secrets: inherit | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- get-framework-matrix | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJson(needs.get-framework-matrix.outputs.matrix)}} | |
install: | |
uses: ./.github/workflows/reusable-install-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- flavor: opensuse-leap | |
zfs: | |
uses: ./.github/workflows/reusable-zfs-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: "ubuntu" | |
acceptance: | |
uses: ./.github/workflows/reusable-qemu-acceptance-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: "alpine-opensuse-leap" | |
- flavor: "opensuse-leap" | |
- flavor: "opensuse-tumbleweed" | |
- flavor: "ubuntu" | |
- flavor: "debian" | |
- flavor: "ubuntu-20-lts" | |
- flavor: "ubuntu-22-lts" | |
bundles: | |
uses: ./.github/workflows/reusable-qemu-bundles-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: opensuse-tumbleweed # Kubo test needs systemd version 252+ which atm is not available in Leap | |
reset: | |
uses: ./.github/workflows/reusable-qemu-reset-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: alpine-opensuse-leap | |
- flavor: opensuse-leap | |
netboot: | |
uses: ./.github/workflows/reusable-qemu-netboot-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: alpine-opensuse-leap | |
- flavor: opensuse-leap | |
- flavor: ubuntu | |
upgrade: | |
uses: ./.github/workflows/reusable-upgrade-with-cli-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: alpine-opensuse-leap | |
- flavor: opensuse-leap | |
upgrade-latest: | |
uses: ./.github/workflows/reusable-upgrade-latest-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- core | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- flavor: alpine-opensuse-leap | |
- flavor: opensuse-leap | |
# - flavor: "ubuntu" | |
# - flavor: "ubuntu" | |
# - flavor: "ubuntu" | |
encryption: | |
uses: ./.github/workflows/reusable-encryption-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
label: ${{ matrix.label }} | |
needs: | |
- core | |
strategy: | |
fail-fast: true | |
matrix: | |
label: | |
- "local-encryption" | |
- "remote-auto" | |
- "remote-static" | |
- "remote-https-pinned" | |
- "remote-https-bad-cert" | |
flavor: | |
- "opensuse-leap" | |
standard: | |
uses: ./.github/workflows/reusable-build-provider.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
strategy: | |
fail-fast: false | |
matrix: | |
flavor: | |
- "opensuse-leap" | |
- "alpine-opensuse-leap" | |
various: | |
uses: ./.github/workflows/reusable-provider-tests.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
label: ${{ matrix.label }} | |
needs: | |
- standard | |
strategy: | |
fail-fast: false | |
max-parallel: 2 | |
matrix: | |
label: | |
- "provider-qrcode-install" | |
- "provider-upgrade" | |
- "provider-decentralized-k8s" | |
- "provider-upgrade-k8s" | |
flavor: | |
- "opensuse-leap" | |
- "alpine-opensuse-leap" | |
exclude: # looks like only the k8s stuff is tested on both flavors | |
- label: "provider-qrcode-install" | |
flavor: "alpine-opensuse-leap" | |
- label: "provider-upgrade" | |
flavor: "alpine-opensuse-leap" | |
standard-upgrade-latest: | |
uses: ./.github/workflows/reusable-provider-upgrade-latest-test.yaml | |
with: | |
flavor: ${{ matrix.flavor }} | |
needs: | |
- standard | |
strategy: | |
fail-fast: false | |
max-parallel: 2 | |
matrix: | |
flavor: | |
- "opensuse-leap" | |
- "alpine-opensuse-leap" | |
test-uki: | |
runs-on: kvm | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: tests/go.mod | |
cache-dependency-path: tests/go.sum | |
- name: Enable KVM group perms | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libvirt-clients libvirt-daemon-system libvirt-daemon virtinst bridge-utils qemu qemu-system-x86 qemu-system-x86 qemu-utils qemu-kvm acl udev | |
# https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/ | |
# echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
# sudo udevadm control --reload-rules | |
# sudo udevadm trigger --name-match=kvm | |
# sudo usermod -a -G kvm,libvirt $USER | |
# | |
# TODO: Switch back to the above solution when we switch to the github runners | |
# https://askubuntu.com/a/1081326 | |
sudo setfacl -m u:runner:rwx /dev/kvm | |
- name: Install earthly | |
uses: jimmykarily/[email protected] | |
with: | |
repository: quay.io/kairos/packages | |
packages: utils/earthly | |
- name: Build uki disk 🔧 | |
run: | | |
# Do fedora as its the smaller uki possible | |
earthly +prepare-uki-disk-image --FLAVOR=fedora | |
- name: Run tests | |
env: | |
USE_QEMU: true | |
KVM: true | |
MEMORY: 4000 | |
CPUS: 2 | |
FIRMWARE: /usr/share/OVMF/OVMF_CODE.fd | |
run: | | |
export UKI_DRIVE=${PWD}/build/disk.img | |
cp tests/go.* . | |
go run github.com/onsi/ginkgo/v2/ginkgo -v --label-filter "uki" --fail-fast -r ./tests/ | |
notify: | |
runs-on: ubuntu-latest | |
if: failure() | |
needs: | |
- core | |
- standard | |
- framework | |
- install | |
- zfs | |
- acceptance | |
- bundles | |
- reset | |
- netboot | |
- upgrade | |
- upgrade-latest | |
- encryption | |
- various | |
- standard-upgrade-latest | |
- test-uki | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git fetch --prune --unshallow | |
- name: save commit-message | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} && failure() | |
run: echo "COMMIT_MSG=$(git log -1 --pretty=format:%s)" >> $GITHUB_ENV | |
- name: notify if failure | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} && failure() | |
uses: slackapi/[email protected] | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Job failure on master branch for job ${{ github.job }} in workflow \"${{ github.workflow }}\"\n\nCommit message is \"${{ env.COMMIT_MSG }}\"\n\n Commit sha is <https://github.com/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"type": "actions", | |
"elements": [ | |
{ | |
"type": "button", | |
"text": { | |
"type": "plain_text", | |
"text": ":thisisfine: Failed Run", | |
"emoji": true | |
}, | |
"url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
}, | |
{ | |
"type": "button", | |
"text": { | |
"type": "plain_text", | |
"text": ":kairos: Repository link", | |
"emoji": true | |
}, | |
"url": "https://github.com/${{ github.repository }}" | |
} | |
] | |
} | |
] | |
} |