This repository has been archived by the owner on Mar 3, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a GH Actions workflow that runs when a GitHub release is published. It will run the new invoke task "update-version" with the tag name, updating `metadata.json`'s `"version"` value with the correct version. Then it will update the tag to the new commit and push it all to `master`.
- Loading branch information
Showing
6 changed files
with
104 additions
and
0 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
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,4 @@ | ||
TAG_NAME | ||
|
||
This tag was created automatically through the GH Actions | ||
"Release new version" workflow. |
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,49 @@ | ||
name: Release new version | ||
|
||
on: | ||
release: | ||
types: | ||
- published | ||
|
||
jobs: | ||
release: | ||
runs-on: ubuntu-latest | ||
if: github.repository == 'aiidalab/aiidalab-optimade' && 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 -r requirements_dev.txt | ||
- name: Update version | ||
run: invoke update-version --version="${GITHUB_REF#refs/tags/}" | ||
|
||
- name: Commit and update tag | ||
run: | | ||
git config --local user.email "aiidalab@materialscloud.org" | ||
git config --local user.name "AiiDAlab 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: master |
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 @@ | ||
invoke~=1.4 |
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,41 @@ | ||
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 to given version""" | ||
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 adhere to SemVer standards." | ||
) | ||
else: | ||
sys.exit("Error: version not supplied. It should adhere to SemVer standards.") | ||
|
||
update_file( | ||
TOP_DIR.joinpath("metadata.json"), (r'"version": ".+"', f'"version": "{version}"') | ||
) | ||
|
||
print(f"Bumped version to {version} !") |