| 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 | |