From 69c5800f9e50c774e75dbe227e5b66fe01c21959 Mon Sep 17 00:00:00 2001 From: DriesSchaumont <5946712+DriesSchaumont@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:40:15 +0100 Subject: [PATCH] Add component test CI --- .github/workflows/test.yaml | 99 +++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..9b12bd89 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,99 @@ +name: Component Testing + +on: + pull_request: + push: + branches: [ '**' ] + +jobs: + run_ci_check_job: + runs-on: ubuntu-latest + outputs: + run_ci: ${{ steps.github_cli.outputs.check }} + steps: + - name: 'Check if branch has an existing pull request and the trigger was a push' + id: github_cli + run: | + pull_request=$(gh pr list -R ${{ github.repository }} -H ${{ github.ref_name }} --json url --state open --limit 1 | jq '.[0].url') + # If the branch has a PR and this run was triggered by a push event, do not run + if [[ "$pull_request" != "null" && "$GITHUB_REF_NAME" != "main" && "${{ github.event_name == 'push' }}" == "true" && "${{ !contains(github.event.head_commit.message, 'ci force') }}" == "true" ]]; then + echo "check=false" >> $GITHUB_OUTPUT + else + echo "check=true" >> $GITHUB_OUTPUT + fi + + # phase 1 + list: + needs: run_ci_check_job + runs-on: ubuntu-latest + if: ${{ needs.run_ci_check_job.outputs.run_ci == 'true' }} + + outputs: + matrix: ${{ steps.set_matrix.outputs.matrix }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: viash-io/viash-actions/setup@v5 + + - name: Check if all config can be parsed if there is no unicode support + run: | + LANG=C viash ns list > /dev/null + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v42 + with: + separator: ";" + diff_relative: true + + - id: ns_list + uses: viash-io/viash-actions/ns-list@v5 + with: + platform: docker + format: json + query_namespace: ^(?!workflows) + + - id: ns_list_filtered + uses: viash-io/viash-actions/project/detect-changed-components@v5 + with: + input_file: "${{ steps.ns_list.outputs.output_file }}" + + - id: set_matrix + run: | + echo "matrix=$(jq -c '[ .[] | + { + "name": (.functionality.namespace + "/" + .functionality.name), + "config": .info.config, + "dir": .info.config | capture("^(?