Skip to content

Commit 87254c1

Browse files
committed
LP#2141836: Run Perl live checks in github workflows
Release-note: Run automated perl live tests regularly. Signed-off-by: Jane Sandberg <js7389@princeton.edu>
1 parent bf3bfca commit 87254c1

1 file changed

Lines changed: 142 additions & 0 deletions

File tree

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
name: Run perl live tests
2+
on:
3+
push:
4+
paths:
5+
- '.github/workflows/**'
6+
- 'configure.ac'
7+
- 'Makefile.am'
8+
- 'Open-ILS/**'
9+
pull_request:
10+
paths:
11+
- '.github/workflows/**'
12+
- 'configure.ac'
13+
- 'Makefile.am'
14+
- 'Open-ILS/**'
15+
workflow_dispatch:
16+
17+
env:
18+
PGHOST: localhost
19+
PGPASSWORD: postgres
20+
PGPORT: 5432
21+
PGUSER: postgres
22+
23+
jobs:
24+
live:
25+
name: Run Live tests
26+
runs-on: ubuntu-24.04
27+
steps:
28+
- run: sudo apt-get update -y
29+
- name: accept default cpan configuration
30+
run: echo | sudo cpan
31+
- name: Delete the postgres cluster that comes with the github actions ubuntu image
32+
run: sudo pg_dropcluster --stop 16 main
33+
- name: Remove any postgres that is already installed in the github actions ubuntu image
34+
run: sudo apt remove -y postgres*
35+
- name: Install a syslog implementation
36+
run: sudo apt install -y rsyslog
37+
- name: Clone OpenSRF repository
38+
run: git clone --branch main git://git.evergreen-ils.org/OpenSRF.git
39+
- name: "OpenSRF: install dependencies"
40+
run: sudo make -f src/extras/Makefile.install ubuntu-noble
41+
working-directory: ./OpenSRF
42+
- name: "OpenSRF: configure and make"
43+
run: autoreconf -i && ./configure --prefix=/openils --sysconfdir=/openils/conf && make
44+
working-directory: ./OpenSRF
45+
- name: "OpenSRF: make install"
46+
run: sudo make install
47+
working-directory: ./OpenSRF
48+
- name: "OpenSRF: create and set up the opensrf Unix user environment"
49+
run: sudo useradd -m -s /bin/bash opensrf && echo "opensrf:opensrf" | sudo chpasswd && sudo chown -R opensrf:opensrf /openils && sudo sh -c "echo 'export PATH=$PATH:/openils/bin' >> /home/opensrf/.bashrc" && echo "/openils/bin" >> $GITHUB_PATH
50+
- name: "OpenSRF: Define your public and private OpenSRF domains"
51+
run: sudo sh -c "echo '127.0.0.1 private.localhost public.localhost' >> /etc/hosts"
52+
- name: "OpenSRF: Adjust the system dynamic library path"
53+
run: sudo sh -c "echo '/openils/lib' > /etc/ld.so.conf.d/opensrf.conf" && sudo ldconfig
54+
- name: "OpenSRF: Updating the OpenSRF configuration files"
55+
run: sudo cp redis-accounts.txt.example redis-accounts.txt
56+
working-directory: /openils/conf
57+
58+
- uses: actions/checkout@v4
59+
with:
60+
path: Evergreen
61+
- name: "Evergreen: install dependencies"
62+
run: sudo NO_CPAN_TEST=1 make -f Open-ILS/src/extras/Makefile.install ubuntu-noble && sudo NO_CPAN_TEST=1 make -f Open-ILS/src/extras/Makefile.install ubuntu-noble-developer
63+
working-directory: ./Evergreen
64+
- name: "Evergeen: Install AngularJS files for web staff client"
65+
run: npm ci && npm run build-prod
66+
working-directory: ./Evergreen/Open-ILS/web/js/ui/default/staff
67+
- name: "Evergeen: Install Angular files for web staff client"
68+
run: npm ci && npx ng build --configuration=production
69+
working-directory: ./Evergreen/Open-ILS/src/eg2
70+
- name: "Evergreen: configure and make"
71+
run: autoreconf -i && PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf && make
72+
working-directory: ./Evergreen
73+
- name: "Evergreen: install"
74+
run: sudo make install
75+
working-directory: ./Evergreen
76+
- name: "Evergreen: Change ownership of the Evergreen files"
77+
run: sudo chown -R opensrf:opensrf /openils
78+
working-directory: ./Evergreen
79+
- name: "Evergreen: Run ldconfig"
80+
run: sudo ldconfig
81+
working-directory: ./Evergreen
82+
- name: "Evergreen: Add Apache config files"
83+
run: >
84+
sudo cp Open-ILS/examples/apache_24/eg_24.conf /etc/apache2/sites-available/eg.conf &&
85+
sudo cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf &&
86+
sudo cp Open-ILS/examples/apache_24/eg_startup /etc/apache2/ &&
87+
sudo perl -pi -e 's/Require host 10.0.0.0\/8/Require all granted/g' /etc/apache2/sites-available/eg.conf &&
88+
sudo sh -c "echo '<IfModule mpm_prefork_module>' > /etc/apache2/mods-available/mpm_prefork.conf" &&
89+
sudo sh -c "echo ' StartServers 15' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
90+
sudo sh -c "echo ' MinSpareServers 5' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
91+
sudo sh -c "echo ' MaxSpareServers 15' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
92+
sudo sh -c "echo ' MaxRequestWorkers 75' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
93+
sudo sh -c "echo ' MaxConnectionsPerChild 500' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
94+
sudo sh -c "echo '</IfModule>' >> /etc/apache2/mods-available/mpm_prefork.conf" &&
95+
sudo mkdir -p /etc/apache2/ssl
96+
working-directory: ./Evergreen
97+
- name: "Evergreen: Openssl"
98+
run: sudo openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key -subj "/C=US/ST=GA/L=Athens/O=Evergreen/OU=Continuous Integration/CN=localhost.localdomain.org"
99+
working-directory: /etc/apache2/ssl
100+
- name: "Evergreen: print apache2.conf for debugging"
101+
run: cat /etc/apache2/apache2.conf
102+
- name: "Evergreen: print mpm_prefork for debugging"
103+
run: cat /etc/apache2/mods-available/mpm_prefork.conf
104+
- name: "Evergreen: Configure the Apache Web server"
105+
run: >
106+
sudo a2dismod mpm_event &&
107+
sudo a2enmod mpm_prefork &&
108+
sudo a2dissite 000-default &&
109+
sudo a2ensite eg.conf &&
110+
sudo chown opensrf /var/lock/apache2 &&
111+
sudo perl -pi -e 's/APACHE_RUN_USER=.*/APACHE_RUN_USER=opensrf/g' /etc/apache2/envvars &&
112+
sudo service apache2 restart
113+
- name: "Evergreen: Configure OpenSRF for the Evergreen application"
114+
run: sudo cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml && sudo cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
115+
- name: "Evergreen: Set up the PostgreSQL server"
116+
run: sudo NO_CPAN_TEST=1 make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-noble-17 && sudo service postgresql start && sudo -u postgres psql -c "CREATE ROLE evergreen WITH LOGIN SUPERUSER PASSWORD '$PGPASSWORD'"
117+
working-directory: ./Evergreen
118+
- name: "Evergreen: Creating the Evergreen database and schema"
119+
run: >
120+
sudo perl Open-ILS/src/support-scripts/eg_db_config --update-config
121+
--service all --create-database --create-schema --create-offline
122+
--user evergreen --password $PGPASSWORD --hostname $PGHOST --port $PGPORT
123+
--database evergreen --admin-user admin --admin-pass demo123
124+
--load-all-sample
125+
working-directory: ./Evergreen
126+
- name: "Evergreen: remove comment separators from opensrf_core"
127+
run: sudo perl -pi -e 's/<!--\s+=+\s+-->/\n/g' /openils/conf/opensrf_core.xml
128+
- name: "Evergreen: comment ejabberd config from opensrf_core"
129+
run: sudo perl -0777 -pi -e 's/<!-- +Ejabberd +-->((?:\n|.)*?>)(?:\n(\s*)){2}/<!--\1-->\n\n/igs' /openils/conf/opensrf_core.xml
130+
- name: "Evergreen: add redis config to opensrf_core"
131+
run: sudo perl -0777 -pi -e 's/<!-- Redis -->\n *?<!--((?:\n|.)*?)-->\n/\1/igs' /openils/conf/opensrf_core.xml
132+
- name: "Evergreen: Starting evergreen"
133+
run: sudo service redis-server restart && sudo service memcached restart && sudo -u opensrf sh -c 'PATH=$PATH:/openils/bin osrf_control --localhost --restart-all'
134+
- name: "Evergeen: Run autogen"
135+
run: sudo -u opensrf sh -c 'export PATH=$PATH:/openils/bin && autogen.sh'
136+
- name: "Evergreen: Restart httpd"
137+
run: "sudo service apache2 restart"
138+
- name: "Evergreen: try to run the patron loader for debugging"
139+
run: "export PATH=$PATH:/openils/bin && patron_loader.pl -h "
140+
- name: "Evergreen: Run live tests"
141+
run: sudo PATH=$PATH:/openils/bin make livecheck
142+
working-directory: ./Evergreen/Open-ILS/src/perlmods

0 commit comments

Comments
 (0)