CI 10000 #7996
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 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
push: | |
schedule: | |
- cron: '0 1 * * *' | |
env: | |
BUNDLE_RETRY: 6 | |
BUNDLE_JOBS: 4 | |
jobs: | |
diffend: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.3 | |
bundler-cache: true | |
- name: Install Diffend plugin | |
run: bundle plugin install diffend | |
- name: Bundle Secure | |
run: bundle secure | |
karafka-checksum: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Run Karafka license checksum verification | |
env: | |
KARAFKA_PRO_USERNAME: ${{ secrets.KARAFKA_PRO_USERNAME }} | |
KARAFKA_PRO_PASSWORD: ${{ secrets.KARAFKA_PRO_PASSWORD }} | |
KARAFKA_PRO_VERSION: ${{ secrets.KARAFKA_PRO_VERSION }} | |
KARAFKA_PRO_LICENSE_CHECKSUM: ${{ secrets.KARAFKA_PRO_LICENSE_CHECKSUM }} | |
run: bin/verify_license_integrity | |
coditsu: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Run Coditsu | |
run: \curl -sSL https://api.coditsu.io/run/ci | bash | |
# We do not split RSpec specs to OSS and Pro like integrations because they do not overload | |
# Kafka heavily, compute total coverage for specs and are fast enough | |
specs: | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
needs: diffend | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: | |
- '3.3' | |
- '3.2' | |
- '3.1' | |
- '3.0' | |
include: | |
- ruby: '3.3' | |
coverage: 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install package dependencies | |
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS" | |
- name: Start Kafka with docker compose | |
run: | | |
docker compose up -d || (sleep 5 && docker compose up -d) | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{matrix.ruby}} | |
bundler-cache: true | |
bundler: 'latest' | |
- name: Wait for Kafka | |
run: | | |
bundle exec bin/wait_for_kafka | |
- name: Run all specs | |
env: | |
GITHUB_COVERAGE: ${{matrix.coverage}} | |
run: bin/rspecs | |
integrations_oss: | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
needs: diffend | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: | |
- '3.3' | |
- '3.2' | |
- '3.1' | |
- '3.0' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install package dependencies | |
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS" | |
- name: Remove libzstd-dev to check no supported compressions | |
run: sudo apt-get -y remove libzstd-dev | |
- name: Start Kafka with docker compose | |
run: | | |
docker compose up -d || (sleep 5 && docker compose up -d) | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
# Do not use cache here as we run bundle install also later in some of the integration | |
# tests and we need to be able to run it without cache | |
5F5A | # |
# We also want to check that librdkafka is compiling as expected on all versions of Ruby | |
ruby-version: ${{matrix.ruby}} | |
bundler: 'latest' | |
- name: Install latest Bundler | |
run: | | |
gem install bundler --no-document | |
gem update --system --no-document | |
bundle config set without 'tools benchmarks docs' | |
- name: Bundle install | |
run: | | |
bundle config set without development | |
bundle install --jobs 4 --retry 3 | |
- name: Wait for Kafka | |
run: | | |
bundle exec bin/wait_for_kafka | |
- name: Run OSS integration tests | |
run: bin/integrations --exclude '/pro' | |
integrations_pro: | |
timeout-minutes: 40 | |
runs-on: ubuntu-latest | |
needs: diffend | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: | |
- '3.3' | |
- '3.2' | |
- '3.1' | |
- '3.0' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install package dependencies | |
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS" | |
- name: Start Kafka with docker compose | |
run: | | |
docker compose up -d || (sleep 5 && docker compose up -d) | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{matrix.ruby}} | |
bundler: 'latest' | |
- name: Install latest Bundler | |
run: | | |
gem install bundler --no-document | |
gem update --system --no-document | |
bundle config set without 'tools benchmarks docs' | |
- name: Bundle install | |
run: | | |
bundle config set without development | |
bundle install --jobs 4 --retry 3 | |
- name: Wait for Kafka | |
run: | | |
bundle exec bin/wait_for_kafka | |
- name: Run Pro integration tests | |
env: | |
KARAFKA_PRO_LICENSE_TOKEN: ${{ secrets.KARAFKA_PRO_LICENSE_TOKEN }} | |
KARAFKA_PRO_USERNAME: ${{ secrets.KARAFKA_PRO_USERNAME }} | |
KARAFKA_PRO_PASSWORD: ${{ secrets.KARAFKA_PRO_PASSWORD }} | |
KARAFKA_PRO_VERSION: ${{ secrets.KARAFKA_PRO_VERSION }} | |
KARAFKA_PRO_LICENSE_CHECKSUM: ${{ secrets.KARAFKA_PRO_LICENSE_CHECKSUM }} | |
run: bin/integrations '/pro' |