Skip to content

Brotli compression support #266

Brotli compression support

Brotli compression support #266

Workflow file for this run

name: Test Baselayer
on:
push:
branches:
- main
pull_request:
defaults:
run:
working-directory: ..
jobs:
test:
name: Test Baselayer
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: baselayer
POSTGRES_PASSWORD: anything
ports:
- 5432:5432
# needed because the postgres container does not provide a
# healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Checkout
uses: actions/checkout@v4
- name: Install template app
run: |
git clone https://github.com/Theodlz/baselayer_template_app
cd baselayer_template_app
git checkout brotli
cd ..
cp -rf baselayer baselayer_template_app/
- uses: actions/cache@v3
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('baselayer_template_app/package.json') }}
- uses: actions/cache@v3
with:
path: |
~/.cache/pip
key: ${{ runner.os }}-${{ hashFiles('**/requirements*.txt') }}
- name: Install system dependencies
run: |
cd baselayer
sudo apt update -y
### firefox installation
sudo snap remove firefox
sudo add-apt-repository ppa:mozillateam/ppa
printf 'Package: *\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 1001' | sudo tee /etc/apt/preferences.d/mozilla-firefox
sudo apt install -y wget nodejs unzip firefox
# if nginx is already installed, remove it
sudo apt remove -y nginx nginx-common nginx-core
# install nginx from source so we can add the brotli module
git clone --recursive https://github.com/google/ngx_brotli.git
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd ngx_brotli/deps/brotli
mkdir out && cd out
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS="-Ofast -m64 -march=native -mtune=native -flto -funroll-loops -ffunction-sections -fdata-sections -Wl,--gc-sections" -DCMAKE_CXX_FLAGS="-Ofast -m64 -march=native -mtune=native -flto -funroll-loops -ffunction-sections -fdata-sections -Wl,--gc-sections" -DCMAKE_INSTALL_PREFIX=./installed ..
cmake --build . --config Release --target brotlienc
cd ../../../..
export CURRENT_DIR=$(pwd)
cd nginx-1.24.0
./configure --sbin-path=/usr/bin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-stream --with-mail=dynamic --with-http_realip_module --with-compat --add-module=${CURRENT_DIR}/ngx_brotli
sudo make && sudo make install
sudo nginx
pip install --upgrade pip
pip install wheel
export NPM_PACKAGES="${HOME}/.npm-packages"
export PATH=${NPM_PACKAGES}/bin:$PATH
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
sudo npm -g install npm@latest
which python; python --version
echo npm $(npm --version)
echo node $(node --version)
nginx -v
firefox --version
- name: Install Geckodriver / Selenium
run: |
GECKO_VER=0.34.0
CACHED_DOWNLOAD_DIR=~/.local/downloads
FILENAME=geckodriver-v${GECKO_VER}-linux64.tar.gz
if [[ ! -f ${CACHED_DOWNLOAD_DIR=}/${FILENAME} ]]; then
wget https://github.com/mozilla/geckodriver/releases/download/v${GECKO_VER}/${FILENAME} --directory-prefix=${CACHED_DOWNLOAD_DIR} --no-clobber
fi
sudo tar -xzf ${CACHED_DOWNLOAD_DIR}/geckodriver-v${GECKO_VER}-linux64.tar.gz -C /usr/local/bin
geckodriver --version
pip install selenium==4.8.3
python -c "import selenium; print(f'Selenium {selenium.__version__}')"
- name: Write configuration & build DB
run: |
cd baselayer_template_app
cat << EOF > config.yaml
database:
database: template_app
user: baselayer
host: localhost
port: 5432
password: anything
EOF
cat << EOF > test_config.yaml
database:
database: template_app_test
user: baselayer
host: localhost
port: 5432
password: anything
EOF
echo "localhost:5432:*:baselayer:anything" > ~/.pgpass
chmod 600 ~/.pgpass
createdb -h localhost -U baselayer template_app
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app TO baselayer;" template_app
createdb -h localhost -U baselayer template_app_test
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app_test TO baselayer;" template_app_test
make db_init
- name: Test template app
run: |
cd baselayer_template_app
make test_headless
- name: Upload logs
uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: logs
path: baselayer_template_app/log