Presubmit run triggered by Rolandw31 #964
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: presubmit | |
| run-name: Presubmit run triggered by ${{ github.actor }} | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| jobs: | |
| bazel-build-test: | |
| name: Bazel Telemetry Checks | |
| runs-on: ubuntu-latest | |
| # Define environment variables from secrets at the job level | |
| env: | |
| POSTGRES_USER: ${{ secrets.POSTGRES_USER }} | |
| POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} | |
| ELECTRIC_PWD: ${{ secrets.ELECTRIC_PWD }} | |
| GRAFANA_PWD: ${{ secrets.GRAFANA_PWD }} | |
| ANALYSIS_PWD: ${{ secrets.ANALYSIS_PWD }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| - name: Get Bazel | |
| uses: bazel-contrib/setup-bazel@0.8.1 | |
| with: | |
| # Avoid downloading Bazel every time. | |
| bazelisk-cache: true | |
| # Store build cache per workflow. | |
| disk-cache: ${{ github.workflow }} | |
| # Share repository cache between workflows. | |
| repository-cache: true | |
| # Docker setup for integration tests | |
| - name: Create Docker network and volumes | |
| run: | | |
| docker network create telemetry_network || true | |
| docker volume create grafana_storage || true | |
| docker volume create telemetry_db || true | |
| docker volume create kafka_data || true | |
| - name: Create .env file for Docker | |
| run: | | |
| cat > telemtry/.env << EOF | |
| POSTGRES_USER=${{ secrets.POSTGRES_USER }} | |
| POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} | |
| ELECTRIC_PWD=${{ secrets.ELECTRIC_PWD }} | |
| GRAFANA_PWD=${{ secrets.GRAFANA_PWD }} | |
| ANALYSIS_PWD=${{ secrets.ANALYSIS_PWD }} | |
| EOF | |
| - name: Start Kafka services | |
| working-directory: telemtry/stack/kafka | |
| run: docker compose up -d --build --wait | |
| - name: Start Ingest services | |
| working-directory: telemtry/stack/ingest | |
| run: docker compose up -d --build --wait | |
| - name: Wait for services to be healthy | |
| run: | | |
| echo "Waiting for services to be ready..." | |
| sleep 10 | |
| docker ps | |
| - name: Run Integration Tests | |
| run: | | |
| bazel test //telemtry/... \ | |
| --test_output=errors \ | |
| --config=ci \ | |
| --remote_header=x-buildbuddy-api-key=${{ secrets.BUILD_BUDDY_API_KEY }} \ | |
| --test_tag_filters=integration \ | |
| --test_env=POSTGRES_USER \ | |
| --test_env=POSTGRES_PASSWORD \ | |
| --test_env=ELECTRIC_PWD \ | |
| --test_env=GRAFANA_PWD \ | |
| --test_env=ANALYSIS_PWD | |
| - name: Teardown Docker services | |
| if: always() | |
| run: | | |
| cd telemtry/stack/ingest && docker compose down -v --remove-orphans || true | |
| cd telemtry/stack/kafka && docker compose down -v --remove-orphans || true | |
| docker network rm telemetry_network || true | |
| rm -f telemtry/.env || true | |
| check-runner: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| runner-label: ${{ steps.set-runner.outputs.runner-label }} | |
| steps: | |
| - name: Set runner | |
| id: set-runner | |
| run: | | |
| runners=$(curl -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.REPO_ACCESS_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/actions/runners") | |
| available=$(echo "$runners" | jq '.runners[] | select(.status == "online" and .busy == false and .labels[] .name == "self-hosted")') | |
| if [ -n "$available" ]; then | |
| echo "runner-label=self-hosted" >> $GITHUB_OUTPUT | |
| else | |
| echo "runner-label=ubuntu-latest" >> $GITHUB_OUTPUT | |
| fi | |
| bazel-firmware-checks: | |
| name: Bazel Firmware Checks | |
| needs: check-runner | |
| runs-on: ${{ needs.check-runner.outputs.runner-label }} | |
| permissions: | |
| actions: read | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Get Bazel | |
| uses: bazel-contrib/setup-bazel@0.8.1 | |
| with: | |
| bazelisk-cache: true | |
| disk-cache: ${{ github.workflow }} | |
| repository-cache: true | |
| - name: Build All | |
| run: bazel build //... --build_tag_filters=stm32_firmware --config=ci --remote_header=x-buildbuddy-api-key=${{secrets.BUILD_BUDDY_API_KEY}} | |
| - name: Run Unit Tests (no Docker required) | |
| run: | | |
| bazel test //... \ | |
| --config=ci \ | |
| --remote_header=x-buildbuddy-api-key=${{ secrets.BUILD_BUDDY_API_KEY }} \ | |
| --test_output=errors \ | |
| --test_tag_filters=-integration,-docker,-requirements |