From b986cd811b59369ce996be54871664360dbbb47d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Antonio=20Perdiguero=20L=C3=B3pez?= Date: Wed, 13 May 2020 15:59:10 +0200 Subject: [PATCH] :lock: Add semantic release --- .github/workflows/ci_master.yaml | 11 +++--- .releaserc | 58 ++++++++++++++++++++++++++++++++ CHANGELOG.md | 4 --- make | 35 +++++++------------ 4 files changed, 76 insertions(+), 32 deletions(-) create mode 100644 .releaserc diff --git a/.github/workflows/ci_master.yaml b/.github/workflows/ci_master.yaml index c975da09..acc74ce5 100644 --- a/.github/workflows/ci_master.yaml +++ b/.github/workflows/ci_master.yaml @@ -4,8 +4,6 @@ on: push: branches: - master - tags: - - "v[0-9]*.[0-9]*.[0-9]*" jobs: test: @@ -54,11 +52,14 @@ jobs: image: perdy/github-actions-builder:latest steps: - uses: actions/checkout@master - if: github.event_name == 'push' && github.ref != 'refs/heads/master' + - name: Setup node + uses: actions/setup-node@v1 + with: + node-version: 12 - id: publish name: Publish version - if: github.event_name == 'push' && github.ref != 'refs/heads/master' - run: python make publish --build + run: npx semantic-release env: + GITHUB_TOKEN: ${{ secrets.GITHUB_ACTIONS_TOKEN }} PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} diff --git a/.releaserc b/.releaserc new file mode 100644 index 00000000..7593b9e1 --- /dev/null +++ b/.releaserc @@ -0,0 +1,58 @@ +{ + "branch": "master", + "plugins": [ + [ + "semantic-release-gitmoji", + { + "releaseRules": { + "major": [ + ":boom:" + ], + "minor": [ + ":sparkles:" + ], + "patch": [ + ":bug:", + ":ambulance:", + ":lock:" + ] + } + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md", + "changelogTitle": "# Semantic Versioning Changelog" + } + ], + [ + "@semantic-release/exec", + { + "prepareCmd": "python make version ${nextRelease.version}", + "publishCmd": "python make publish --build" + } + ], + [ + "@semantic-release/git", + { + "message": ":bookmark: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", + "assets": [ + "CHANGELOG.md", + "pyproject.toml", + "poetry.lock" + ] + } + ], + [ + "@semantic-release/github", + { + "assets": [ + { + "path": "dist/**" + } + ] + } + ] + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index adf77a4c..e69de29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +0,0 @@ -# Changes - -v0.1.0 - 2018-09-24 - * Initial release. diff --git a/make b/make index e050cc7d..761f513f 100755 --- a/make +++ b/make @@ -61,8 +61,15 @@ def clean(*args, **kwargs): shutil.rmtree(path, ignore_errors=True) -@command(command_type=Type.SHELL, parser_opts={"help": "Build package"}) +@command( + command_type=Type.SHELL, + args=((("-c", "--clean"), {"help": "Clean before build"}),), + parser_opts={"help": "Build package"}, +) def build(*args, **kwargs): + if kwargs["clean"]: + clean() + return [poetry("build", *args)] @@ -96,29 +103,14 @@ def docs(*args, **kwargs): return [poetry("run", "mkdocs", *args)] -@command(command_type=Type.PYTHON, parser_opts={"help": "Upgrade version"}) +@command(command_type=Type.SHELL, parser_opts={"help": "Upgrade version"}) def version(*args, **kwargs): - if toml is None: - logger.error("Package toml is not installed, run 'pip install toml' to install it") - return -1 - - old_version = toml.load("pyproject.toml")["tool"]["poetry"]["version"] - - subprocess.run(poetry("version", *args)) - - new_version = toml.load("pyproject.toml")["tool"]["poetry"]["version"] - - subprocess.run(shlex.split(f"git add pyproject.toml poetry.lock")) - subprocess.run(shlex.split(f'git commit -m "Bumping version from {old_version} to {new_version}"')) - subprocess.run(shlex.split(f"git tag v{new_version}")) + return [poetry("version", *args)] @command( command_type=Type.SHELL, - args=( - (("--version",), {"help": "Version to upgrade", "choices": ("patch", "minor", "major")}), - (("-b", "--build"), {"help": "Build package", "action": "store_true"}), - ), + args=((("-b", "--build"), {"help": "Build package", "action": "store_true"}),), parser_opts={"help": "Publish package"}, ) def publish(*args, **kwargs): @@ -130,11 +122,8 @@ def publish(*args, **kwargs): if username and password: cmds.append(poetry("config", "http-basic.pypi", username, password)) - if kwargs.get("version", None): - version(version=kwargs["version"]) - if kwargs["build"]: - cmds += build() + cmds += build(clean=True) cmds.append(poetry("publish"))