-
Notifications
You must be signed in to change notification settings - Fork 115
149 lines (129 loc) · 4.55 KB
/
chatbot.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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/[email protected]
- name: Set up Python
uses: actions/[email protected]
with:
python-version: '3.11'
- name: Install opentelemetry dependencies
run: |
pip install --no-cache-dir opentelemetry-sdk opentelemetry-exporter-otlp
- 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:
metrics:
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 Metric
run: |
export WORKFLOW_NAME="chatbot"
export JOB_NAME="chatbot-build-and-push"
export METRIC_ACTION="start"
python ci/metrics-generate.py
- name: Build Image
id: build_image
uses: redhat-actions/[email protected]
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/[email protected]
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/[email protected]
with:
image: ${{ steps.build_image.outputs.image }}
tags: ${{ steps.build_image.outputs.tags }}
registry: ${{ env.REGISTRY }}
- name: End Metric
run: |
export WORKFLOW_NAME="chatbot"
export JOB_NAME="chatbot-build-and-push"
export METRIC_ACTION="end"
python ci/metrics-generate.py