Skip to content

Fix src for desired state (#75) #604

Fix src for desired state (#75)

Fix src for desired state (#75) #604

Workflow file for this run

# Copyright (c) 2023-2024 Contributors to the Eclipse Foundation
#
# This program and the accompanying materials are made available under the
# terms of the Apache License, Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# SPDX-License-Identifier: Apache-2.0
name: CI
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
# Run only on branches/commits and not tags
branches:
- main
pull_request:
branches:
- main
jobs:
lint-job:
name: "Run linters"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install required packages
run: |
pip install mypy
- name: Run Linters
uses: pre-commit/action@v3.0.0
unit-test:
name: "Run unit tests"
runs-on: ubuntu-22.04
container: ghcr.io/eclipse-velocitas/devcontainer-base-images/python:v0.3
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install required packages
run: |
pip install -r desired_state_generator/src/requirements.txt
pip install -r desired_state_generator/test/requirements.txt
pip install -r runtime_local/src/requirements.txt
pip install -r runtime_local/test/requirements.txt
- name: unit tests
shell: bash
run: |
pytest --ignore-glob='*integration*' --override-ini junit_family=xunit1 --junit-xml=./results/UnitTest/junit.xml \
--cov . \
--cov-report=xml:results/CodeCoverage/cobertura-coverage.xml \
--cov-branch ./runtime_local/test ./desired_state_generator/test
- name: Publish Unit Test Results
uses: mikepenz/action-junit-report@v4
if: always()
with:
report_paths: ./results/UnitTest/junit.xml
summary: true
update_check: true
annotate_only: true
- uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: results/CodeCoverage/cobertura-coverage.xml
badge: true
format: markdown
hide_complexity: true
indicators: true
output: both
- run: |
cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
run-local-integration-tests:
name: Run Integration Tests for local runtime
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prepare integration Tests
uses: ./.github/actions/prepare-int-tests
with:
package: runtime_local
- name: Run integration tests for runtime_local
run: |
cd runtime_local/test
pytest -s ./integration/integration_test.py
- name: Upload log files as artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: "Log files local"
path: runtime_local/test/logs
run-kanto-integration-tests:
name: Run Integration Tests for kanto
runs-on: ubuntu-22.04
env:
DOCKER_BUILDKIT: 1
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prepare integration Tests
uses: ./.github/actions/prepare-int-tests
with:
package: runtime_kanto
- name: Install required packages
run: |
sudo apt-get update && sudo apt-get install -y mosquitto
wget https://github.com/eclipse-kanto/kanto/releases/download/v0.1.0-M3/kanto_0.1.0-M3_linux_x86_64.deb && \
sudo apt install ./kanto_0.1.0-M3_linux_x86_64.deb
- name: Stop Kanto services
run: |
sudo systemctl stop \
suite-connector.service \
container-management.service \
software-update.service \
file-upload.service \
file-backup.service \
system-metrics.service
sudo pkill -f mosquitto
- name: Run integration tests for kanto
run: |
cd runtime_kanto/test
# the socket on the ci is different to the devcontainer
# create dir as it does not exist at this point of time
sudo mkdir -p /run/docker/containerd
sudo ln -s /run/containerd/containerd.sock /run/docker/containerd/containerd.sock
pytest -s -x ./integration/integration_test.py::test_scripts_run_successfully_with_down
- name: Upload log files as artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: "Log files Kanto"
path: |
runtime_kanto/test/logs
run-desired-state-generator-tests:
name: Run Integration Tests for desired state generator
runs-on: ubuntu-22.04
env:
DOCKER_BUILDKIT: 1
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prepare integration Tests
uses: ./.github/actions/prepare-int-tests
with:
package: desired_state_generator
- name: Run integration tests for desired state generator
run: |
cd desired_state_generator/test
pytest -s -x ./integration/integration_test.py
- name: Upload log files as artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: "Log files Desired State Generator"
path: |
desired_state_generator/test/test/logs