-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (115 loc) · 4.41 KB
/
run.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
133
134
135
name: Run Improved Intra Server
on:
push:
branches: [ main, github-actions ]
pull_request:
branches: [ '*' ]
workflow_call:
workflow_dispatch:
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Link /opt/improved_intra_server to the repository
run: |
ln -s $GITHUB_WORKSPACE /opt/improved_intra_server
- name: Update and install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
nginx \
openssl \
dos2unix
- name: Install PostgreSQL dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
wget \
lsb-release \
gnupg2
- name: Add PostgreSQL repository
run: |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- name: Install PostgresQL
run: |
sudo apt-get update
sudo apt-get install -y \
postgresql
- name: Start PostgreSQL
run: |
sudo service postgresql start
- name: Set up PostgreSQL
run: |
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo -u postgres psql -c "CREATE DATABASE \"iintra\" WITH OWNER \"postgres\" ENCODING 'UTF8';"
- name: Install Python3
run: |
sudo apt-get update
sudo apt-get install -y \
python3 \
python3-pip \
python3-dev \
python-setuptools \
libpq-dev \
python3-virtualenv \
virtualenv
- name: Initialize the virtual environment
working-directory: /opt/improved_intra_server
run: |
virtualenv -p python3 .venv
- name: Install Python dependencies
working-directory: /opt/improved_intra_server
run: |
source .venv/bin/activate
.venv/bin/pip install -r requirements.txt
- name: Set up nginx as reverse-proxy
working-directory: /opt/improved_intra_server
run: |
sudo cp ./useful/*.nginx.snippet.conf /etc/nginx/snippets/
sudo rm -f /etc/nginx/sites-enabled/default
sudo mkdir -p /etc/nginx/ssl
sudo openssl req -newkey rsa:2048 -x509 -days 365 -nodes \
-keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.pem \
-subj "/C=NL/ST=North-Holland/L=Amsterdam/O=ImprovedIntra/CN=iintra.freekb.es/"
sudo cp ./useful/nginx.example.ssl.conf /etc/nginx/sites-available/iintra.freekb.es.conf
sudo ln -s /etc/nginx/sites-available/iintra.freekb.es.conf /etc/nginx/sites-enabled/iintra.freekb.es.conf
- name: Test nginx configuration
run: |
cat /etc/nginx/sites-available/iintra.freekb.es.conf
cat /etc/nginx/snippets/*.nginx.snippet.conf
sudo nginx -t
- name: Restart nginx
run: |
sudo /etc/init.d/nginx restart
- name: Install testing dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
curl \
net-tools \
netcat
- name: Prepare for Improved Intra server start
working-directory: /opt/improved_intra_server
run: |
dos2unix /opt/improved_intra_server/gunicorn.sh
mkdir -p /opt/improved_intra_server/logs
cp .secret.env.example .secret.env
sudo chown -R www-data:www-data /opt/improved_intra_server
- name: Start Improved Intra server
working-directory: /opt/improved_intra_server
shell: bash
run: |
bash /opt/improved_intra_server/gunicorn.sh &
timeout 3m bash -c 'until nc -w 10 127.0.0.1 8000; do sleep 1; done'
netstat -tulpn
curl -L http://localhost:8000/ --insecure --verbose --fail
curl -L https://iintra.freekb.es/ --insecure --verbose --resolve 'iintra.freekb.es:443:127.0.0.1' --fail
- name: Print logs
if: always()
working-directory: /opt/improved_intra_server
run: |
cat /opt/improved_intra_server/logs/server.log || true
cat /opt/improved_intra_server/logs/error.log || true
cat /opt/improved_intra_server/logs/access.log || true