Skip to content

Commit

Permalink
add workflows to publish at PyPi
Browse files Browse the repository at this point in the history
  • Loading branch information
dou-du committed Aug 24, 2021
1 parent 17adc63 commit 5502a21
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .github/static/release_tag_msg.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TAG_NAME

This tag was created automatically through the GH Actions
"Publish on PyPI" workflow.
66 changes: 66 additions & 0 deletions .github/workflows/publish-on-pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Publish on PyPI

on:
release:
types:
- published

jobs:
publish:
runs-on: ubuntu-latest
if: github.repository == 'osscar-org/jupyterlab-mol-visualizer' && startsWith(github.ref, 'refs/tags/v')

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -U setuptools
pip install -U invoke
pip install -U jupyter-packaging
pip install -U jupyterlab
- name: Install the node
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install

- name: Update version
run: invoke update-version --version="${GITHUB_REF#refs/tags/}"

- name: Create new tag
run: |
git config --local user.email "[email protected]"
git config --local user.name "Materials Cloud Team"
git commit -m "Release ${GITHUB_REF#refs/tags/}" -a
TAG_MSG=.github/static/release_tag_msg.txt
sed -i "s|TAG_NAME|${GITHUB_REF#refs/tags/}|g" "${TAG_MSG}"
git tag -af -F "${TAG_MSG}" ${GITHUB_REF#refs/tags/}
- name: Push release commit and new tag
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
force: true
tags: true
branch: develop

- name: Build source distribution
run: python ./setup.py sdist bdist_wheel

- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.PYPI_PASSWORD }}
45 changes: 45 additions & 0 deletions tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from pathlib import Path
import re
import sys
from typing import Tuple

from invoke import task


TOP_DIR = Path(__file__).parent.resolve()


def update_file(filename: str, sub_line: Tuple[str, str], strip: str = None):
"""Utility function for tasks to read, update, and write files"""
with open(filename, "r") as handle:
lines = [
re.sub(sub_line[0], sub_line[1], line.rstrip(strip)) for line in handle
]

with open(filename, "w") as handle:
handle.write("\n".join(lines))
handle.write("\n")


@task
def update_version(_, version=""):
"""Update package version using SemVer syntax."""
if version:
if version.startswith("v"):
version = version[1:]
if re.match(r"[0-9]+(\.[0-9]+){2}.*", version) is None:
sys.exit(
f"Error: Passed version ({version}) does to match the SemVer format: "
"Major.Minor.Patch(+ extras)."
)
else:
sys.exit(
"Please pass --version with a value that complies to the SemVer format: "
"Major.Minor.Patch(+ extras)."
)

update_file(
TOP_DIR.joinpath("package.json"), (r'"version":.*,', f'"version": "{version}",')
)

print(f"Bumped version to {version} !")

0 comments on commit 5502a21

Please sign in to comment.