forked from indico/indico-plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c923bca
commit 384b871
Showing
3 changed files
with
148 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# This file is part of the Indico plugins. | ||
# Copyright (C) 2002 - 2024 CERN | ||
# | ||
# The Indico plugins are free software; you can redistribute | ||
# them and/or modify them under the terms of the MIT License; | ||
# see the LICENSE file for more details. | ||
|
||
import json | ||
import os | ||
import sys | ||
from operator import itemgetter | ||
from pathlib import Path | ||
|
||
|
||
def _plugin_has_assets(plugin_dir: Path): | ||
return (plugin_dir / 'webpack.config.js').exists() or (plugin_dir / 'webpack-bundles.json').exists() | ||
|
||
|
||
def main(): | ||
plugin_data = sorted(({'plugin': x.name, 'assets': _plugin_has_assets(x)} for x in Path().iterdir() | ||
if x.name != '_meta' and x.is_dir() and (x / 'setup.cfg').exists()), key=itemgetter('plugin')) | ||
|
||
# TODO remove after initial testing | ||
plugin_data = [x for x in plugin_data if x['plugin'] in {'cloud_captchas', 'storage_s3'}] | ||
print(plugin_data) | ||
|
||
matrix = {'include': plugin_data} | ||
with open(os.environ['GITHUB_OUTPUT'], 'a') as f: | ||
f.write(f'PLUGINS_MATRIX={json.dumps(matrix)}\n') | ||
return 0 | ||
|
||
|
||
if __name__ == '__main__': | ||
sys.exit(main()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
name: Build | ||
|
||
env: | ||
PYTHON_VERSION: '3.12' | ||
TZ: Europe/Zurich | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'master' | ||
- '*.x' | ||
- 'ci-build-plugins' # TODO remove | ||
pull_request: | ||
branches: | ||
- 'master' | ||
- '*.x' | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
- labeled | ||
|
||
jobs: | ||
list-plugins: | ||
name: Get plugin list π | ||
runs-on: ubuntu-22.04 | ||
if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'build-wheel') | ||
outputs: | ||
PLUGINS_MATRIX: ${{ steps.list-plugins.outputs.PLUGINS_MATRIX }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up Python π | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: Generate matrix | ||
id: list-plugins | ||
run: python .github/utils/generate_matrix.py | ||
|
||
build: | ||
name: Build package for ${{ matrix.plugin }} π¦ | ||
needs: list-plugins | ||
runs-on: ubuntu-22.04 | ||
if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'build-wheel') | ||
strategy: | ||
matrix: ${{ fromJson(needs.list-plugins.outputs.PLUGINS_MATRIX) }} | ||
steps: | ||
- name: Checkout plugins | ||
uses: actions/checkout@v4 | ||
with: | ||
path: plugins | ||
# prefer head commit over merge commit in case of PRs | ||
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || '' }} | ||
|
||
- name: Pick Indico core repo | ||
id: core-repo | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
PR_BODY: ${{ github.event_name == 'pull_request' && github.event.pull_request.body }} | ||
PR_BASE_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref }} | ||
run: python plugins/.github/utils/get_core_repo.py indico/indico INDICO | ||
|
||
- name: Checkout core | ||
uses: actions/checkout@v4 | ||
with: | ||
path: indico | ||
repository: indico/indico | ||
ref: ${{ steps.core-repo.outputs.INDICO_BRANCH }} | ||
|
||
- name: Set up Python π | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
cache: pip | ||
cache-dependency-path: | | ||
indico/requirements*.txt | ||
plugins/**/setup.cfg | ||
- name: Setup Node | ||
if: matrix.assets | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.x | ||
cache: 'npm' | ||
cache-dependency-path: indico/package-lock.json | ||
|
||
- name: Install build deps π§ | ||
working-directory: indico | ||
run: | | ||
sudo apt-get install libpq-dev | ||
pip install --user -U pip setuptools wheel | ||
pip install --user -e '.[dev]' | ||
- name: Install npm deps β | ||
if: matrix.assets | ||
working-directory: indico | ||
run: npm ci | ||
|
||
- name: Build wheel π | ||
working-directory: indico | ||
run: | | ||
./bin/maintenance/build-wheel.py plugin ../plugins/${{ matrix.plugin }} --add-version-suffix | ||
- uses: actions/upload-artifact@v4 | ||
name: Upload build artifacts π¦ | ||
with: | ||
name: plugin-wheels | ||
retention-days: 7 | ||
path: ./indico/dist |