Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.0.2 #310

Merged
merged 113 commits into from
Mar 28, 2024
Merged
Changes from 39 commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
ada12fe
chore: Align docs with SSoT
snaselj Sep 25, 2023
187fcf7
fix: Add changelog fragment
snaselj Sep 25, 2023
c17166c
copy init-jobs changes fom #224 with rebase to next-2.0 branch
Sep 26, 2023
67d545d
Rebased PR for next-2.0 branch, had some trouble with fork
Sep 26, 2023
e01dbe6
Correct change fragment, #270 will replace #224, and closes #223
Sep 26, 2023
99e4512
Add kwargs for get_jobs() that allows user-specified header items to …
Sep 26, 2023
0d623ef
Minor update
Sep 26, 2023
0f28144
Catch job_result.result == "FAILURE"
Sep 26, 2023
9d99ca7
run black
Sep 26, 2023
4d0d877
pydocstyle, flake8 fixes
Sep 26, 2023
fe07fc3
black formatter
Sep 26, 2023
1c8da1a
pylint
Sep 26, 2023
3fc453a
remove runnable references
Sep 26, 2023
d7e4ccc
reuse existing user instance (dispatch.user)
Sep 27, 2023
1423b8c
typo correction for dispatcher.user
Sep 27, 2023
50725bb
Replace list comp with generator
smk4664 Sep 29, 2023
ca6a433
Cookie initialy baked by NetworkToCode Cookie Drift Manager Tool
Oct 23, 2023
a3b31d6
chore: Manual fixes
snaselj Oct 23, 2023
a20eebc
fix: pydocstyle
snaselj Oct 23, 2023
3101d03
fix: pylint
snaselj Oct 23, 2023
511ac7d
Merge pull request #286 from nautobot/drift-manager/pr
smk4664 Oct 23, 2023
cf492c5
feat: Updated Mattermost preview compose service to `9.0.1`
snaselj Oct 26, 2023
fa26490
Merge pull request #287 from nautobot/origin/u/snaselj-fix-mattermost
smk4664 Oct 30, 2023
42e1931
Add init-job-form nautobot subcommand
Oct 31, 2023
f074f92
flake8 fix, catch explicit exception
Oct 31, 2023
6910196
Remove block response, leaving testing commented
Oct 31, 2023
98c2db3
pylint8 fixes
Oct 31, 2023
f4d4bab
Add back in the mkdocs include-markdown plugin.
smk4664 Oct 31, 2023
ff2e26e
Pin mkdocs-include-markdown-plugin
smk4664 Oct 31, 2023
da057e5
Merge pull request #289 from smk4664/include-plugin-mkdocs
smk4664 Oct 31, 2023
57aeaeb
Fix Cloudvision naming conflict
smk4664 Dec 7, 2023
5ed94b4
Merge pull request #292 from smk4664/fix-290
smk4664 Dec 15, 2023
be42193
Add some debugs to MSTeam files
zackt25 Dec 19, 2023
3c594aa
Add raise_for_status
zackt25 Dec 19, 2023
8c7a0b7
Fix Arista error
zackt25 Dec 19, 2023
06f78da
Add catch for service url ending with slash
zackt25 Dec 20, 2023
adeb500
Add catch for service url ending with slash
zackt25 Dec 20, 2023
59728e9
Add catch for service url ending with slash
zackt25 Dec 20, 2023
a58b0a8
initial renaming commit
whitej6 Dec 27, 2023
1518d89
initial renaming commit
whitej6 Dec 27, 2023
f3adfc1
addressing feedback
whitej6 Dec 27, 2023
f3a51b9
addressing feedback
whitej6 Dec 27, 2023
5a4f354
Merge pull request #294 from nautobot/u/whitej6-renaming
smk4664 Dec 27, 2023
8b3e405
Merge remote-tracking branch 'origin/develop' into u/snaselj-align-docs
snaselj Jan 30, 2024
19fe5ca
fix: Drift management
snaselj Jan 30, 2024
463cd2d
Apply suggestions from code review
snaselj Feb 1, 2024
78ccc87
fix: admin install doc links
snaselj Feb 1, 2024
0de8f8c
Merge pull request #296 from nautobot/u/snaselj-fix-drift-management
whitej6 Feb 1, 2024
3b450c4
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Feb 1, 2024
a186fae
chore: Manual fixes
snaselj Feb 1, 2024
a98b2e5
chore: Poetry lock
snaselj Feb 1, 2024
c5bc13b
chore: Changelog fragment
snaselj Feb 1, 2024
31615b1
Fix Version Annotations
smk4664 Feb 5, 2024
9df92dc
Merge pull request #265 from nautobot/u/snaselj-align-docs
smk4664 Feb 5, 2024
87ca889
Updates codeowners.
jvanderaa Feb 5, 2024
9a259a5
CI history expired, re-running checks
Feb 5, 2024
8dd56fe
pylint CI fixes: W1113, R0914, C0301
Feb 5, 2024
195c888
Black code formatter
Feb 6, 2024
28c1d95
pylint ignore too-many-locals for init_job
Feb 6, 2024
cb26441
Replace execute_job with enqueue_job, which is correct Nautobot 2.x p…
Feb 6, 2024
64ed936
Fix missing variable
Feb 6, 2024
00eb275
Update breadcrumb changes
Feb 6, 2024
7470ec8
Add max iterations for waiting on job to enter ready state in the dat…
Feb 6, 2024
0ab7e78
Rename `init_job` subcommand to `run_job`
Feb 6, 2024
54e6c93
Merge pull request #299 from nautobot/update_codeowners_jv
smk4664 Feb 6, 2024
875ca64
Update error for initiated job status failure state
Feb 7, 2024
e6c14c6
Rub Black formatter
Feb 7, 2024
544b928
Merge remote-tracking branch 'origin/develop' into drift-manager/pr
snaselj Feb 15, 2024
0e1250b
Merge pull request #297 from nautobot/drift-manager/pr
smk4664 Mar 2, 2024
ac21062
Add NSO integration - initial commit
romanukes Oct 27, 2023
bbb47c4
Apply Black formatting
romanukes Dec 21, 2023
6581a97
Update NSO migration
romanukes Jan 4, 2024
73ddac8
Move NSO tests
romanukes Jan 4, 2024
d21cb93
Apply formatting
romanukes Jan 4, 2024
9f449ec
Make NSO integration compatible with Nautobot 2.0
romanukes Jan 4, 2024
6ed4759
Add NSO integration urls and navigation
romanukes Jan 4, 2024
db018a0
Add nso integration documentation
romanukes Jan 5, 2024
ed502fd
Add nso integration docs
romanukes Jan 5, 2024
e53bdee
Add responses dev dependency
romanukes Jan 5, 2024
3ebe8f2
Fix pylint warning
romanukes Jan 5, 2024
2d2912d
Update NSO documentation
romanukes Mar 4, 2024
651da37
Update poetry.lock
romanukes Mar 4, 2024
346a8d5
Add NSO integration commandfilter.html template
romanukes Mar 4, 2024
fbdceab
NSO integration - fix formatting
romanukes Mar 4, 2024
853147f
NSO integration - rename CommandFilter to NSOCommandFilter
romanukes Mar 4, 2024
0fbb291
NSO integration - Add newsfragment
romanukes Mar 5, 2024
4eca999
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Mar 6, 2024
6f21e65
fix: Added changelog fragment
snaselj Mar 7, 2024
97f593a
fix: Lock poetry
snaselj Mar 7, 2024
e499edf
fix: Remove trailing slash from repo url
snaselj Mar 7, 2024
4c65b1c
fix: Leaked cookiecutter template string
snaselj Mar 7, 2024
973000b
chore: Manual fixes
snaselj Mar 7, 2024
eb31930
Merge pull request #270 from MeganerdDev/jobs-patch
smk4664 Mar 13, 2024
771a6cc
Merge pull request #305 from nautobot/next-2.0
smk4664 Mar 13, 2024
c3e97da
Merge pull request #302 from nautobot/drift-manager/pr
smk4664 Mar 13, 2024
04b6a99
NSO integration - Remove NSOCommandFilter model and run_commands command
romanukes Mar 14, 2024
bc924d7
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Mar 15, 2024
32e0da7
NSO integration - Update documentation
romanukes Mar 15, 2024
7e2def7
NSO integration - Add NSO to mattermost dump.sql
romanukes Mar 15, 2024
87b2e4e
Merge remote-tracking branch 'origin/develop' into nso_integration
romanukes Mar 15, 2024
faedee3
chore: Added changelog fragment
snaselj Mar 18, 2024
f0a2bdd
chore: Manual fixes
snaselj Mar 18, 2024
6ff064f
NSO integration - Add NSO and responses to pyproject.toml
romanukes Mar 18, 2024
347a1fa
NSO integration - Update poetry.lock
romanukes Mar 18, 2024
43bb10c
Merge pull request #288 from romanukes/nso_integration
smk4664 Mar 19, 2024
a17690b
Merge pull request #307 from nautobot/drift-manager/pr
smk4664 Mar 19, 2024
110b66e
Run black.
smk4664 Mar 28, 2024
f04ccab
Merge branch 'develop' into add_debugs_to_ms_teams
smk4664 Mar 28, 2024
d4c17e0
Add Changelogs
smk4664 Mar 28, 2024
533627a
Merge pull request #293 from nautobot/add_debugs_to_ms_teams
smk4664 Mar 28, 2024
a9113b4
Prepare for 3.0.2 release
smk4664 Mar 28, 2024
54dc6e8
Add Changelog fragment
smk4664 Mar 28, 2024
b15e060
Merge pull request #309 from smk4664/prep_for_3_0_2
smk4664 Mar 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .cookiecutter.json
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
"verbose_name": "Nautobot ChatOps App",
"app_slug": "nautobot-chatops",
"project_slug": "nautobot-app-chatops",
"repo_url": "https://github.com/nautobot/nautobot-app-chatops/",
"repo_url": "https://github.com/nautobot/nautobot-app-chatops",
"base_url": "chatops",
"min_nautobot_version": "2.0.0",
"max_nautobot_version": "2.9999",
@@ -21,15 +21,15 @@
"_drift_manager": {
"template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
"template_dir": "nautobot-app",
"template_ref": "refs/tags/nautobot-app-v2.1.0",
"template_ref": "refs/tags/nautobot-app-v2.2.0",
"cookie_dir": "",
"branch_prefix": "drift-manager",
"pull_request_strategy": "create",
"post_actions": [
"black"
],
"draft": true,
"baked_commit_ref": "4b6c888ec08af5233332d01d66b9f71c2f9368a8"
"baked_commit_ref": "b221d6a21e9b9a07df4b85782af19053e5c6c624"
}
}
}
1 change: 0 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -31,5 +31,4 @@
- [ ] Attached Screenshots, Payload Example
- [ ] Unit, Integration Tests
- [ ] Documentation Updates (when adding/changing features)
- [ ] Example App Updates (when adding/changing features)
- [ ] Outline Remaining Work, Constraints from Design
72 changes: 16 additions & 56 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Linting: black"
run: "poetry run invoke black"
bandit:
@@ -35,7 +35,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Linting: bandit"
run: "poetry run invoke bandit"
ruff:
@@ -46,7 +46,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Linting: ruff"
run: "poetry run invoke ruff"
check-docs-build:
@@ -57,7 +57,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Check Docs Build"
run: "poetry run invoke build-and-check-docs"
flake8:
@@ -68,7 +68,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Linting: flake8"
run: "poetry run invoke flake8"
poetry:
@@ -79,7 +79,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Checking: poetry lock file"
run: "poetry run invoke lock --check"
yamllint:
@@ -90,10 +90,10 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Linting: yamllint"
run: "poetry run invoke yamllint"
pylint:
check-in-docker:
needs:
- "bandit"
- "ruff"
@@ -114,7 +114,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@v3"
@@ -136,53 +136,13 @@ jobs:
run: "cp development/creds.example.env development/creds.env"
- name: "Linting: pylint"
run: "poetry run invoke pylint"
check-migrations:
needs:
- "bandit"
- "ruff"
- "flake8"
- "poetry"
- "yamllint"
- "black"
runs-on: "ubuntu-22.04"
strategy:
fail-fast: true
matrix:
python-version: ["3.11"]
nautobot-version: ["2.0.0"]
env:
INVOKE_NAUTOBOT_CHATOPS_PYTHON_VER: "${{ matrix.python-version }}"
INVOKE_NAUTOBOT_CHATOPS_NAUTOBOT_VER: "${{ matrix.nautobot-version }}"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@v3"
- name: "Build"
uses: "docker/build-push-action@v5"
with:
builder: "${{ steps.buildx.outputs.name }}"
context: "./"
push: false
load: true
tags: "${{ env.APP_NAME }}/nautobot:${{ matrix.nautobot-version }}-py${{ matrix.python-version }}"
file: "./development/Dockerfile"
cache-from: "type=gha,scope=${{ matrix.nautobot-version }}-py${{ matrix.python-version }}"
cache-to: "type=gha,scope=${{ matrix.nautobot-version }}-py${{ matrix.python-version }}"
build-args: |
NAUTOBOT_VER=${{ matrix.nautobot-version }}
PYTHON_VER=${{ matrix.python-version }}
- name: "Copy credentials"
run: "cp development/creds.example.env development/creds.env"
- name: "Checking: App Config"
run: "poetry run invoke validate-app-config"
- name: "Checking: migrations"
run: "poetry run invoke check-migrations"
unittest:
needs:
- "pylint"
- "check-migrations"
- "check-in-docker"
strategy:
fail-fast: true
matrix:
@@ -204,7 +164,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@v3"
@@ -240,7 +200,7 @@ jobs:
with:
fetch-depth: "0"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v4"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Check for changelog entry"
run: |
git fetch --no-tags origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
@@ -257,7 +217,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Set up Python"
uses: "actions/setup-python@v4"
uses: "actions/setup-python@v5"
with:
python-version: "3.11"
- name: "Install Python Packages"
@@ -292,7 +252,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Set up Python"
uses: "actions/setup-python@v4"
uses: "actions/setup-python@v5"
with:
python-version: "3.11"
- name: "Install Python Packages"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
<img src="https://raw.githubusercontent.com/nautobot/nautobot-app-chatops/develop/docs/assets/icon-ChatOps.png" alt="ChatOps Logo" class="logo" height="200px">
<br>
<a href="https://github.com/nautobot/nautobot-app-chatops/actions"><img src="https://github.com/nautobot/nautobot-app-chatops/actions/workflows/ci.yml/badge.svg?branch=main"></a>
<a href="https://docs.nautobot.com/projects/chatops/en/latest"><img src="https://readthedocs.org/projects/nautobot-plugin-chatops/badge/"></a>
<a href="https://docs.nautobot.com/projects/chatops/en/latest/"><img src="https://readthedocs.org/projects/nautobot-plugin-chatops/badge/"></a>
<a href="https://pypi.org/project/nautobot-chatops/"><img src="https://img.shields.io/pypi/v/nautobot-chatops"></a>
<a href="https://pypi.org/project/nautobot-chatops/"><img src="https://img.shields.io/pypi/dm/nautobot-chatops"></a>
<br>
4 changes: 4 additions & 0 deletions changes/270.added
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Add run_job Nautobot subcommand, which initiates a job with kwargs or a job requiring no manual form input.
Add run_job_form Nautobot subcommand, which presents job's form widgets to the user.
Add get_jobs Nautobot subcommand, which returns all Nautobot jobs viewable to user.
Add filter_jobs Nautobot subcommand, which returns filtered set of Nautobot jobs viewable to user.
1 change: 1 addition & 0 deletions changes/8.housekeeping
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Re-baked from the latest template.
2 changes: 1 addition & 1 deletion development/Dockerfile
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ ENV INVOKE_NAUTOBOT_CHATOPS_LOCAL=true
# Since this is only used for development and we don't ship this container, pinning Poetry back is not expressly necessary
# We also don't need virtual environments in container
RUN which poetry || curl -sSL https://install.python-poetry.org | python3 - && \
poetry config virtualenvs.create false
poetry config virtualenvs.create false

# !!! USE CAUTION WHEN MODIFYING LINES ABOVE
# -------------------------------------------------------------------------------------
64 changes: 64 additions & 0 deletions development/app_config_schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
"""App Config Schema Generator and Validator."""
import json
from importlib import import_module
from os import getenv
from pathlib import Path
from urllib.parse import urlparse

import jsonschema
import toml
from django.conf import settings
from to_json_schema.to_json_schema import SchemaBuilder


def _enrich_object_schema(schema, defaults, required):
schema["additionalProperties"] = False
for key, value in schema["properties"].items():
if required and key in required:
value["required"] = True
default_value = defaults and defaults.get(key, None)
if value["type"] == "object" and "properties" in value:
_enrich_object_schema(value, default_value, None)
elif default_value is not None:
value["default"] = default_value


def _main():
pyproject = toml.loads(Path("pyproject.toml").read_text())
url = urlparse(pyproject["tool"]["poetry"]["repository"])
_, owner, repository = url.path.split("/")
package_name = pyproject["tool"]["poetry"]["packages"][0]["include"]
app_config = settings.PLUGINS_CONFIG[package_name] # type: ignore
schema_path = Path(package_name) / "app-config-schema.json"
command = getenv("APP_CONFIG_SCHEMA_COMMAND", "")
if command == "generate":
schema = {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": f"https://raw.githubusercontent.com/{owner}/{repository}/develop/{package_name}/app-config-schema.json",
"$comment": "TBD: Update $id, replace `develop` with the future release tag",
**SchemaBuilder().to_json_schema(app_config), # type: ignore
}
app_config = import_module(package_name).config
_enrich_object_schema(schema, app_config.default_settings, app_config.required_settings)
schema_path.write_text(json.dumps(schema, indent=4) + "\n")
print(f"\n==================\nGenerated schema:\n\n{schema_path}\n")
print(
"WARNING: Review and edit the generated file before committing.\n"
"\n"
"Its content is inferred from:\n"
"\n"
"- The current configuration in `PLUGINS_CONFIG`\n"
"- `NautobotAppConfig.default_settings`\n"
"- `NautobotAppConfig.required_settings`"
)
elif command == "validate":
schema = json.loads(schema_path.read_text())
jsonschema.validate(app_config, schema)
print(
f"\n==================\nValidated configuration using the schema:\n{schema_path}\nConfiguration is valid."
)
else:
raise RuntimeError(f"Unknown command: {command}")


_main()
4 changes: 2 additions & 2 deletions development/nautobot_config.py
Original file line number Diff line number Diff line change
@@ -92,11 +92,11 @@
"disable_existing_loggers": False,
"formatters": {
"normal": {
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)s :\n %(message)s",
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)s : %(message)s",
"datefmt": "%H:%M:%S",
},
"verbose": {
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)-20s %(filename)-15s %(funcName)30s() :\n %(message)s",
"format": "%(asctime)s.%(msecs)03d %(levelname)-7s %(name)-20s %(filename)-15s %(funcName)30s() : %(message)s",
"datefmt": "%H:%M:%S",
},
},
7 changes: 6 additions & 1 deletion docs/admin/install.md
Original file line number Diff line number Diff line change
@@ -71,7 +71,12 @@ Set up your chosen chat platform:
!!! warning
Follow the [Nautobot App Installation Instructions](https://nautobot.readthedocs.io/en/stable/plugins/#installing-plugins) for complete and most recent guidelines.

The App is a Python package available on PyPI, installable with `pip`:
## Install Guide

!!! note
Apps can be installed from the [Python Package Index](https://pypi.org/) or locally. See the [Nautobot documentation](https://docs.nautobot.com/projects/core/en/stable/user-guide/administration/installation/app-install/) for more details. The pip package name for this app is [`nautobot-chatops`](https://pypi.org/project/nautobot-chatops/).

The app is available as a Python package via PyPI and can be installed with `pip`:

```shell
pip install nautobot-chatops
37 changes: 17 additions & 20 deletions docs/dev/contributing.md
Original file line number Diff line number Diff line change
@@ -181,33 +181,30 @@ these checks):

The branching policy includes the following tenets:

- The `develop` branch is the primary branch to develop off of.
- The `develop` branch is the branch of the next major and minor paired version planned.
- PRs intended to add new features should be sourced from the `develop` branch.
- PRs intended to address bug fixes and security patches should be sourced from the `develop` branch.
- PRs intended to add new features that break backward compatibility should be discussed before a PR is created.
- PRs intended to fix issues in the Nautobot LTM compatible release should be sourced from the latest `ltm-<major.minor>` branch instead of `develop`.

Nautobot ChatOps app will observe semantic versioning, as of 1.0. This may result in a quick turn around in minor versions to keep pace with an ever-growing feature set.
Nautobot ChatOps App will observe semantic versioning, as of 1.0. This may result in a quick turnaround in minor versions to keep pace with an ever growing feature set.

## Release Policy

Nautobot ChatOps currently has no intended scheduled release schedule, and will release new features in minor versions.
Nautobot ChatOps App has currently no intended scheduled release schedule, and will release new features in minor versions.

When a new release of any kind (e.g. from `develop` to `main`, or a release of a `stable-<major>.<minor>`) is created the following should happen.
When a new release, from `develop` to `main`, is created the following should happen.

- A release PR is created:
- Add and/or update to the changelog in `docs/admin/release_notes/version_<major>.<minor>.md` file to reflect the changes.
- Update the mkdocs.yml file to include updates when adding a new release_notes version file.
- Change the version from `<major>.<minor>.<patch>-beta` to `<major>.<minor>.<patch>` in `pyproject.toml`.
- Set the PR to the proper branch, e.g. either `main` or `stable-<major>.<minor>`.
- A release PR is created from `develop` with:
- Update the release notes in `docs/admin/release_notes/version_<major>.<minor>.md` file to reflect the changes.
- Change the version from `<major>.<minor>.<patch>-beta` to `<major>.<minor>.<patch>` in `pyproject.toml`.
- Set the PR to the `main` branch.
- Ensure the tests for the PR pass.
- Merge the PR.
- Create a new tag:
- The tag should be in the form of `v<major>.<minor>.<patch>`.
- The title should be in the form of `v<major>.<minor>.<patch>`.
- The description should be the changes that were added to the `version_<major>.<minor>.md` document.
- If merged into `main`, then push from `main` to `develop`, in order to retain the merge commit created when the PR was merged.
- If there is a new `<major>.<minor>`, create a `stable-<major>.<minor>` for the **previous** version, so that security updates to old versions may be applied more easily.
- A post release PR is created:
- Change the version from `<major>.<minor>.<patch>` to `<major>.<minor>.<patch + 1>-beta` in `pyproject.toml`.
- Set the PR to the proper branch, e.g. either `develop` or `stable-<major>.<minor>`.
- Once tests pass, merge.
- The tag should be in the form of `v<major>.<minor>.<patch>`.
- The title should be in the form of `v<major>.<minor>.<patch>`.
- The description should be the changes that were added to the `version_<major>.<minor>.md` document.
- If merged into `main`, then push from `main` to `develop`, in order to retain the merge commit created when the PR was merged
- A post release PR is created with:
- Change the version from `<major>.<minor>.<patch>` to `<major>.<minor>.<patch + 1>-beta` in both `pyproject.toml` and `nautobot.__init__.__version__`.
- Set the PR to the proper branch, `develop`.
- Once tests pass, merge.
Loading
Loading