-
Notifications
You must be signed in to change notification settings - Fork 0
executable file
·136 lines (120 loc) · 3.93 KB
/
deploy.yml
File metadata and controls
executable file
·136 lines (120 loc) · 3.93 KB
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
name: Build, Test and Deploy
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
test:
name: Test
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
checks: write
pull-requests: write
strategy:
fail-fast: false
matrix:
python-version: ["3.11"]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
id: python-setup
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Load cached Poetry installation
id: poetry-cache
uses: actions/cache@v4
with:
path: ~/.local
key: poetry-0
- name: Install and configure Poetry
if: steps.poetry-cache.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1
with:
virtualenvs-in-project: true
- name: Load cached venv
id: dependencies-cache
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.python-setup.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install python dependencies
if: steps.dependencies-cache.outputs.cache-hit != 'true'
run: |
poetry install --no-interaction --no-root
- name: Load cached NLTK data
id: nltk-cache
uses: actions/cache@v4
with:
path: /usr/share/nltk_data
key: nltk-data-${{ hashFiles('scripts/download_nltk.sh') }}
- name: Download NLTK data
if: steps.nltk-cache.outputs.cache-hit != 'true'
env:
NLTK_DATA: /usr/share/nltk_data
run: |
./scripts/download_nltk.sh
- name: Load cached models
id: models-cache
uses: actions/cache@v4
with:
path: ./evaluation_function/models
key: models-${{ hashFiles('scripts/download_models.sh') }}
- name: Download models
if: steps.models-cache.outputs.cache-hit != 'true'
env:
MODEL_PATH: ./evaluation_function/models
run: |
./scripts/download_models.sh
# TODO: add linting / black / flake8
# - name: Lint with flake8
# run: |
# source .venv/bin/activate
# # stop the build if there are Python syntax errors or undefined names
# flake8 ./evaluation_function --count --select=E9,F63,F7,F82 --show-source --statistics
# # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
# flake8 ./evaluation_function --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Run tests
if: always()
run: |
source .venv/bin/activate
pytest --junit-xml=./reports/pytest.xml --tb=auto -v
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: ./reports/pytest.xml
if-no-files-found: warn
build:
name: Build Docker Image
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/build.yml@main
needs: test
with:
platforms: "linux/x86_64"
permissions:
contents: read
id-token: write
packages: write
deploy:
name: Deploy to Lambda Feedback
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@main
needs: test
with:
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-python"
build-platforms: "linux/x86_64"
permissions:
contents: read
id-token: write
packages: write
secrets:
aws-key-id: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_ID }}
aws-secret-key: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_SECRET}}
function-admin-api-key: ${{ secrets.FUNCTION_ADMIN_API_KEY}}