From 0cde7a53ccf5736d178786b8bae2be6de5819585 Mon Sep 17 00:00:00 2001 From: John Westcott IV Date: Fri, 26 Jan 2024 17:27:41 -0500 Subject: [PATCH 1/3] Attempted calver via setuptools-scm After several atttempts at what felt like inconsistent results I'm moving on to get it done. We can revisit later --- ansible_base/__init__.py | 0 ansible_base/_version.py | 11 +++++++++++ pyproject.toml | 7 +++++++ 3 files changed, 18 insertions(+) delete mode 100644 ansible_base/__init__.py create mode 100644 ansible_base/_version.py diff --git a/ansible_base/__init__.py b/ansible_base/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/ansible_base/_version.py b/ansible_base/_version.py new file mode 100644 index 000000000..c2165b145 --- /dev/null +++ b/ansible_base/_version.py @@ -0,0 +1,11 @@ +from typing import Tuple, Union + +VERSION_TUPLE = Tuple[Union[int, str], ...] + +version: str +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version = '0.0.0.dev' +__version_tuple__ = version_tuple = tuple(version.split('.')) diff --git a/pyproject.toml b/pyproject.toml index 4e962044b..bfdc1232b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,13 @@ classifiers = [ ] dynamic = ["version", "dependencies", "optional-dependencies"] +[tool.setuptools] +include-package-data = false + +[tool.setuptools_scm] +version_scheme = 'calver-by-date' +version_file = "ansible_base/_version.py" + [tool.setuptools.packages.find] include = ["ansible_base*"] From 1b19b329b033b1999492045a308041cddac929a5 Mon Sep 17 00:00:00 2001 From: John Westcott IV Date: Fri, 26 Jan 2024 17:46:54 -0500 Subject: [PATCH 2/3] Changing to manual version for release --- .github/workflows/release.yml | 26 ++++++++++++++ .gitignore | 3 ++ ansible_base/__init__.py | 15 ++++++++ ansible_base/_version.py | 12 +------ pyproject.toml | 7 ++-- tools/ansible/release.yml | 68 +++++++++++++++++++++++++++++++++++ 6 files changed, 115 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 ansible_base/__init__.py create mode 100644 tools/ansible/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..f34196838 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,26 @@ +--- +name: Release django-ansible-base + +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 dab + uses: actions/checkout@v3 + with: + path: dab + + - name: Create release + working-directory: dab + run: | + ansible-playbook tools/ansible/release.yml -e github_token=${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 5eefa5bbc..05d96d903 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ pre-commit-user # Make target touch files .docker-compose-built +# Ignore the build version file +ansible_base._version.py + # Python & setuptools __pycache__ /build diff --git a/ansible_base/__init__.py b/ansible_base/__init__.py new file mode 100644 index 000000000..eda57835c --- /dev/null +++ b/ansible_base/__init__.py @@ -0,0 +1,15 @@ +try: + from ._version import version +except ImportError: + version = '0.0.0.dev' + +from typing import Tuple, Union + +VERSION_TUPLE = Tuple[Union[int, str], ...] + +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version +__version_tuple__ = version_tuple = tuple(version.split('.')) diff --git a/ansible_base/_version.py b/ansible_base/_version.py index c2165b145..391661b6a 100644 --- a/ansible_base/_version.py +++ b/ansible_base/_version.py @@ -1,11 +1 @@ -from typing import Tuple, Union - -VERSION_TUPLE = Tuple[Union[int, str], ...] - -version: str -__version__: str -__version_tuple__: VERSION_TUPLE -version_tuple: VERSION_TUPLE - -__version__ = version = '0.0.0.dev' -__version_tuple__ = version_tuple = tuple(version.split('.')) +version = '0.0.0.dev' diff --git a/pyproject.toml b/pyproject.toml index bfdc1232b..8de87a692 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,10 +32,6 @@ dynamic = ["version", "dependencies", "optional-dependencies"] [tool.setuptools] include-package-data = false -[tool.setuptools_scm] -version_scheme = 'calver-by-date' -version_file = "ansible_base/_version.py" - [tool.setuptools.packages.find] include = ["ansible_base*"] @@ -53,9 +49,10 @@ optional-dependencies.api_documentation = { file = [ "requirements/requirements_ optional-dependencies.rest_filters = { file = [ "requirements/requirements_rest_filters.in" ] } optional-dependencies.channel_auth = { file = [ "requirements/requirements_channels.in" ] } optional-dependencies.jwt_consumer = { file = [ "requirements/requirements_jwt_consumer.in" ] } +version = {attr = "ansible_base.__version__"} [build-system] -requires = ["setuptools>=64", "setuptools_scm>=8"] +requires = ["setuptools>=64"] build-backend = 'setuptools.build_meta' [tool.black] diff --git a/tools/ansible/release.yml b/tools/ansible/release.yml new file mode 100644 index 000000000..e6bc6802c --- /dev/null +++ b/tools/ansible/release.yml @@ -0,0 +1,68 @@ +--- +- name: Release django-ansible-base + hosts: localhost + connection: local + gather_facts: true + vars: + repo_identifier: "ansible/django-ansible-base" + 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 django-ansible-base root + + tasks: + - name: Generate calver release number + set_fact: + release_number: "{{ ansible_date_time.year }}.{{ ansible_date_time.month }}.{{ ansible_date_time.day }}" + + - name: "Update version file with {{ release_number }}" + ansible.builtin.lineinfile: + create: True + line: "version = '{{ release_number }}'" + path: "../../ansible_base/_version.py" + regex: "^version = .*" + + - name: Build django-ansible-base + command: + cmd: make build + creates: 'dist/django-ansible-base-{{ release_number }}.tar.gz' + 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 + make_latest: True + headers: + Accept: 'application/vnd.github.v3+json' + Authorization: 'bearer {{ github_token }}' + register: new_release_response + tags: + - github + + - name: Upload the build files + debug: + msg: "{{ file_name }}" + uri: + url: "{{ new_release_response.json['upload_url'] }}?name={{ file_name }}" + method: POST + src: "dist/{{ file_name }}" + headers: + Accept: 'application/vnd.github.v3+json' + Authorization: 'bearer {{ github_token }}' + vars: + file_name: "{{ item | basename }}" + loop: "{{ lookup('ansible.builtin.fileglob', '../../dist/*', wantlist=True) }}" + loop_control: + label: "{{ item | basename }}" + tags: + - github From a4f940c076a52986b7d60f8b5277cf1c81edf682 Mon Sep 17 00:00:00 2001 From: John Westcott IV Date: Fri, 26 Jan 2024 18:14:45 -0500 Subject: [PATCH 3/3] Changing from ansible to john-westcott-iv for testing --- tools/ansible/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ansible/release.yml b/tools/ansible/release.yml index e6bc6802c..60baaecf5 100644 --- a/tools/ansible/release.yml +++ b/tools/ansible/release.yml @@ -4,7 +4,7 @@ connection: local gather_facts: true vars: - repo_identifier: "ansible/django-ansible-base" + repo_identifier: "john-westcott-iv/django-ansible-base" api_repo_prefix: "https://api.github.com/repos/{{ repo_identifier }}" # Note: