From 8b267bc06a0eb677abaf0f8dcc0bee7e99fbefed Mon Sep 17 00:00:00 2001 From: Gyorgy Szaszko Date: Fri, 18 Oct 2024 16:13:31 +0200 Subject: [PATCH] first version of external project test --- .github/workflows/external.yml | 99 +++++++++++++++++++++++++++ .github/workflows/publish-to-pypi.yml | 4 +- .github/workflows/smoketest.yml | 14 ++-- 3 files changed, 108 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/external.yml diff --git a/.github/workflows/external.yml b/.github/workflows/external.yml new file mode 100644 index 00000000..5dc441f2 --- /dev/null +++ b/.github/workflows/external.yml @@ -0,0 +1,99 @@ +name: External projects test + +on: + push: + branches: + - main + - dev + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + create-combinations: + name: Create project combinations + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install locally + run: python3 -m pip install -e . + + - uses: cachix/install-nix-action@v30 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: list all test sessions + id: set-matrix + run: | + projects=$(opp_env list --flat | grep -P '^(?!(omnetpp|inet|simulte|simu5g|veins))') + if [ -z "$projects" ]; then + echo "::set-output name=matrix::[]" + else + # Create a JSON array directly + json_array=$(echo "$projects" | awk '{printf "\"%s\",", $0}' | sed 's/,$//') + json_array="[$json_array]" + echo "::set-output name=matrix::$json_array" + fi + - name: Debug output + run: echo "${{ steps.set-matrix.outputs.matrix }}" + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + smoketests: + needs: create-combinations + strategy: + fail-fast: false + matrix: + projects: ${{ fromJson(needs.create-combinations.outputs.matrix) }} + name: ${{ matrix.projects }} + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install locally + run: python3 -m pip install -e . + + - uses: cachix/install-nix-action@v30 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: Xvfb + run: | + # Install Xvfb + sudo apt-get update + sudo apt-get install -y xvfb + # kludge: remove libc++ so that projects don't link with it + sudo apt remove --purge libc++1* + # Start Xvfb + Xvfb :99 -screen 0 1024x768x24 & + # Set DISPLAY variable + echo "DISPLAY=:99" >> $GITHUB_ENV + + - name: Run test + working-directory: tests + run: ./project_tester install ${{ matrix.projects }} + + - name: Show output + if: always() + run: | + echo "::group::Output" + cat tests/logs/${{ matrix.projects }}.out || echo '(no output)' + echo "::endgroup::" + + echo "::group::Error" + cat tests/logs/${{ matrix.projects }}.err || echo '(no output)' + echo "::endgroup::" \ No newline at end of file diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index 1958d344..f23466dc 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -1,8 +1,8 @@ name: Publish opp_env Python distribution to PyPI on: - push: - tags: [ '*' ] # only publish to PyPI on tag push + # push: + # tags: [ '*' ] # only publish to PyPI on tag push workflow_dispatch: jobs: diff --git a/.github/workflows/smoketest.yml b/.github/workflows/smoketest.yml index 7b51d190..16e1f79e 100644 --- a/.github/workflows/smoketest.yml +++ b/.github/workflows/smoketest.yml @@ -1,13 +1,13 @@ name: Smoke test on: - push: - branches: - - main - - dev - pull_request: - branches: - - main + # push: + # branches: + # - main + # - dev + # pull_request: + # branches: + # - main workflow_dispatch: jobs: