-
Notifications
You must be signed in to change notification settings - Fork 0
148 lines (120 loc) · 4.48 KB
/
ci.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: CI Pipeline
on:
# Runs the pipeline on every push or a pull request to the main branch
push:
branches:
- main
paths-ignore:
- '**.md'
- '**.png'
- '**.jpg'
pull_request:
branches:
- main
env:
TO_BUILD_DOCKER: 'true'
PREV_IMAGE_TAG: '3bf89b5864b7471becfec8bf90f2861aaaa3e90f'
jobs:
## Linting the code
lint:
name: Code Quality Checks (Linting)
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 # Linter for Python
- name: Run Linter (flake8) on all Python Files
run: |
flake8 .
## Building the docker image
docker_build:
name: Build and Push Docker Images
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
if: ${{ env.TO_BUILD_DOCKER == 'true' }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
if: ${{ env.TO_BUILD_DOCKER == 'true' }}
- name: Login to Docker Hub
uses: docker/login-action@v2
if: ${{ env.TO_BUILD_DOCKER == 'true' }}
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build and Push Docker image for Server
if: ${{ env.TO_BUILD_DOCKER == 'true' }}
run: |
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/logicgpt:${{ github.sha }} .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/logicgpt:${{ github.sha }}
# - name: Build and Push Docker image for Ollama
# if: ${{ env.TO_BUILD_DOCKER == 'true' }}
# run: |
# cd ollama # Navigate to the Ollama directory
# docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/ollama:${{ github.sha }} .
# docker push ${{ secrets.DOCKERHUB_USERNAME }}/ollama:${{ github.sha }}
# Clean up Docker system after building and pushing the image
- name: Clean up Docker
if: ${{ env.TO_BUILD_DOCKER == 'true' }}
run: |
docker system prune -af --volumes
# ## Download model and test API in one job
# test_api_with_model:
# name: Download Model and Test API
# runs-on: ubuntu-latest
# needs: docker_build # comments this if not running docker_build ($TO_BUILD_DOCKER = false)
# steps:
# - name: Checkout Code
# uses: actions/checkout@v3
# - name: Install gdown
# run: |
# python -m pip install gdown
# - name: Download model from Google Drive
# run: |
# mkdir -p model_files
# gdown 1WGmDmHXTCmIqYHL-Jla3GUgtz_yFgzk1 -O ./model_files/unsloth.Q4_K_M.gguf
# - name: Set correct permissions for model files
# run: |
# chmod -R 755 ./model_files
# - name: Verify model file in repo context
# run: |
# if [ -f ./model_files/unsloth.Q4_K_M.gguf ]; then
# echo "Model file verified in repo context."
# else
# echo "Model file not found in repo context."
# exit 1
# fi
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v2
# - name: Login to Docker Hub
# uses: docker/login-action@v2
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_PASSWORD }}
# - name: Run the tests on the API
# run: |
# DOCKERHUB_USERNAME="${{ secrets.DOCKERHUB_USERNAME }}"
# if [ $TO_BUILD_DOCKER == 'true' ]; then
# # dynamically set the image tags based on the commit ID
# DOCKER_IMAGE_TAG=$(git rev-parse HEAD)
# else
# # Define the Docker image tag manually
# DOCKER_IMAGE_TAG=$PREV_IMAGE_TAG
# fi
# # Write the variables to the .env file
# echo "DOCKERHUB_USERNAME=$DOCKERHUB_USERNAME" > .env
# echo "DOCKER_IMAGE_TAG=$DOCKER_IMAGE_TAG" >> .env
# # Add the Ollama image tag as well
# echo "OLLAMA_IMAGE_TAG=$DOCKER_IMAGE_TAG" >> .env
# # Verify the contents of the .env file
# cat .env
# # Start Docker Compose with the defined variables
# docker compose -f compose_test.yaml up --build