azure-deploy-cli 1.0.0__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.github/workflows/1-3-release.yaml +5 -6
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.github/workflows/2-build.yaml +6 -2
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/CHANGELOG.md +10 -0
- azure_deploy_cli-1.0.2/CONTRIBUTING.md +163 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/Makefile +10 -11
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/PKG-INFO +26 -58
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/README.md +6 -37
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/pyproject.toml +26 -8
- azure_deploy_cli-1.0.2/setup.sh +35 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/_version.py +3 -3
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/bash/aca-cert/create.sh +2 -1
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli.egg-info/PKG-INFO +26 -58
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli.egg-info/SOURCES.txt +2 -2
- azure_deploy_cli-1.0.2/src/azure_deploy_cli.egg-info/requires.txt +20 -0
- azure_deploy_cli-1.0.2/uv.lock +1463 -0
- azure_deploy_cli-1.0.0/requirements-dev.txt +0 -10
- azure_deploy_cli-1.0.0/requirements.txt +0 -8
- azure_deploy_cli-1.0.0/setup.sh +0 -52
- azure_deploy_cli-1.0.0/src/azure_deploy_cli.egg-info/requires.txt +0 -20
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.github/dependabot.yml +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.github/workflows/1-1-pr-build-check.yaml +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.github/workflows/1-2-staging.yaml +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.gitignore +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/.pre-commit-config.yaml +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/LICENSE +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/setup.cfg +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/__init__.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/aca_cli.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/bash/aca-cert/destroy.sh +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/deploy_aca.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/model.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/yaml_loader.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/cli.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/__init__.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/group.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/identity_cli.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/managed_identity.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/models.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/py.typed +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/role.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/identity/service_principal.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/py.typed +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/__init__.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/azure_cli.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/docker.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/env.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/key_vault.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/logging.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/utils/py.typed +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli.egg-info/dependency_links.txt +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli.egg-info/entry_points.txt +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli.egg-info/top_level.txt +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/__init__.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/fixtures/.env.example +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/identity/__init__.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/identity/test_models.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/roles-config.json +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test.sh +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_aca_cli.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_deploy_aca.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_env.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_package.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_probe_config.py +0 -0
- {azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/tests/test_retag_image.py +0 -0
|
@@ -61,16 +61,15 @@ jobs:
|
|
|
61
61
|
uses: actions/setup-python@v6
|
|
62
62
|
with:
|
|
63
63
|
python-version: '3.11'
|
|
64
|
-
cache: 'pip'
|
|
65
64
|
|
|
66
|
-
- name: Install
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
- name: Install uv
|
|
66
|
+
uses: astral-sh/setup-uv@v3
|
|
67
|
+
with:
|
|
68
|
+
enable-cache: true
|
|
70
69
|
|
|
71
70
|
- name: Build package
|
|
72
71
|
run: |
|
|
73
|
-
|
|
72
|
+
uv build
|
|
74
73
|
|
|
75
74
|
- name: Publish package distributions to PyPI
|
|
76
75
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -15,10 +15,14 @@ jobs:
|
|
|
15
15
|
uses: actions/setup-python@v6
|
|
16
16
|
with:
|
|
17
17
|
python-version: '3.11'
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
- name: Install uv
|
|
20
|
+
uses: astral-sh/setup-uv@v3
|
|
21
|
+
with:
|
|
22
|
+
enable-cache: true
|
|
19
23
|
|
|
20
24
|
- name: Install dependencies
|
|
21
|
-
run:
|
|
25
|
+
run: source setup.sh --install
|
|
22
26
|
|
|
23
27
|
- name: Lint
|
|
24
28
|
run: make lint
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Contributing to Azure Deploy CLI
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- Python 3.11 or higher
|
|
6
|
+
- `uv` (Python package manager) - [Install uv](https://docs.astral.sh/uv/getting-started/installation/)
|
|
7
|
+
|
|
8
|
+
## Development Setup
|
|
9
|
+
|
|
10
|
+
**Create and activate a virtual environment:**
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
source setup.sh -i
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
This will:
|
|
17
|
+
- Create a `.venv` virtual environment using `uv` with Python 3.11
|
|
18
|
+
- Install all dependencies (base + dev)
|
|
19
|
+
- Print activation instructions
|
|
20
|
+
|
|
21
|
+
**Manual setup without setup.sh:**
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
uv venv -p 3.11 .venv
|
|
25
|
+
source .venv/bin/activate
|
|
26
|
+
uv sync --all-extras
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Managing Dependencies
|
|
30
|
+
|
|
31
|
+
This project uses `uv` for dependency management with pinned versions in `pyproject.toml` for reproducibility.
|
|
32
|
+
|
|
33
|
+
### Tips for pip users transitioning to uv
|
|
34
|
+
|
|
35
|
+
| Task | pip | uv |
|
|
36
|
+
|------|-----|-----|
|
|
37
|
+
| **Install dependencies** | `pip install -r requirements.txt` | `uv sync` |
|
|
38
|
+
| **Add a package** | `pip install package-name` | `uv pip install package-name` |
|
|
39
|
+
| **Create venv** | `python -m venv venv` | `uv venv` |
|
|
40
|
+
| **Freeze dependencies** | `pip freeze > requirements.txt` | `uv pip freeze` or `uv.lock` |
|
|
41
|
+
| **Update lock file** | Manual via pip freeze | `uv sync` (automatic) |
|
|
42
|
+
| **Specify Python version** | N/A | `uv venv -p 3.11` |
|
|
43
|
+
| **Install dev deps** | `pip install -r requirements-dev.txt` | `uv sync --all-extras` |
|
|
44
|
+
|
|
45
|
+
### Adding New Dependencies
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Add to production dependencies
|
|
49
|
+
uv pip install package-name
|
|
50
|
+
|
|
51
|
+
# Add to dev dependencies
|
|
52
|
+
uv pip install --group dev package-name
|
|
53
|
+
|
|
54
|
+
# Update lock file and sync
|
|
55
|
+
uv sync
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then update `pyproject.toml` to include the new dependency with its pinned version (run `uv pip freeze` to get the exact version).
|
|
59
|
+
|
|
60
|
+
## Build and Test Commands
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
make install-dev # Install with dev tools
|
|
64
|
+
make build # Run lint + type-check + test
|
|
65
|
+
make lint # Code linting with ruff
|
|
66
|
+
make format # Auto-format code
|
|
67
|
+
make type-check # Type checking with mypy
|
|
68
|
+
make test # Run tests with pytest
|
|
69
|
+
make test-cov # Run tests with coverage report
|
|
70
|
+
make clean # Remove build artifacts
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Version Management and Changelog
|
|
74
|
+
|
|
75
|
+
This project uses a dual-tool approach for versioning and releases:
|
|
76
|
+
|
|
77
|
+
- **[setuptools-scm](https://setuptools-scm.readthedocs.io/)** - Automatic versioning based on git tags (dynamic at build time)
|
|
78
|
+
- **[commitizen](https://commitizen-tools.github.io/commitizen/)** - Version bumping and tagging with semantic versioning
|
|
79
|
+
- **[git-cliff](https://git-cliff.org/)** - Automatic changelog generation from conventional commits
|
|
80
|
+
|
|
81
|
+
### Release Workflow
|
|
82
|
+
|
|
83
|
+
1. **Create a commit** using [Conventional Commits](https://www.conventionalcommits.org/) format (e.g., `feat: add feature`, `fix: resolve bug`)
|
|
84
|
+
- Optionally use `make commit` for interactive conventional commit creation with `commitizen`
|
|
85
|
+
2. **git-cliff** automatically generates changelog from commits since last tag
|
|
86
|
+
3. **commitizen** bumps version and creates git tag
|
|
87
|
+
4. **New version is committed** alongside updated CHANGELOG
|
|
88
|
+
5. **Git tag** triggers PyPI publishing and GitHub Release
|
|
89
|
+
|
|
90
|
+
**No manual version or changelog updates are needed** — all are generated automatically.
|
|
91
|
+
|
|
92
|
+
### Commit Convention
|
|
93
|
+
|
|
94
|
+
Use [Conventional Commits](https://www.conventionalcommits.org/) format:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
<type>(<scope>): <subject>
|
|
98
|
+
|
|
99
|
+
<body>
|
|
100
|
+
|
|
101
|
+
<footer>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Type:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`
|
|
105
|
+
|
|
106
|
+
**Examples:**
|
|
107
|
+
- `feat: add support for cosmos-db roles`
|
|
108
|
+
- `fix: correct azure identity authentication`
|
|
109
|
+
- `docs: update ACA deployment example`
|
|
110
|
+
- `chore: upgrade dependencies`
|
|
111
|
+
|
|
112
|
+
### Making a Release
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Ensure all changes are committed
|
|
116
|
+
git status
|
|
117
|
+
|
|
118
|
+
# Create a conventional commit
|
|
119
|
+
make commit
|
|
120
|
+
|
|
121
|
+
# Commitizen will:
|
|
122
|
+
# - Bump version (major/minor/patch)
|
|
123
|
+
# - Create git tag
|
|
124
|
+
# - Update CHANGELOG
|
|
125
|
+
# - Commit changes
|
|
126
|
+
|
|
127
|
+
# Push changes and tag
|
|
128
|
+
git push origin main --tags
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The CI/CD pipeline will automatically:
|
|
132
|
+
- Build the package
|
|
133
|
+
- Run tests
|
|
134
|
+
- Publish to PyPI
|
|
135
|
+
- Create a GitHub Release
|
|
136
|
+
|
|
137
|
+
## Pre-commit Hooks
|
|
138
|
+
|
|
139
|
+
Pre-commit hooks are automatically installed during development setup and enforce code quality standards:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Manually run pre-commit on all files
|
|
143
|
+
pre-commit run --all-files
|
|
144
|
+
|
|
145
|
+
# Run specific hook
|
|
146
|
+
pre-commit run ruff --all-files
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Scripting and Output Handling
|
|
150
|
+
|
|
151
|
+
This CLI is designed for both interactive use and automated scripting. To support this, it separates output streams:
|
|
152
|
+
|
|
153
|
+
- **`stderr`**: All human-readable logs, progress indicators, and error messages
|
|
154
|
+
- **`stdout`**: All machine-readable output (e.g., revision names, IDs)
|
|
155
|
+
|
|
156
|
+
When developing features that produce output:
|
|
157
|
+
- Use `sys.stderr` for logging and user-facing messages
|
|
158
|
+
- Use `sys.stdout` for machine-readable output only
|
|
159
|
+
- This allows scripts to cleanly capture output while still seeing logs
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
Mozilla Public License 2.0 - See LICENSE file for details
|
|
@@ -18,34 +18,33 @@ help:
|
|
|
18
18
|
@echo " build Run linting, type checking, and tests"
|
|
19
19
|
|
|
20
20
|
setup-hooks:
|
|
21
|
-
pre-commit install
|
|
22
|
-
pre-commit install --hook-type commit-msg
|
|
21
|
+
uv run pre-commit install
|
|
22
|
+
uv run pre-commit install --hook-type commit-msg
|
|
23
23
|
|
|
24
24
|
install:
|
|
25
|
-
|
|
26
|
-
$(MAKE) setup-hooks
|
|
25
|
+
uv sync
|
|
27
26
|
|
|
28
27
|
install-dev:
|
|
29
|
-
|
|
28
|
+
uv sync --all-extras
|
|
30
29
|
$(MAKE) setup-hooks
|
|
31
30
|
|
|
32
31
|
commit:
|
|
33
|
-
cz commit
|
|
32
|
+
uv run cz commit
|
|
34
33
|
|
|
35
34
|
lint:
|
|
36
|
-
ruff check src/ tests/ 2>/dev/null || echo "No issues found"
|
|
35
|
+
uv run ruff check src/ tests/ 2>/dev/null || echo "No issues found"
|
|
37
36
|
|
|
38
37
|
format:
|
|
39
|
-
ruff format src/ tests/
|
|
38
|
+
uv run ruff format src/ tests/
|
|
40
39
|
|
|
41
40
|
type-check:
|
|
42
|
-
mypy src/azure_deploy_cli
|
|
41
|
+
uv run mypy src/azure_deploy_cli
|
|
43
42
|
|
|
44
43
|
test:
|
|
45
|
-
pytest tests/ -v
|
|
44
|
+
uv run pytest tests/ -v
|
|
46
45
|
|
|
47
46
|
test-cov:
|
|
48
|
-
pytest tests/ -v --cov=src/azure_deploy_cli --cov-report=html --cov-report=term-missing
|
|
47
|
+
uv run pytest tests/ -v --cov=src/azure_deploy_cli --cov-report=html --cov-report=term-missing
|
|
49
48
|
|
|
50
49
|
clean:
|
|
51
50
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: azure-deploy-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: Python CLI for Azure deployment automation - identity, roles, and container apps management
|
|
5
5
|
Author-email: decewei <celinew1221@gmail.com>
|
|
6
6
|
License: Mozilla Public License Version 2.0
|
|
@@ -386,76 +386,58 @@ Classifier: Intended Audience :: Developers
|
|
|
386
386
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
387
387
|
Classifier: Natural Language :: English
|
|
388
388
|
Classifier: Programming Language :: Python :: 3
|
|
389
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
390
389
|
Classifier: Programming Language :: Python :: 3.11
|
|
391
390
|
Classifier: Programming Language :: Python :: 3.12
|
|
392
|
-
Requires-Python: >=3.
|
|
391
|
+
Requires-Python: >=3.11
|
|
393
392
|
Description-Content-Type: text/markdown
|
|
394
393
|
License-File: LICENSE
|
|
395
|
-
Requires-Dist: azure-identity
|
|
396
|
-
Requires-Dist: azure-mgmt-appcontainers
|
|
397
|
-
Requires-Dist: azure-mgmt-authorization
|
|
398
|
-
Requires-Dist: azure-mgmt-keyvault
|
|
399
|
-
Requires-Dist: azure-mgmt-msi
|
|
400
|
-
Requires-Dist: python-dotenv
|
|
401
|
-
Requires-Dist: pydantic
|
|
402
|
-
Requires-Dist:
|
|
394
|
+
Requires-Dist: azure-identity==1.25.1
|
|
395
|
+
Requires-Dist: azure-mgmt-appcontainers==4.0.0
|
|
396
|
+
Requires-Dist: azure-mgmt-authorization==4.0.0
|
|
397
|
+
Requires-Dist: azure-mgmt-keyvault==13.0.0
|
|
398
|
+
Requires-Dist: azure-mgmt-msi==7.1.0
|
|
399
|
+
Requires-Dist: python-dotenv==1.2.1
|
|
400
|
+
Requires-Dist: pydantic==2.12.5
|
|
401
|
+
Requires-Dist: PyYAML==6.0.3
|
|
403
402
|
Provides-Extra: dev
|
|
404
|
-
Requires-Dist: ruff
|
|
405
|
-
Requires-Dist: mypy
|
|
406
|
-
Requires-Dist: pytest
|
|
407
|
-
Requires-Dist: pytest-asyncio
|
|
408
|
-
Requires-Dist: coverage
|
|
409
|
-
Requires-Dist: pytest-cov
|
|
410
|
-
Requires-Dist: commitizen
|
|
411
|
-
Requires-Dist: pre-commit
|
|
412
|
-
Requires-Dist: types-setuptools; extra == "dev"
|
|
413
|
-
Requires-Dist: types-PyYAML; extra == "dev"
|
|
403
|
+
Requires-Dist: ruff==0.14.10; extra == "dev"
|
|
404
|
+
Requires-Dist: mypy==1.19.1; extra == "dev"
|
|
405
|
+
Requires-Dist: pytest==9.0.2; extra == "dev"
|
|
406
|
+
Requires-Dist: pytest-asyncio==1.3.0; extra == "dev"
|
|
407
|
+
Requires-Dist: coverage==7.13.1; extra == "dev"
|
|
408
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
|
|
409
|
+
Requires-Dist: commitizen==4.11.0; extra == "dev"
|
|
410
|
+
Requires-Dist: pre-commit==4.1.0; extra == "dev"
|
|
411
|
+
Requires-Dist: types-setuptools==80.9.0.20251223; extra == "dev"
|
|
412
|
+
Requires-Dist: types-PyYAML==6.0.12.20250915; extra == "dev"
|
|
414
413
|
Dynamic: license-file
|
|
415
414
|
|
|
416
415
|
# Azure Deploy CLI
|
|
417
416
|
|
|
418
417
|
Python CLI for Azure deployment automation - manage identities, roles, and Container Apps deployments.
|
|
419
418
|
|
|
420
|
-
## Version Management and Changelog
|
|
421
|
-
|
|
422
|
-
This project uses a dual-tool approach:
|
|
423
|
-
|
|
424
|
-
- **[setuptools-scm](https://setuptools-scm.readthedocs.io/)** - Automatic versioning based on git tags (dynamic at build time)
|
|
425
|
-
- **[commitizen](https://commitizen-tools.github.io/commitizen/)** - Version bumping and tagging with semantic versioning
|
|
426
|
-
- **[git-cliff](https://git-cliff.org/)** - Automatic changelog generation from conventional commits
|
|
427
|
-
|
|
428
|
-
**Release workflow:**
|
|
429
|
-
1. git-cliff generates changelog from commits since last tag
|
|
430
|
-
2. commitizen bumps version and creates git tag
|
|
431
|
-
3. New version is committed alongside updated changelog
|
|
432
|
-
4. Tag triggers PyPI publishing and GitHub Release
|
|
433
|
-
|
|
434
|
-
No manual version or changelog updates are needed.
|
|
435
|
-
|
|
436
419
|
## Quick Start
|
|
437
420
|
|
|
438
421
|
**Install for development:**
|
|
439
422
|
|
|
440
423
|
```bash
|
|
441
424
|
cd /path/to/azure-deploy-cli
|
|
442
|
-
|
|
425
|
+
source setup.sh -i
|
|
443
426
|
azd --help
|
|
444
427
|
```
|
|
445
428
|
|
|
446
429
|
**Use in another project:**
|
|
447
430
|
|
|
448
431
|
```bash
|
|
449
|
-
pip install -
|
|
432
|
+
pip install azure-deploy-cli
|
|
450
433
|
```
|
|
451
434
|
|
|
452
435
|
## Installation
|
|
453
436
|
|
|
454
|
-
| Method
|
|
455
|
-
|
|
456
|
-
| Local development
|
|
457
|
-
|
|
|
458
|
-
| From PyPI | `pip install azure-deploy-cli` |
|
|
437
|
+
| Method | Command |
|
|
438
|
+
| ------------------- | ----------------------------- |
|
|
439
|
+
| Local development | `source setup.sh -i` |
|
|
440
|
+
| From PyPI | `pip install azure-deploy-cli`|
|
|
459
441
|
|
|
460
442
|
## CLI Commands
|
|
461
443
|
|
|
@@ -656,20 +638,6 @@ azd create-and-assign \
|
|
|
656
638
|
--print
|
|
657
639
|
```
|
|
658
640
|
|
|
659
|
-
## Development
|
|
660
|
-
|
|
661
|
-
```bash
|
|
662
|
-
make install-dev # Install with dev tools
|
|
663
|
-
make build # Run lint + type-check + test
|
|
664
|
-
make lint # Code linting with ruff
|
|
665
|
-
make format # Auto-format code
|
|
666
|
-
make type-check # Type checking with mypy
|
|
667
|
-
make test # Run tests with pytest
|
|
668
|
-
make clean # Remove build artifacts
|
|
669
|
-
```
|
|
670
|
-
|
|
671
|
-
Commit using [Conventional Commits](https://www.conventionalcommits.org/) format (e.g., `feat: add feature`, `fix: resolve bug`)
|
|
672
|
-
|
|
673
641
|
## Scripting and Output Handling
|
|
674
642
|
|
|
675
643
|
This CLI is designed for both interactive use and automated scripting. To support this, it follows the standard practice of separating output streams:
|
|
@@ -2,45 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Python CLI for Azure deployment automation - manage identities, roles, and Container Apps deployments.
|
|
4
4
|
|
|
5
|
-
## Version Management and Changelog
|
|
6
|
-
|
|
7
|
-
This project uses a dual-tool approach:
|
|
8
|
-
|
|
9
|
-
- **[setuptools-scm](https://setuptools-scm.readthedocs.io/)** - Automatic versioning based on git tags (dynamic at build time)
|
|
10
|
-
- **[commitizen](https://commitizen-tools.github.io/commitizen/)** - Version bumping and tagging with semantic versioning
|
|
11
|
-
- **[git-cliff](https://git-cliff.org/)** - Automatic changelog generation from conventional commits
|
|
12
|
-
|
|
13
|
-
**Release workflow:**
|
|
14
|
-
1. git-cliff generates changelog from commits since last tag
|
|
15
|
-
2. commitizen bumps version and creates git tag
|
|
16
|
-
3. New version is committed alongside updated changelog
|
|
17
|
-
4. Tag triggers PyPI publishing and GitHub Release
|
|
18
|
-
|
|
19
|
-
No manual version or changelog updates are needed.
|
|
20
|
-
|
|
21
5
|
## Quick Start
|
|
22
6
|
|
|
23
7
|
**Install for development:**
|
|
24
8
|
|
|
25
9
|
```bash
|
|
26
10
|
cd /path/to/azure-deploy-cli
|
|
27
|
-
|
|
11
|
+
source setup.sh -i
|
|
28
12
|
azd --help
|
|
29
13
|
```
|
|
30
14
|
|
|
31
15
|
**Use in another project:**
|
|
32
16
|
|
|
33
17
|
```bash
|
|
34
|
-
pip install -
|
|
18
|
+
pip install azure-deploy-cli
|
|
35
19
|
```
|
|
36
20
|
|
|
37
21
|
## Installation
|
|
38
22
|
|
|
39
|
-
| Method
|
|
40
|
-
|
|
41
|
-
| Local development
|
|
42
|
-
|
|
|
43
|
-
| From PyPI | `pip install azure-deploy-cli` |
|
|
23
|
+
| Method | Command |
|
|
24
|
+
| ------------------- | ----------------------------- |
|
|
25
|
+
| Local development | `source setup.sh -i` |
|
|
26
|
+
| From PyPI | `pip install azure-deploy-cli`|
|
|
44
27
|
|
|
45
28
|
## CLI Commands
|
|
46
29
|
|
|
@@ -241,20 +224,6 @@ azd create-and-assign \
|
|
|
241
224
|
--print
|
|
242
225
|
```
|
|
243
226
|
|
|
244
|
-
## Development
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
make install-dev # Install with dev tools
|
|
248
|
-
make build # Run lint + type-check + test
|
|
249
|
-
make lint # Code linting with ruff
|
|
250
|
-
make format # Auto-format code
|
|
251
|
-
make type-check # Type checking with mypy
|
|
252
|
-
make test # Run tests with pytest
|
|
253
|
-
make clean # Remove build artifacts
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
Commit using [Conventional Commits](https://www.conventionalcommits.org/) format (e.g., `feat: add feature`, `fix: resolve bug`)
|
|
257
|
-
|
|
258
227
|
## Scripting and Output Handling
|
|
259
228
|
|
|
260
229
|
This CLI is designed for both interactive use and automated scripting. To support this, it follows the standard practice of separating output streams:
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
name = "azure-deploy-cli"
|
|
7
7
|
description = "Python CLI for Azure deployment automation - identity, roles, and container apps management"
|
|
8
8
|
readme = "README.md"
|
|
9
|
-
requires-python = ">=3.
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
10
|
license = {file = "LICENSE"}
|
|
11
11
|
authors = [
|
|
12
12
|
{name = "decewei", email = "celinew1221@gmail.com"}
|
|
@@ -18,18 +18,36 @@ classifiers = [
|
|
|
18
18
|
"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
|
|
19
19
|
"Natural Language :: English",
|
|
20
20
|
"Programming Language :: Python :: 3",
|
|
21
|
-
"Programming Language :: Python :: 3.10",
|
|
22
21
|
"Programming Language :: Python :: 3.11",
|
|
23
22
|
"Programming Language :: Python :: 3.12",
|
|
24
23
|
]
|
|
25
24
|
|
|
26
|
-
dynamic = ["version"
|
|
27
|
-
|
|
28
|
-
[
|
|
29
|
-
|
|
25
|
+
dynamic = ["version"]
|
|
26
|
+
|
|
27
|
+
dependencies = [
|
|
28
|
+
"azure-identity==1.25.1",
|
|
29
|
+
"azure-mgmt-appcontainers==4.0.0",
|
|
30
|
+
"azure-mgmt-authorization==4.0.0",
|
|
31
|
+
"azure-mgmt-keyvault==13.0.0",
|
|
32
|
+
"azure-mgmt-msi==7.1.0",
|
|
33
|
+
"python-dotenv==1.2.1",
|
|
34
|
+
"pydantic==2.12.5",
|
|
35
|
+
"PyYAML==6.0.3",
|
|
36
|
+
]
|
|
30
37
|
|
|
31
|
-
[
|
|
32
|
-
dev =
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
dev = [
|
|
40
|
+
"ruff==0.14.10",
|
|
41
|
+
"mypy==1.19.1",
|
|
42
|
+
"pytest==9.0.2",
|
|
43
|
+
"pytest-asyncio==1.3.0",
|
|
44
|
+
"coverage==7.13.1",
|
|
45
|
+
"pytest-cov==7.0.0",
|
|
46
|
+
"commitizen==4.11.0",
|
|
47
|
+
"pre-commit==4.1.0",
|
|
48
|
+
"types-setuptools==80.9.0.20251223",
|
|
49
|
+
"types-PyYAML==6.0.12.20250915",
|
|
50
|
+
]
|
|
33
51
|
|
|
34
52
|
[project.urls]
|
|
35
53
|
Homepage = "https://github.com/decewei/azure-deploy-cli"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
ENV_DIR=".venv"
|
|
4
|
+
PROD=false
|
|
5
|
+
|
|
6
|
+
while [[ "$#" -gt 0 ]]; do
|
|
7
|
+
case $1 in
|
|
8
|
+
-i|--install) INSTALL_DEPS=true ;;
|
|
9
|
+
-p|--prod) PROD=true ;;
|
|
10
|
+
*) echo "Unknown parameter: $1"; exit 1 ;;
|
|
11
|
+
esac
|
|
12
|
+
shift
|
|
13
|
+
done
|
|
14
|
+
|
|
15
|
+
# Create virtual environment with uv (Python 3.11 specified)
|
|
16
|
+
if [ ! -d "$ENV_DIR" ]; then
|
|
17
|
+
echo "Creating virtual environment '$ENV_DIR' with uv..."
|
|
18
|
+
uv venv -p 3.11 "$ENV_DIR"
|
|
19
|
+
echo "Created virtual env $ENV_DIR"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Activate the virtual environment
|
|
23
|
+
source "$ENV_DIR/bin/activate"
|
|
24
|
+
|
|
25
|
+
if [ "$INSTALL_DEPS" = true ]; then
|
|
26
|
+
if [ "$PROD" = true ]; then
|
|
27
|
+
echo "Installing production dependencies with uv..."
|
|
28
|
+
make install
|
|
29
|
+
else
|
|
30
|
+
echo "Installing dependencies with uv..."
|
|
31
|
+
make install-dev
|
|
32
|
+
fi
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
echo "Type \`deactivate\` to exit the virtual environment."
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
31
|
+
__version__ = version = '1.0.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 0, 2)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'ga56b006bf'
|
{azure_deploy_cli-1.0.0 → azure_deploy_cli-1.0.2}/src/azure_deploy_cli/aca/bash/aca-cert/create.sh
RENAMED
|
@@ -88,6 +88,7 @@ bind() {
|
|
|
88
88
|
# use dig to verify the asuid txt record exists on the DNS host
|
|
89
89
|
# azure requires this to exist prior to adding the domain
|
|
90
90
|
# azure's dns can also be slow, so best to check propagation
|
|
91
|
+
# you need TXT record with verification code added to your dns manager
|
|
91
92
|
tries=0
|
|
92
93
|
until [ "$tries" -ge 12 ]; do
|
|
93
94
|
[[ ! -z $(dig @8.8.8.8 txt asuid.$CUSTOM_DOMAIN +short) ]] && break
|
|
@@ -136,7 +137,7 @@ bind() {
|
|
|
136
137
|
-g $ENV_RESOURCE_GROUP \
|
|
137
138
|
-n $CONTAINER_APP_ENV_NAME \
|
|
138
139
|
--hostname $CUSTOM_DOMAIN \
|
|
139
|
-
--validation-method
|
|
140
|
+
--validation-method TXT \
|
|
140
141
|
--query "id" \
|
|
141
142
|
--output tsv
|
|
142
143
|
)
|