diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml new file mode 100644 index 000000000..cb9c283e5 --- /dev/null +++ b/.github/workflows/packaging.yml @@ -0,0 +1,103 @@ +name: Packaging + +on: + push: + branches: [ master ] + pull_request: + branches: '*' + +env: + PIP_DISABLE_PIP_VERSION_CHECK: 1 + +defaults: + run: + shell: bash -l {0} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install node + uses: actions/setup-node@v1 + with: + node-version: '14.x' + - name: Install Python + uses: actions/setup-python@v2 + with: + python-version: '3.9' + architecture: 'x64' + - name: Install dependencies + run: | + python -m pip install --upgrade pip wheel + python -m pip install setuptools jupyter_packaging "jupyterlab>=3,<4" + - name: Build pypi distributions + run: | + python setup.py sdist bdist_wheel + - name: Build npm distributions + run: | + pushd packages/jupyterlab-preview + npm pack + popd + cp packages/*/*.tgz dist + - name: Build checksum file + run: | + cd dist + sha256sum * | tee SHA256SUMS + - name: Upload distributions + uses: actions/upload-artifact@v2 + with: + name: dist ${{ github.run_number }} + path: ./dist + + install: + runs-on: ${{ matrix.os }}-latest + needs: [build] + strategy: + fail-fast: false + matrix: + os: [ubuntu, macos, windows] + python: ['3.6', '3.9'] + include: + - python: '3.6' + dist: 'voila*.tar.gz' + - python: '3.9' + dist: 'voila*.whl' + - os: windows + py_cmd: python + - os: macos + py_cmd: python3 + - os: ubuntu + py_cmd: python + steps: + - name: Install Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + architecture: 'x64' + - uses: actions/download-artifact@v2 + with: + name: dist ${{ github.run_number }} + path: ./dist + - name: Install the prerequisites + run: | + ${{ matrix.py_cmd }} -m pip install pip wheel + - name: Install the package + run: | + cd dist + ${{ matrix.py_cmd }} -m pip install -vv ${{ matrix.dist }} + - name: Validate environment + run: | + ${{ matrix.py_cmd }} -m pip freeze + ${{ matrix.py_cmd }} -m pip check + - name: Validate the install + run: | + jupyter labextension list + jupyter labextension list 2>&1 | grep -ie "@voila-dashboards/jupyterlab-preview.*enabled.*ok" - + jupyter server extension list + jupyter server extension list 2>&1 | grep -ie "voila.server_extension.*enabled" - + jupyter nbextension list + jupyter nbextension list 2>&1 | grep -ie "voila/extension.*enabled" - + voila --version + voila --help