Skip to content

WIP - JS/Python package manager migrations: npm -> bun, pip -> uv #319

WIP - JS/Python package manager migrations: npm -> bun, pip -> uv

WIP - JS/Python package manager migrations: npm -> bun, pip -> uv #319

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.10"
- uses: oven-sh/setup-bun@v2
- name: Checkout
uses: actions/checkout@v4
- name: Install template app
run: |
git clone https://github.com/cesium-ml/baselayer_template_app
cp -rf baselayer baselayer_template_app/
- uses: actions/cache@v4
with:
path: |
~/.bun
key: ${{ runner.os }}-bun-${{ hashFiles('baselayer_template_app/package.json') }}
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
key: ${{ runner.os }}-${{ hashFiles('**/requirements*.txt') }}
- uses: browser-actions/setup-geckodriver@latest
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install system dependencies
run: |
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 unzip firefox
# if nginx is already installed, remove it
sudo apt remove -y nginx nginx-common nginx-core nginx-full
sudo apt purge -y nginx nginx-common nginx-core nginx-full
# add the PPA repository with brotli support for nginx
sudo add-apt-repository ppa:ondrej/nginx -y
sudo apt update -y
sudo apt install nginx libnginx-mod-http-brotli-static libnginx-mod-http-brotli-filter -y
### UV python package manager installation
curl -LsSf https://astral.sh/uv/install.sh | sh
cd baselayer_template_app
uv venv --python 3.10 && source .venv/bin/activate
uv pip install --upgrade pip && uv pip install wheel
bun upgrade
which python; python --version
echo uv $(uv --version)
echo bun $(bun --version)
nginx -v
firefox --version
- name: Install Geckodriver / Selenium
run: |
cd baselayer_template_app
source .venv/bin/activate
geckodriver --version
uv 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
source .venv/bin/activate
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
source .venv/bin/activate
make test_headless
- name: Upload logs
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: logs
path: baselayer_template_app/log