|
| 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