mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-20 02:26:12 +00:00
That way we can do everything important in the setup job and just download the artifact in each subsequent job. We now also just cache the wheels instead of the virtualenv itself; that way we are guaranteed to have a fresh indico copy from the main repo instead of whatever got cached some time ago.
244 lines
6.8 KiB
YAML
244 lines
6.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- 2.3-maintenance
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- 2.3-maintenance
|
|
|
|
jobs:
|
|
setup:
|
|
runs-on: ubuntu-20.04
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Get upstream branch name
|
|
run: |
|
|
if [[ $GITHUB_EVENT_NAME == push ]]; then
|
|
upstream_branch="${GITHUB_REF#refs/heads/}"
|
|
elif [[ $GITHUB_EVENT_NAME == pull_request ]]; then
|
|
upstream_branch="${GITHUB_HEAD_REF#refs/heads/}"
|
|
else
|
|
echo "unsupported event: $GITHUB_EVENT_NAME"
|
|
exit 1
|
|
fi
|
|
if [[ $upstream_branch != master && $upstream_branch != *-maintenance ]]; then
|
|
echo "assuming there is no branch named ${upstream_branch} in indico; defaulting to master"
|
|
upstream_branch=master
|
|
else
|
|
echo "using indico upstream branch ${upstream_branch}"
|
|
fi
|
|
echo "INDICO_BRANCH=${upstream_branch}" >> "$GITHUB_ENV"
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Install system dependencies
|
|
run: sudo apt-get install postgresql-client libpq-dev
|
|
|
|
- name: Create virtualenv
|
|
run: |
|
|
python3.9 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -U pip setuptools wheel
|
|
|
|
- name: Activate virtualenv for later steps
|
|
run: |
|
|
echo "VIRTUAL_ENV=$(pwd)/.venv" >> $GITHUB_ENV
|
|
echo "$(pwd)/.venv/bin" >> $GITHUB_PATH
|
|
|
|
- name: Get pip cache dir
|
|
id: pip-cache
|
|
run: echo "::set-output name=dir::$(pip cache dir)"
|
|
|
|
- name: Cache pip
|
|
id: cache-pip
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ steps.pip-cache.outputs.dir }}
|
|
key: pip|${{ runner.os }}|3.9|${{ hashFiles('**/setup.cfg') }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: cache-npm
|
|
with:
|
|
path: node_modules
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('package*.json') }}
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v1
|
|
if: steps.cache-npm.outputs.cache-hit != 'true'
|
|
with:
|
|
node-version: '14.x'
|
|
|
|
- name: Install Indico
|
|
run: |
|
|
pip install Babel
|
|
pip install git+https://github.com/indico/indico.git@${INDICO_BRANCH}#egg=indico[dev]
|
|
|
|
- name: Install node dependencies
|
|
if: steps.cache-npm.outputs.cache-hit != 'true'
|
|
run: npm ci
|
|
|
|
- name: Archive environment
|
|
run: tar cf /tmp/env.tar .venv node_modules
|
|
|
|
- name: Upload environment
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: environment
|
|
retention-days: 1
|
|
path: /tmp/env.tar
|
|
|
|
lint:
|
|
needs: setup
|
|
runs-on: ubuntu-20.04
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Get upstream branch name
|
|
run: |
|
|
if [[ $GITHUB_EVENT_NAME == push ]]; then
|
|
upstream_branch="${GITHUB_REF#refs/heads/}"
|
|
elif [[ $GITHUB_EVENT_NAME == pull_request ]]; then
|
|
upstream_branch="${GITHUB_HEAD_REF#refs/heads/}"
|
|
else
|
|
echo "unsupported event: $GITHUB_EVENT_NAME"
|
|
exit 1
|
|
fi
|
|
if [[ $upstream_branch != master && $upstream_branch != *-maintenance ]]; then
|
|
echo "assuming there is no branch named ${upstream_branch} in indico; defaulting to master"
|
|
upstream_branch=master
|
|
else
|
|
echo "using indico upstream branch ${upstream_branch}"
|
|
fi
|
|
echo "INDICO_BRANCH=${upstream_branch}" >> "$GITHUB_ENV"
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: '14.x'
|
|
|
|
- name: Download environment
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: environment
|
|
path: /tmp
|
|
|
|
- name: Restore environment
|
|
run: tar xf /tmp/env.tar
|
|
|
|
- name: Activate virtualenv for later steps
|
|
run: |
|
|
echo "VIRTUAL_ENV=$(pwd)/.venv" >> $GITHUB_ENV
|
|
echo "$(pwd)/.venv/bin" >> $GITHUB_PATH
|
|
|
|
- name: Check import sorting
|
|
run: isort --diff --check-only .
|
|
|
|
- name: Check headers
|
|
if: success() || failure()
|
|
run: |
|
|
wget "https://raw.githubusercontent.com/indico/indico/${INDICO_BRANCH}/bin/maintenance/update_header.py" -O /tmp/update_header.py
|
|
echo '::add-matcher::.github/matchers/headers-problem-matcher.json'
|
|
python /tmp/update_header.py --ci
|
|
echo '::remove-matcher owner=headers::'
|
|
|
|
- name: Run flake8
|
|
if: success() || failure()
|
|
run: |
|
|
echo '::add-matcher::.github/matchers/flake8-problem-matcher.json'
|
|
flake8 --format '%(path)s:%(row)d:%(col)d: %(code)s %(text)s'
|
|
echo '::remove-matcher owner=flake8::'
|
|
|
|
test-plugin:
|
|
needs: setup
|
|
runs-on: ubuntu-20.04
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:11
|
|
env:
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
ports:
|
|
- 5432
|
|
options: --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 10
|
|
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- plugin: livesync
|
|
- plugin: payment_paypal
|
|
- plugin: vc_zoom
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: '14.x'
|
|
|
|
- name: Download environment
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: environment
|
|
path: /tmp
|
|
|
|
- name: Restore environment
|
|
run: tar xf /tmp/env.tar
|
|
|
|
- name: Activate virtualenv for later steps
|
|
run: |
|
|
echo "VIRTUAL_ENV=$(pwd)/.venv" >> $GITHUB_ENV
|
|
echo "$(pwd)/.venv/bin" >> $GITHUB_PATH
|
|
|
|
- name: Install plugin
|
|
run: |
|
|
cd "${GITHUB_WORKSPACE}/${{ matrix.plugin }}"
|
|
pip install -e .
|
|
|
|
- name: Setup database
|
|
run: |
|
|
export PGHOST=localhost
|
|
export PGPORT=${{ job.services.postgres.ports[5432] }}
|
|
export PGUSER=postgres
|
|
createuser indicotest
|
|
createdb -O indicotest indicotest
|
|
psql indicotest -c 'CREATE EXTENSION unaccent;'
|
|
psql indicotest -c 'CREATE EXTENSION pg_trgm;'
|
|
|
|
- name: Run tests
|
|
run: |
|
|
export INDICO_TEST_DATABASE_URI="postgresql://indicotest@localhost:${{ job.services.postgres.ports[5432] }}/indicotest"
|
|
cd "${GITHUB_WORKSPACE}/${{ matrix.plugin }}"
|
|
pytest --color=yes
|