Skip to content

CI

CI #90

Workflow file for this run

# Copyright (c) 2023 Robert Bosch GmbH and Microsoft Corporation
#
# 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@v3
- name: Install deps
run: |
pip install mypy
pip install types-requests
- name: Run Linters
uses: ./.github/actions/pre-commit-action
unit-test:
name: "Run unit tests"
runs-on: ubuntu-22.04
container: ghcr.io/eclipse-velocitas/devcontainer-base-images/python:v0.1.5
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install required packages
run: |
pip install -r vehicle-model-lifecycle/src/requirements.txt
pip install -r vehicle-model-lifecycle/test/requirements.txt
python vehicle-model-lifecycle/src/install_deps.py
- name: unit test
shell: bash
run: |
pytest --rootdir=./vehicle-model-lifecycle/test --override-ini junit_family=xunit1 --junit-xml=./results/UnitTest/junit.xml --cov ./vehicle-model-lifecycle/test --cov-report=xml:results/CodeCoverage/cobertura-coverage.xml --cov-branch ./vehicle-model-lifecycle/test
coverage2clover -i results/CodeCoverage/cobertura-coverage.xml -o results/CodeCoverage/clover.xml
coveragepy-lcov --data_file_path ./.coverage --output_file_path results/CodeCoverage/lcov.info
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
junit_files: ./results/UnitTest/junit.xml
run-integration-tests:
name: Run Integration Test
runs-on: ubuntu-22.04
container: ghcr.io/eclipse-velocitas/devcontainer-base-images/${{ matrix.language }}:v0.1.5
strategy:
matrix:
language: ["python", "cpp"]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Checkout template repo
uses: actions/checkout@v3
with:
repository: eclipse-velocitas/vehicle-app-${{ matrix.language }}-template
path: test/${{ matrix.language }}/repo
- name: Prepare .velocitas.json for integration test
run: |
NEW_CONFIG="$(jq --arg GITHUB_SHA "$GITHUB_SHA" '.packages[0].version |= $GITHUB_SHA' test/${{ matrix.language }}/.velocitas.json)"
echo "${NEW_CONFIG}" > test/${{ matrix.language }}/repo/.velocitas.json
- name: Init velocitas project
run: |
cd test/${{ matrix.language }}/repo
velocitas init
- name: Check if vehicle model is generated
run: |
cd test/${{ matrix.language }}/repo
generatedModelPath=$(cat .velocitas.json | jq -r .variables.generatedModelPath)
if [ -d "$generatedModelPath" ];
then
echo "$generatedModelPath directory exists."
else
echo "$generatedModelPath does not exist."
exit 1
fi
- name: Sync velocitas project
run: |
cd test/${{ matrix.language }}/repo
velocitas sync
- name: Reset .velocitas.json to latest template state
run: |
cd test/${{ matrix.language }}/repo
git checkout .velocitas.json
- name: Fix dubious ownership
run: |
git config --global --add safe.directory $( pwd )
- name: Identify changes in devenv repo
uses: dorny/paths-filter@v2
id: changesInPath
with:
filters: |
setupCommon:
- 'setup/src/common/**'
setupLang:
- 'setup/src/${{ matrix.language }}/**'
- name: Check if cloned template repo has changes after sync
if: (steps.changesInPath.outputs.setupCommon == 'true' || steps.changesInPath.outputs.setupLang == 'true')
id: changes
run: |
cd test/${{ matrix.language }}/repo
git diff
if [[ -z "$(git status --porcelain .)" ]];
then
echo "No Changes"
echo "changed=0" >> $GITHUB_OUTPUT
else
echo "Changes"
echo "changed=1" >> $GITHUB_OUTPUT
fi
shell: bash
- name: Fail if there are changes in setup files detected but sync probably failed
if: |
(steps.changes.outputs.changed == 0 && steps.changesInPath.outputs.setupCommon == 'true') ||
(steps.changes.outputs.changed == 0 && steps.changesInPath.outputs.setupLang == 'true')
run: exit 1