ci #107
This file contains hidden or 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: ci | |
| on: | |
| push: | |
| branches: ['**'] | |
| tags: ['@*/*@*'] | |
| workflow_dispatch: | |
| inputs: | |
| run_tests: | |
| description: "Run tests" | |
| default: false | |
| required: false | |
| type: boolean | |
| additional_tests: | |
| description: "Run additional tests" | |
| default: false | |
| required: false | |
| type: boolean | |
| build_krawler: | |
| description: "Build krawler" | |
| default: false | |
| required: false | |
| type: boolean | |
| build_jobs: | |
| description: "Build jobs" | |
| default: false | |
| required: false | |
| type: boolean | |
| build_jobs_input: | |
| description: "Jobs to build, space-separated <package>[:<variant>]. Leave empty for auto-detection." | |
| required: false | |
| default: "" | |
| build_docs: | |
| description: "Build docs" | |
| default: false | |
| required: false | |
| type: boolean | |
| jobs: | |
| run_tests: | |
| name: Run tests | |
| if: ${{ | |
| github.event_name == 'workflow_dispatch' && inputs.run_tests || | |
| github.event_name == 'push' && github.ref_type == 'branch' && !contains(github.event.head_commit.message, 'skip tests') | |
| }} | |
| runs-on: ubuntu-22.04 | |
| services: | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh ${{ github.job }} | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh | |
| - name: Run tests | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/run_tests.sh -s -r ${{ github.job }} | |
| additional_tests: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [ 20, 22 ] | |
| mongo: [ 7, 8 ] | |
| name: Additional tests | |
| if: ${{ | |
| github.event_name == 'workflow_dispatch' && inputs.additional_tests || | |
| github.event_name == 'push' && github.ref_type == 'branch' && contains(github.event.head_commit.message, 'additional tests') | |
| }} | |
| runs-on: ubuntu-22.04 | |
| services: | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh ${{ github.job }} | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh -n ${{ matrix.node }} | |
| - name: Run tests | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/run_tests.sh -n ${{ matrix.node }} -m ${{ matrix.mongo }} | |
| build_krawler: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [ 20 ] | |
| debian: [ 'bookworm' ] | |
| name: Build krawler | |
| if: ${{ | |
| github.event_name == 'workflow_dispatch' && inputs.build_krawler || | |
| github.event_name == 'push' && github.ref_type == 'branch' && !contains(github.event.head_commit.message, 'skip krawler') | |
| }} | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh ${{ github.job }} | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh | |
| - name: Build krawler | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/build_krawler.sh -n ${{ matrix.node }} -d ${{ matrix.debian }} -p -r ${{ github.job }} | |
| detect_jobs: | |
| name: Detect jobs | |
| if: ${{ | |
| github.event_name == 'workflow_dispatch' && inputs.build_jobs || | |
| github.event_name == 'push' && github.ref_type == 'branch' && !contains(github.event.head_commit.message, 'skip jobs') | |
| }} | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| matrix: ${{ steps.compute.outputs.matrix }} | |
| has_jobs: ${{ steps.compute.outputs.has_jobs }} | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Detect jobs | |
| id: compute | |
| env: | |
| GITHUB_EVENT_NAME: ${{ github.event_name }} | |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} | |
| GITHUB_EVENT_AFTER: ${{ github.event.after }} | |
| INPUT_JOBS: ${{ github.event.inputs.build_jobs_input }} | |
| run: bash ./scripts/detect_jobs.sh | |
| build_jobs: | |
| needs: detect_jobs | |
| if: needs.detect_jobs.outputs.has_jobs == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: ${{ fromJSON(needs.detect_jobs.outputs.matrix) }} | |
| name: Build job (${{ matrix.package }}${{ matrix.variant && format(' / {0}', matrix.variant) || '' }}) | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh ${{ github.job }} | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh | |
| - name: Build job | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/build_krawler_job.sh -j ${{ matrix.package }} ${{ matrix.variant && format('-v {0}', matrix.variant) || '' }} -p -r "${{ github.job }} ${{ matrix.package }}" | |
| build_docs: | |
| name: Build doc | |
| if: ${{ | |
| github.event_name == 'workflow_dispatch' && inputs.build_docs || | |
| github.event_name == 'push' && github.ref_type == 'branch' && contains(github.event.head_commit.message, 'doc') | |
| }} | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh ${{ github.job }} | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh -k nokli | |
| - name: Build docs | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/build_docs.sh -p -r ${{ github.job }} | |
| detect_release: | |
| name: Detect release | |
| if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| target: ${{ steps.compute.outputs.target }} | |
| package: ${{ steps.compute.outputs.package }} | |
| version: ${{ steps.compute.outputs.version }} | |
| matrix: ${{ steps.compute.outputs.matrix }} | |
| has_jobs: ${{ steps.compute.outputs.has_jobs }} | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Detect release | |
| id: compute | |
| env: | |
| GITHUB_REF_NAME: ${{ github.ref_name }} | |
| run: bash ./scripts/detect_release.sh | |
| release_krawler: | |
| needs: detect_release | |
| if: needs.detect_release.outputs.target == 'krawler' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [ 20 ] | |
| debian: [ 'bookworm' ] | |
| name: Release krawler (${{ needs.detect_release.outputs.version }}) | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh build_krawler | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh | |
| - name: Build & publish krawler | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/build_krawler.sh -n ${{ matrix.node }} -d ${{ matrix.debian }} -p -r ${{ github.job }} | |
| release_jobs: | |
| needs: detect_release | |
| if: needs.detect_release.outputs.has_jobs == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: ${{ fromJSON(needs.detect_release.outputs.matrix) }} | |
| name: Release job (${{ matrix.package }}${{ matrix.variant && format(' / {0}', matrix.variant) || '' }}) | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Init runner | |
| run: bash ./scripts/init_runner.sh build_jobs | |
| - name: Setup workspace | |
| env: | |
| KALISIO_GITHUB_URL: ${{ secrets.KALISIO_GITHUB_URL }} | |
| run: bash ./scripts/setup_workspace.sh | |
| - name: Build & publish job | |
| env: | |
| SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} | |
| run: bash ./scripts/build_krawler_job.sh -j ${{ matrix.package }} ${{ matrix.variant && format('-v {0}', matrix.variant) || '' }} -p -r "${{ github.job }} ${{ matrix.package }}" |