diff --git a/.github/workflows/dev-ci.yml b/.github/workflows/dev-ci.yml new file mode 100644 index 0000000..65d6464 --- /dev/null +++ b/.github/workflows/dev-ci.yml @@ -0,0 +1,62 @@ +name: Dev CI + +on: + push: + branches: + # on all branches except main where full build will be run + - '*' + - '!main' + +jobs: + build: + name: Build wheel + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + + - name: Install node + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: "18.x" + + - name: Install Python + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + with: + python-version: "3.12" + architecture: "x64" + + - name: Setup pip cache + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ~/.cache/pip + key: pip-3.12-${{ hashFiles('package.json') }} + restore-keys: | + pip-3.12- + pip- + + - name: Get npm cache directory + id: npm-cache + run: | + echo "::set-output name=dir::$(npm config get cache)" + - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ${{ steps.npm-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Build wheel + run: | + python -m pip install build + python -m build --wheel + + - name: Install wheel + run: pip3 install dist/*.whl --user + + - name: Dev install # Install in sources in order to do checkings like linting + run: | + pip3 uninstall -y pypowsybl_jupyter + python -m pip install --upgrade -v -e ".[dev]" + npm run lint diff --git a/.github/workflows/full-ci.yml b/.github/workflows/full-ci.yml new file mode 100644 index 0000000..8642d74 --- /dev/null +++ b/.github/workflows/full-ci.yml @@ -0,0 +1,86 @@ +name: Full CI + +on: + push: + branches: + - 'main' + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' + +jobs: + build: + name: Build wheel + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + + - name: Install node + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: "18.x" + + - name: Install Python + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + with: + python-version: "3.12" + architecture: "x64" + + - name: Setup pip cache + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ~/.cache/pip + key: pip-3.12-${{ hashFiles('package.json') }} + restore-keys: | + pip-3.12- + pip- + + - name: Get npm cache directory + id: npm-cache + run: | + echo "::set-output name=dir::$(npm config get cache)" + - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ${{ steps.npm-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Build wheel + run: | + python -m pip install build + python -m build --wheel + + - name: Install wheel + run: pip3 install dist/*.whl --user + + - name: Dev install # Install in sources in order to do checkings like linting + run: | + pip3 uninstall -y pypowsybl_jupyter + python -m pip install --upgrade -v -e ".[dev]" + npm run lint + + - name: Upload wheel + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + with: + name: pypowsybl_jupyter-wheel + path: dist/*.whl + + package: + name: Package wheels + runs-on: ubuntu-latest + needs: build + + steps: + - name: Download wheels + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + with: + path: download + + - name: Release to PyPi + if: startsWith(github.ref, 'refs/tags/') + shell: bash + run: | + python -m pip install --user --upgrade twine + python -m twine upload --username __token__ --password ${{ secrets.PYPI_TOKEN }} download/*/*.whl diff --git a/pyproject.toml b/pyproject.toml index b55c1db..c36a13e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ Homepage = "https://github.com/powsybl/pypowsybl-jupyter" [project] name = "pypowsybl_jupyter" description = "Widgets for pypowsybl in Jupyter notebooks" -version = "0.1.0" +version = "0.1.0.dev1" readme = "README.md" license = { file = "LICENSE" } @@ -37,7 +37,7 @@ classifiers = [ ] dependencies = [ "anywidget", - "pypowsybl>=1.1.0", + "pypowsybl>=1.2.0", ] [project.optional-dependencies]