name: chatbot on: pull_request: branches: - main paths: - ./recipes/common/Makefile.common - ./recipes/natural_language_processing/chatbot/** - .github/workflows/chatbot.yaml - ./recipes/natural_language_processing/chatbot/app/** - ./renovate.json push: branches: - main paths: - ./recipes/common/Makefile.common - ./recipes/natural_language_processing/chatbot/** - .github/workflows/chatbot.yaml workflow_dispatch: env: REGISTRY: ghcr.io IMAGE_NAME: chatbot jobs: chatbot-build-and-push: if: "!contains(github.event.pull_request.labels.*.name, 'hold-tests')" runs-on: ubuntu-24.04 permissions: contents: read packages: write services: registry: image: registry:2.8.3 ports: - 5000:5000 steps: - uses: actions/checkout@v4.1.7 - name: Set up Python uses: actions/setup-python@v5.1.1 with: python-version: '3.11' - name: Install opentelemetry dependencies run: | pip install --no-cache-dir opentelemetry-sdk opentelemetry-exporter-otlp opentelemetry-instrumentation - name: Download OpenTelemetry Collector Contrib run: | wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.103.0/otelcol-contrib_0.103.0_linux_amd64.tar.gz tar -xvf otelcol-contrib_0.103.0_linux_amd64.tar.gz - name: Write secrets to files run: | echo "${{ secrets.ROSA_OTEL_CACERT }}" > /tmp/ca.crt echo "${{ secrets.ROSA_OTEL_SERVER_CRT }}" > /tmp/server.crt echo "${{ secrets.ROSA_OTEL_SERVER_KEY }}" > /tmp/server.key - name: Configure OpenTelemetry Collector run: | echo ' receivers: otlp: protocols: grpc: http: exporters: otlphttp: endpoint: "${{ secrets.ROSA_OTEL_ENDPOINT }}" tls: insecure: false cert_file: /tmp/server.crt key_file: /tmp/server.key ca_file: /tmp/ca.crt debug: verbosity: detailed service: pipelines: traces: receivers: [otlp] exporters: [debug, otlphttp] ' > otel-collector-config.yaml - name: Run OpenTelemetry Collector run: | ./otelcol-contrib --config otel-collector-config.yaml > otel-collector.log 2>&1 & - name: Install qemu dependency run: | sudo apt-get update sudo apt-get install -y qemu-user-static - name: Start job trace run: | export WORKFLOW_NAME="chatbot" export JOB_NAME="chatbot-build-and-push" export TRACE_ACTION="start" python ci/trace-steps.py - name: Build Image id: build_image uses: redhat-actions/buildah-build@v2.13 with: image: ${{ env.REGISTRY }}/containers/${{ env.IMAGE_NAME }} tags: latest platforms: linux/amd64, linux/arm64 containerfiles: ./recipes/natural_language_processing/${{ env.IMAGE_NAME }}/app/Containerfile context: recipes/natural_language_processing/${{ env.IMAGE_NAME }}/app - name: Install Dependencies working-directory: ./recipes/natural_language_processing/${{ env.IMAGE_NAME }} run: make install - name: Download model working-directory: ./models run: make download-model-granite - name: Run Functional Tests shell: bash run: make functional-tests working-directory: ./recipes/natural_language_processing/${{ env.IMAGE_NAME }} - name: Login to Registry if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: redhat-actions/podman-login@v1.7 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Push Image id: push_image if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: redhat-actions/push-to-registry@v2.8 with: image: ${{ steps.build_image.outputs.image }} tags: ${{ steps.build_image.outputs.tags }} registry: ${{ env.REGISTRY }} - name: End job trace run: | export WORKFLOW_NAME="chatbot" export JOB_NAME="chatbot-build-and-push" export TRACE_ACTION="end" python ci/trace-steps.py