Skip to content

Commit

Permalink
chore: add automated release
Browse files Browse the repository at this point in the history
  • Loading branch information
benthomasson committed Mar 8, 2024
1 parent 0c5b709 commit a2afe48
Show file tree
Hide file tree
Showing 9 changed files with 153 additions and 16 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 }}
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'
6 changes: 3 additions & 3 deletions ansible_rulebook/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.

"""Top-level package for Ansible Events."""
"""Top-level package for Ansible Rulebook."""

import yaml

__version__ = "1.0.5"


def construct_vault_encrypted_unicode(loader, node):
return loader.construct_scalar(node)


yaml.SafeLoader.add_constructor("!vault", construct_vault_encrypted_unicode)

__version__ = "1.0.6b8"
28 changes: 28 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,31 @@ profile = "black"
combine_as_imports = true
line_length = 79
extend_skip = ["docs"]

[tool.bumpver]
current_version = "1.0.6b8"
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.setuptools_scm]



[tool.bumpver.file_patterns]
"pyproject.toml" = [
'current_version = "{version}"',
]
"ansible_rulebook/__init__.py" = [
'__version__ = "{version}"',
]
"setup.cfg" = [
'version = {version}',
]

5 changes: 4 additions & 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 All @@ -16,3 +16,6 @@ coverage
ansible-builder

pre-commit

# For buiding releases
setuptools-scm
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = ansible_rulebook
version = 1.0.5
version = 1.0.6b8
description = Event driven automation for Ansible
url = https://github.com/ansible/ansible-rulebook
license = Apache-2.0
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
76 changes: 76 additions & 0 deletions tools/ansible/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
- 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 setuptools-scm
command:
cmd: python -m setuptools_scm --strip-dev
register: setuptools_command_version

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

- name: Tag the repo
command:
cmd: "git tag -f {{ release_number }}"

- set_fact:
release_number: "{{ git_version.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 a2afe48

Please sign in to comment.