Skip to content

Keep distro calculation in sync with provider repo (#1655) #4744

Keep distro calculation in sync with provider repo (#1655)

Keep distro calculation in sync with provider repo (#1655) #4744

Workflow file for this run

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@v3
- 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@v3
- 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-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: self-hosted
steps:
- uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: tests/go.mod
cache-dependency-path: tests/go.sum
- name: Install deps
run: |
# install qemu-system-x86_64 and qemu-img
sudo apt update
sudo apt install -y qemu-system-x86 qemu-utils qemu-kvm acl
# Allow the "runner" user to access /dev/kvm
# Might not be the best solution but adding to the kvm group didn't work
# https://askubuntu.com/a/1081326
sudo setfacl -m u:runner:rwx /dev/kvm
- name: Install earthly
uses: Luet-lab/luet-install-action@v1
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
- install
- zfs
- acceptance
- bundles
- reset
- netboot
- upgrade
- upgrade-latest
- encryption
- various
- standard-upgrade-latest
- test-uki
steps:
- 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/slack-github-action@v1.24.0
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 }}"
}
]
}
]
}