Skip to content

Commit

Permalink
chore: automated release
Browse files Browse the repository at this point in the history
  • Loading branch information
benthomasson committed Mar 9, 2024
1 parent 0c5b709 commit 208f43c
Show file tree
Hide file tree
Showing 8 changed files with 139 additions and 12 deletions.
9 changes: 0 additions & 9 deletions .bumpversion.cfg

This file was deleted.

36 changes: 36 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: Release ansible-rulebook

env:
LC_ALL: "C.UTF-8" # prevent ERROR: Ansible could not initialize the preferred locale: unsupported locale setting

on:
workflow_dispatch:

jobs:
stage:
runs-on: ubuntu-latest
timeout-minutes: 90
permissions:
packages: write
contents: write
steps:
- name: Checkout ansible-rulebook
uses: actions/checkout@v3
with:
fetch-depth: 0
fetch-tags: true

- name: Get python version from Makefile
run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV

- name: Install python ${{ env.py_version }}
uses: actions/setup-python@v4
with:
python-version: ${{ env.py_version }}

- name: Install python deps
run: pip install -r requirements_dev.txt

- name: Create release
run: ansible-playbook tools/ansible/release.yml -i localhost -e github_token=${{ secrets.GITHUB_TOKEN }} -vvv
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,7 @@ install: clean ## install the package to the active Python's site-packages
pip install .

minimal-ee:
ansible-builder build -f ./minimal-decision-environment.yml -t minimal-de:latest
ansible-builder build -f ./minimal-decision-environment.yml -t minimal-de:latest

PYTHON_VERSION:
@echo '3.9'
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.0.5
26 changes: 26 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,29 @@ profile = "black"
combine_as_imports = true
line_length = 79
extend_skip = ["docs"]

[tool.bumpver]
current_version = "1.0.5"
version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
commit_message = "chore: bump version {old_version} -> {new_version}"
tag_message = "{new_version}"
tag_scope = "default"
pre_commit_hook = ""
post_commit_hook = ""
commit = true
tag = true
push = true

[tool.bumpver.file_patterns]
"pyproject.toml" = [
'current_version = "{version}"',
]
"ansible_rulebook/__init__.py" = [
'__version__ = "{version}"',
]
"setup.cfg" = [
'version = {version}',
]
"VERSION" = [
'{version}'
]
2 changes: 1 addition & 1 deletion requirements_dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-r requirements_lint.txt
-r docs/requirements.txt

bump2version
bumpver

# Packaging / distribution
twine
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
def test_get_version():
output = get_version()
pattern = re.compile(
r"""\d+\.\d+\.\d+
r"""\d+\.\d+\.\d+(.+)
Executable location = (.+)
Drools_jpy version = \d+\.\d+\.\d+
Java home = (.+)
Expand Down
70 changes: 70 additions & 0 deletions tools/ansible/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
- name: Release ansible-rulebook
hosts: localhost
connection: local
gather_facts: true
vars:
repo_identifier: "ansible/ansible-rulebook"
api_repo_prefix: "https://api.github.com/repos/{{ repo_identifier }}"

# Note:
# When this playbook runs it will run in the directory of the playbook so ../../ would be a reference to the ansible-rulebook root

tasks:

- name: Get the build number from VERSION file
shell: "cat VERSION"
args:
chdir: '../../'
register: version_file

- set_fact:
release_number: "{{ version_file.stdout }}"

- name: Build ansible-rulebook
command:
cmd: make dist
args:
chdir: '../../'
tags:
- build

- name: Create release in github
uri:
url: "{{ api_repo_prefix }}/releases"
method: POST
body_format: json
body:
tag_name: "{{ release_number }}"
name: "v{{ release_number }}"
draft: False
generate_release_notes: True
status_code:
- 201
headers:
Accept: 'application/vnd.github.v3+json'
Authorization: 'bearer {{ github_token }}'
register: new_release_response
tags:
- github

- name: Upload the build files
uri:
# For some reason the upload_url ends with ansible-rulebook/releases/138751035/assets{?name,label}
# We have to strip that off before adding our args to the URLs
url: "{{ new_release_response.json['upload_url'] | regex_replace('{.*}', '') }}?name={{ file_name }}"
method: POST
src: "{{ item }}"
status_code:
- 201
headers:
Accept: 'application/vnd.github.v3+json'
Authorization: 'bearer {{ github_token }}'
Content-Type: "{{ file_name.endswith('tar.gz') | ternary('application/gzip', 'application/x-wheel+zip') }}"
vars:
file_name: "{{ item | basename }}"
loop: "{{ lookup('ansible.builtin.fileglob', '../../dist/*', wantlist=True) }}"
loop_control:
label: "{{ item | basename }}"
tags:
- github

0 comments on commit 208f43c

Please sign in to comment.