Service: Exlude disks of type cdrom
#2217
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: Tests | |
on: | |
schedule: | |
- cron: '0 0 * * 0' # Weekly on Sunday at 00:00 UTC | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
env: | |
CGO_CFLAGS: -I/home/runner/go/deps/dqlite/include/ | |
CGO_LDFLAGS: -L/home/runner/go/deps/dqlite/.libs/ | |
LD_LIBRARY_PATH: /home/runner/go/deps/dqlite/.libs/ | |
CGO_LDFLAGS_ALLOW: (-Wl,-wrap,pthread_create)|(-Wl,-z,now) | |
# Use a directory path for the cover files present on every system regardless of the used runner. | |
GOCOVERDIR: ${{ ( github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' ) && '/tmp/cover' || '' }} | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
# Make sure bash is always invoked with `-eo pipefail` | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell | |
shell: bash | |
jobs: | |
changes: | |
name: Changes | |
runs-on: ubuntu-22.04 | |
outputs: | |
except_docs: ${{ steps.filter.outputs.except_docs }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Check for changes | |
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 | |
id: filter | |
with: | |
filters: | | |
except_docs: | |
# Match all changes except 'doc/**'. | |
# If no files outside of 'doc/**' are changed except_docs is set to 'false'. | |
- '!(doc/**)' | |
code-tests: | |
name: Code | |
runs-on: ubuntu-22.04 | |
needs: [changes] | |
if: ${{ needs.changes.outputs.except_docs == 'true' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
# A non-shallow clone is needed for the Differential ShellCheck | |
fetch-depth: 0 | |
- name: Install Go | |
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 | |
with: | |
go-version-file: 'go.mod' | |
- name: Check compatibility with min Go version | |
run: | | |
set -eux | |
GOMIN="$(sed -n 's/^GOMIN=\([0-9.]\+\)$/\1/p' Makefile)" | |
go mod tidy -go="${GOMIN}" | |
- name: Dependency Review | |
uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 | |
if: github.event_name == 'pull_request' | |
- id: ShellCheck | |
name: Differential ShellCheck | |
uses: redhat-plumbers-in-action/differential-shellcheck@cc6721c45a8800cc666de45493545a07a638d121 # v5.4.0 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
strict-check-on-push: true | |
if: github.event_name == 'pull_request' | |
- name: Upload artifact with ShellCheck defects in SARIF format | |
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 | |
with: | |
name: Differential ShellCheck SARIF | |
path: ${{ steps.ShellCheck.outputs.sarif }} | |
if: github.event_name == 'pull_request' | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install --no-install-recommends -y pkg-config autoconf automake libtool make libuv1-dev libsqlite3-dev liblz4-dev | |
- name: Build | |
run: | | |
make deps | |
make build-test | |
- name: Run static analysis | |
run: make check-static | |
- name: Make GOCOVERDIR | |
run: mkdir -p "${GOCOVERDIR}" | |
if: env.GOCOVERDIR != '' | |
- name: Unit tests | |
run: | | |
set -eux | |
make check-unit | |
- name: Upload coverage data | |
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 | |
with: | |
name: coverage-unit | |
path: ${{env.GOCOVERDIR}} | |
if: env.GOCOVERDIR != '' | |
- name: Upload system test dependencies | |
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 | |
with: | |
name: system-test-deps | |
path: | | |
/home/runner/go/bin/microcloud | |
/home/runner/go/bin/microcloudd | |
/home/runner/go/bin/dqlite | |
retention-days: 1 | |
system-tests-core: | |
env: | |
DEBUG: "1" | |
SKIP_VM_LAUNCH: "1" | |
SNAPSHOT_RESTORE: "1" | |
name: System (core) | |
runs-on: ubuntu-22.04 | |
needs: code-tests | |
strategy: | |
fail-fast: false | |
matrix: | |
# Test suites that will be combined with the set versions. | |
# Define this first in the matrix so that it's readable | |
# after GitHub as formed the name for the respective check. | |
suite: | |
- "add" | |
- "instances" | |
- "basic" | |
- "recover" | |
- "interactive" | |
- "mismatch" | |
- "preseed" | |
# Set of versions to use for the matrix tests. | |
os: ["24.04"] | |
microceph: ["latest/edge"] | |
microovn: ["latest/edge"] | |
lxd: ["5.21/edge"] | |
microcloud: ["latest/edge"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: System test | |
uses: ./.github/actions/system-test | |
with: | |
github_runner: true | |
system-tests-upgrade: | |
env: | |
DEBUG: "1" | |
SKIP_VM_LAUNCH: "1" | |
SNAPSHOT_RESTORE: "1" | |
name: System (upgrade) | |
runs-on: ubuntu-22.04 | |
needs: code-tests | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: ["upgrade"] | |
os: | |
- "22.04" | |
- "24.04" | |
microceph: | |
- "reef/stable" | |
- "quincy/stable" | |
microovn: ["22.03/stable"] | |
lxd: ["5.21/stable"] | |
microcloud: ["1/stable"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: System test | |
uses: ./.github/actions/system-test | |
with: | |
github_runner: true | |
system-tests-canonical: | |
env: | |
DEBUG: "1" | |
SKIP_VM_LAUNCH: "1" | |
SNAPSHOT_RESTORE: "1" | |
name: System (Canonical) | |
runs-on: self-hosted-linux-amd64-jammy-large | |
needs: code-tests | |
# Run the tests on the Canonical runners only when scheduled. | |
if: ${{ github.event_name == 'schedule' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: ["instances"] | |
os: | |
- "22.04" | |
- "24.04" | |
microceph: ["latest/edge"] | |
microovn: ["latest/edge"] | |
lxd: ["5.21/edge"] | |
microcloud: ["latest/edge"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: System test | |
uses: ./.github/actions/system-test | |
with: | |
github_runner: false | |
tics: | |
name: Tiobe TICS | |
runs-on: ubuntu-22.04 | |
needs: [system-tests-core, system-tests-upgrade] | |
#if: ${{ ( github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' ) && github.ref_name == 'main' && github.repository == 'canonical/microcloud' }} | |
if: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Install Go | |
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 | |
with: | |
go-version: 1.23.x | |
- name: Download coverage data | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
pattern: coverage-* | |
path: ${{env.GOCOVERDIR}} | |
merge-multiple: true | |
- name: Extract coverage data | |
run: | | |
find ${{ env.GOCOVERDIR }}/micro*/cover/ -type f -exec mv {} ${{ env.GOCOVERDIR }} \; | |
rm -rf ${{ env.GOCOVERDIR }}/micro* | |
ls -la ${{ env.GOCOVERDIR }} | |
- name: Download system test dependencies | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: system-test-deps | |
merge-multiple: true | |
path: /home/runner/go/bin | |
- name: Install dependencies | |
run: | | |
go install github.com/axw/gocov/gocov@latest | |
go install github.com/AlekSi/gocov-xml@latest | |
go install honnef.co/go/tools/cmd/staticcheck@latest | |
- name: Convert coverage files | |
run: | | |
go tool covdata textfmt -i="${GOCOVERDIR}" -o "${GOCOVERDIR}"/coverage.out | |
gocov convert "${GOCOVERDIR}"/coverage.out > "${GOCOVERDIR}"/coverage.json | |
gocov-xml < "${GOCOVERDIR}"/coverage.json > "${GOCOVERDIR}"/coverage-go.xml | |
go tool covdata percent -i="${GOCOVERDIR}" | |
- name: Run TICS | |
uses: tiobe/tics-github-action@88cb795a736d2ca885753bec6ed2c8b03e3f892f # v3.3.0 | |
with: | |
mode: qserver | |
project: microcloud | |
viewerUrl: https://canonical.tiobe.com/tiobeweb/TICS/api/cfg?name=default | |
branchdir: ${{ github.workspace }} | |
ticsAuthToken: ${{ secrets.TICS_AUTH_TOKEN }} | |
installTics: true | |
calc: ALL | |
tmpdir: /tmp/tics | |
doc-tests: | |
name: Documentation | |
uses: canonical/documentation-workflows/.github/workflows/documentation-checks.yaml@main | |
with: | |
working-directory: './doc' | |
makefile: 'Makefile' | |
snap: | |
name: Trigger snap edge build | |
runs-on: ubuntu-22.04 | |
needs: [code-tests, system-tests-core, system-tests-upgrade, doc-tests] | |
if: ${{ github.repository == 'canonical/microcloud' && github.event_name == 'push' && github.actor != 'dependabot[bot]' }} | |
env: | |
SSH_AUTH_SOCK: /tmp/ssh_agent.sock | |
PACKAGE: "microcloud" | |
REPO: "git+ssh://[email protected]/~microcloud-snap/microcloud" | |
BRANCH: >- | |
${{ fromJson('{ | |
"main": "latest-edge", | |
"v2-edge": "v2-edge", | |
"v1-edge": "v1-edge", | |
}')[github.ref_name] }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: canonical/lxd/.github/actions/lp-snap-build@main | |
with: | |
ssh-key: "${{ secrets.LAUNCHPAD_LXD_BOT_KEY}}" | |
- name: Trigger Launchpad snap build | |
run: | | |
set -eux | |
echo "${PATH}" | |
localRev="$(git rev-parse HEAD)" | |
cd ~/"${PACKAGE}-pkg-snap-lp" | |
lxd-snapcraft -package "${PACKAGE}" -set-version "git-${localRev:0:7}" -set-source-commit "${localRev}" | |
git add --all | |
git commit --all --quiet -s --allow-empty -m "Automatic upstream build (${BRANCH})" -m "Upstream commit: ${localRev}" | |
git show | |
git push --quiet |