-
Notifications
You must be signed in to change notification settings - Fork 4
132 lines (109 loc) · 3.7 KB
/
ci.yml
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
# Name of the workflow
name: CI Pipeline
# Events that trigger the workflow
on:
push:
branches: [ main, develop, mtoof ] # Include mtoof branch
pull_request:
branches: [ main, develop, mtoof ] # Include mtoof branch
# Define jobs in the workflow
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4 # Checkout the repository code
# Set up Python environment
- name: Set up Python 3.11
uses: actions/setup-python@v3
with:
python-version: 3.11 # Use Python version 3.11
# Install build dependencies
- name: Install build dependencies
run: |
python -m pip install --upgrade pip # Upgrade pip
pip install setuptools==58.0.4 wheel # Ensure setuptools and wheel are installed
# Install project dependencies
- name: Install dependencies
run: pip install -r requirements.txt # Install dependencies from requirements.txt
test:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v3
with:
python-version: 3.11
# Install build dependencies
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools==58.0.4 wheel
- name: Install dependencies
run: pip install -r requirements.txt
# Run test suite
- name: Run tests
run: pytest # Execute tests using pytest
security:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v3
with:
python-version: 3.11
# Install build dependencies
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools==58.0.4 wheel
- name: Install dependencies
run: pip install -r requirements.txt
# Run security checks
- name: Run security checks
run: |
pip install bandit # Install Bandit for security checks
bandit -r . # Run Bandit on the codebase
build:
needs: [setup, security]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v3
with:
python-version: 3.11
# Install build dependencies
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools==58.0.4 wheel
- name: Install dependencies
run: pip install -r requirements.txt
# Build the Docker image
- name: Build Docker image
run: docker build -t transcendence .
run: docker build -t transcendence .
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
# Log in to Docker Hub
- name: Deploy to Docker Hub
env:
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }}
run: |
echo "${DOCKER_HUB_PASSWORD}" | docker login -u "${DOCKER_HUB_USERNAME}" --password-stdin
docker tag transcendence ${DOCKER_HUB_USERNAME}/transcendence:latest
docker push ${DOCKER_HUB_USERNAME}/transcendence:latest
# Conditional deployment based on branch
- name: Deploy to server
run: ssh user@server "docker pull ${DOCKER_HUB_USERNAME}/transcendence:latest && docker-compose up --build -d"