doploy-cli 0.2.0__tar.gz → 0.2.1__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.
- doploy_cli-0.2.1/PKG-INFO +155 -0
- doploy_cli-0.2.1/README.md +133 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli/main.py +21 -20
- doploy_cli-0.2.1/doploy_cli.egg-info/PKG-INFO +155 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/pyproject.toml +2 -2
- doploy_cli-0.2.0/PKG-INFO +0 -63
- doploy_cli-0.2.0/README.md +0 -41
- doploy_cli-0.2.0/doploy_cli.egg-info/PKG-INFO +0 -63
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/LICENSE +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli/__init__.py +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli.egg-info/SOURCES.txt +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli.egg-info/dependency_links.txt +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli.egg-info/entry_points.txt +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli.egg-info/requires.txt +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/doploy_cli.egg-info/top_level.txt +0 -0
- {doploy_cli-0.2.0 → doploy_cli-0.2.1}/setup.cfg +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: doploy-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal
|
|
5
|
+
License: MIT
|
|
6
|
+
Project-URL: Homepage, https://doploy.io
|
|
7
|
+
Project-URL: Documentation, https://docs.doploy.io
|
|
8
|
+
Project-URL: Dashboard, https://cloud.doploy.io
|
|
9
|
+
Keywords: doploy,odoo,deploy,ci,cli
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: httpx>=0.27
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
|
|
23
|
+
# doploy CLI
|
|
24
|
+
|
|
25
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
26
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
27
|
+
[](https://opensource.org/licenses/MIT)
|
|
28
|
+
|
|
29
|
+
The command line for [doploy](https://doploy.io), the Odoo hosting and CI platform.
|
|
30
|
+
Watch builds, read test results and logs, and drive deployments from your terminal.
|
|
31
|
+
|
|
32
|
+
```console
|
|
33
|
+
$ doploy builds acme --type development
|
|
34
|
+
ID TYPE STATUS FQDN COMMIT_SHA CREATED
|
|
35
|
+
418 development Active Error doploy-k3j9x2.doploy.site 9f1c2ab 2026-09-11T14:02:11
|
|
36
|
+
|
|
37
|
+
$ doploy tests 418
|
|
38
|
+
build 418 [Active Error] — 1 errors, 0 failures, 2 warnings
|
|
39
|
+
|
|
40
|
+
[ERROR] sale_custom.test_discounts
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Install
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pipx install doploy-cli
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
or with `pip`, `uv`, or `pip install --user`:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install doploy-cli
|
|
53
|
+
uv tool install doploy-cli
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Requires Python 3.10 or newer.
|
|
57
|
+
|
|
58
|
+
## Sign in
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
doploy login
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Your browser opens, you sign in with your doploy account, and the CLI is connected.
|
|
65
|
+
Sessions renew themselves. Sign out with `doploy logout`.
|
|
66
|
+
|
|
67
|
+
What the CLI may do is decided per app in **Settings → Connected apps** on the doploy
|
|
68
|
+
dashboard: read only, or read and deploy, on all projects or only some. Change it there at any
|
|
69
|
+
time; the change applies on the CLI's next command.
|
|
70
|
+
|
|
71
|
+
## Quick start
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
doploy projects # your projects and their ids
|
|
75
|
+
doploy builds <project-id> --type staging # recent builds
|
|
76
|
+
doploy build <build-id> # one build in full
|
|
77
|
+
doploy tests <build-id> --details # test failures with tracebacks
|
|
78
|
+
doploy logs <build-id> --source test -f # follow the test log until the build settles
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Commands
|
|
82
|
+
|
|
83
|
+
| Command | Description |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `login` | Sign in with your browser |
|
|
86
|
+
| `logout` | Forget the saved session |
|
|
87
|
+
| `projects` | List your projects |
|
|
88
|
+
| `builds <project>` | Recent builds for a project. `--type development\|staging\|production`, `--limit` |
|
|
89
|
+
| `build <id>` | One build: status, commit, versions, error summary |
|
|
90
|
+
| `tests <build>` | Test failures for a build. `--details` prints tracebacks, `--warnings` includes warnings |
|
|
91
|
+
| `logs <build>` | Tail logs. `--source build\|test\|odoo`, `--lines`, `--filter TEXT`, `-f` to follow |
|
|
92
|
+
| `branch create <project> <name>` | Fork a development branch on GitHub and queue its build. `--from <branch-id>` |
|
|
93
|
+
| `rebuild <build>` | Queue a rebuild of a deployment |
|
|
94
|
+
| `restart <build>` | Restart the Odoo service |
|
|
95
|
+
| `update-modules <build> [modules]` | Run `odoo-bin -u` on the modules doploy detected as changed, or the ones you list. `--theme`, `--no-theme`, `--wait` |
|
|
96
|
+
| `operation <id>` | Check a queued module update. `--wait` |
|
|
97
|
+
| `backup <build>` | Take a database and filestore backup. `--comment`, `--wait` |
|
|
98
|
+
|
|
99
|
+
Commands that print tables accept `--json` for machine-readable output.
|
|
100
|
+
|
|
101
|
+
Anything aimed at a **production** deployment requires `--confirm`. Nothing destructive is
|
|
102
|
+
available: no deletes, no restores, no domain changes.
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
**Why did my build fail?**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
doploy builds acme --type development --limit 1
|
|
110
|
+
doploy tests 418 --details
|
|
111
|
+
doploy logs 418 --source test --filter ERROR
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Follow a build as it runs**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
doploy logs 419 --source test -f
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Exits on its own when the build settles. `--source odoo` follows the running container's log
|
|
121
|
+
instead and runs until Ctrl-C.
|
|
122
|
+
|
|
123
|
+
**Ship a change to staging**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
doploy update-modules 302 --wait
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Updates exactly the modules doploy saw change in the last code update, waits for Odoo to finish,
|
|
130
|
+
and exits non-zero if the update failed. Add `--theme` to rebuild website theme assets, or leave it
|
|
131
|
+
out and doploy decides from the module list.
|
|
132
|
+
|
|
133
|
+
**Take a backup first**
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
doploy backup 301 --confirm --wait --comment "before v2.4"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Log sources
|
|
140
|
+
|
|
141
|
+
| `--source` | What you get |
|
|
142
|
+
|---|---|
|
|
143
|
+
| `build` | doploy's own build log and error summary. Fast, default. |
|
|
144
|
+
| `test` | The Odoo test run output of a development build. What actually failed. |
|
|
145
|
+
| `odoo` | The running Odoo container's log. Runtime tracebacks on staging and production. |
|
|
146
|
+
|
|
147
|
+
## Links
|
|
148
|
+
|
|
149
|
+
- Documentation: https://docs.doploy.io/agents/cli
|
|
150
|
+
- Dashboard: https://cloud.doploy.io
|
|
151
|
+
- Support: support@doploy.io
|
|
152
|
+
|
|
153
|
+
## License
|
|
154
|
+
|
|
155
|
+
MIT
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# doploy CLI
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
4
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
The command line for [doploy](https://doploy.io), the Odoo hosting and CI platform.
|
|
8
|
+
Watch builds, read test results and logs, and drive deployments from your terminal.
|
|
9
|
+
|
|
10
|
+
```console
|
|
11
|
+
$ doploy builds acme --type development
|
|
12
|
+
ID TYPE STATUS FQDN COMMIT_SHA CREATED
|
|
13
|
+
418 development Active Error doploy-k3j9x2.doploy.site 9f1c2ab 2026-09-11T14:02:11
|
|
14
|
+
|
|
15
|
+
$ doploy tests 418
|
|
16
|
+
build 418 [Active Error] — 1 errors, 0 failures, 2 warnings
|
|
17
|
+
|
|
18
|
+
[ERROR] sale_custom.test_discounts
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pipx install doploy-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
or with `pip`, `uv`, or `pip install --user`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install doploy-cli
|
|
31
|
+
uv tool install doploy-cli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Requires Python 3.10 or newer.
|
|
35
|
+
|
|
36
|
+
## Sign in
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
doploy login
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Your browser opens, you sign in with your doploy account, and the CLI is connected.
|
|
43
|
+
Sessions renew themselves. Sign out with `doploy logout`.
|
|
44
|
+
|
|
45
|
+
What the CLI may do is decided per app in **Settings → Connected apps** on the doploy
|
|
46
|
+
dashboard: read only, or read and deploy, on all projects or only some. Change it there at any
|
|
47
|
+
time; the change applies on the CLI's next command.
|
|
48
|
+
|
|
49
|
+
## Quick start
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
doploy projects # your projects and their ids
|
|
53
|
+
doploy builds <project-id> --type staging # recent builds
|
|
54
|
+
doploy build <build-id> # one build in full
|
|
55
|
+
doploy tests <build-id> --details # test failures with tracebacks
|
|
56
|
+
doploy logs <build-id> --source test -f # follow the test log until the build settles
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Commands
|
|
60
|
+
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---|---|
|
|
63
|
+
| `login` | Sign in with your browser |
|
|
64
|
+
| `logout` | Forget the saved session |
|
|
65
|
+
| `projects` | List your projects |
|
|
66
|
+
| `builds <project>` | Recent builds for a project. `--type development\|staging\|production`, `--limit` |
|
|
67
|
+
| `build <id>` | One build: status, commit, versions, error summary |
|
|
68
|
+
| `tests <build>` | Test failures for a build. `--details` prints tracebacks, `--warnings` includes warnings |
|
|
69
|
+
| `logs <build>` | Tail logs. `--source build\|test\|odoo`, `--lines`, `--filter TEXT`, `-f` to follow |
|
|
70
|
+
| `branch create <project> <name>` | Fork a development branch on GitHub and queue its build. `--from <branch-id>` |
|
|
71
|
+
| `rebuild <build>` | Queue a rebuild of a deployment |
|
|
72
|
+
| `restart <build>` | Restart the Odoo service |
|
|
73
|
+
| `update-modules <build> [modules]` | Run `odoo-bin -u` on the modules doploy detected as changed, or the ones you list. `--theme`, `--no-theme`, `--wait` |
|
|
74
|
+
| `operation <id>` | Check a queued module update. `--wait` |
|
|
75
|
+
| `backup <build>` | Take a database and filestore backup. `--comment`, `--wait` |
|
|
76
|
+
|
|
77
|
+
Commands that print tables accept `--json` for machine-readable output.
|
|
78
|
+
|
|
79
|
+
Anything aimed at a **production** deployment requires `--confirm`. Nothing destructive is
|
|
80
|
+
available: no deletes, no restores, no domain changes.
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
**Why did my build fail?**
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
doploy builds acme --type development --limit 1
|
|
88
|
+
doploy tests 418 --details
|
|
89
|
+
doploy logs 418 --source test --filter ERROR
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Follow a build as it runs**
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
doploy logs 419 --source test -f
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Exits on its own when the build settles. `--source odoo` follows the running container's log
|
|
99
|
+
instead and runs until Ctrl-C.
|
|
100
|
+
|
|
101
|
+
**Ship a change to staging**
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
doploy update-modules 302 --wait
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Updates exactly the modules doploy saw change in the last code update, waits for Odoo to finish,
|
|
108
|
+
and exits non-zero if the update failed. Add `--theme` to rebuild website theme assets, or leave it
|
|
109
|
+
out and doploy decides from the module list.
|
|
110
|
+
|
|
111
|
+
**Take a backup first**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
doploy backup 301 --confirm --wait --comment "before v2.4"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Log sources
|
|
118
|
+
|
|
119
|
+
| `--source` | What you get |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `build` | doploy's own build log and error summary. Fast, default. |
|
|
122
|
+
| `test` | The Odoo test run output of a development build. What actually failed. |
|
|
123
|
+
| `odoo` | The running Odoo container's log. Runtime tracebacks on staging and production. |
|
|
124
|
+
|
|
125
|
+
## Links
|
|
126
|
+
|
|
127
|
+
- Documentation: https://docs.doploy.io/agents/cli
|
|
128
|
+
- Dashboard: https://cloud.doploy.io
|
|
129
|
+
- Support: support@doploy.io
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
MIT
|
|
@@ -383,27 +383,28 @@ def cmd_update_modules(args):
|
|
|
383
383
|
body['install_theme'] = args.theme
|
|
384
384
|
data = _client(args).request('POST', f'/builds/{args.build_id}/update-modules', json=body)
|
|
385
385
|
theme = ' with INSTALL_THEME=1' if data.get('install_theme') else ''
|
|
386
|
-
print(f"update queued (
|
|
386
|
+
print(f"update queued (operation {data['operation_id']}): {', '.join(data['modules'])}{theme}")
|
|
387
387
|
if not args.wait:
|
|
388
|
-
print(f"
|
|
388
|
+
print(f"check with: doploy operation {data['operation_id']}")
|
|
389
389
|
return
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
if
|
|
390
|
+
op = _wait_for_operation(_client(args), data['operation_id'], args.interval)
|
|
391
|
+
_print_operation(op)
|
|
392
|
+
if op['status'] != 'completed' or (op.get('result') or {}).get('ok') is False:
|
|
393
393
|
sys.exit(1)
|
|
394
394
|
|
|
395
395
|
|
|
396
|
-
def
|
|
396
|
+
def _wait_for_operation(client: Client, operation_id: int, interval: float) -> dict:
|
|
397
397
|
while True:
|
|
398
|
-
|
|
399
|
-
if
|
|
400
|
-
return
|
|
398
|
+
op = client.request('GET', f'/operations/{operation_id}')['operation']
|
|
399
|
+
if op['status'] in ('completed', 'failed', 'cancelled'):
|
|
400
|
+
return op
|
|
401
401
|
time.sleep(interval)
|
|
402
402
|
|
|
403
403
|
|
|
404
|
-
def
|
|
405
|
-
|
|
406
|
-
|
|
404
|
+
def _print_operation(op: dict) -> None:
|
|
405
|
+
what = f"update modules {', '.join(op['modules'])}" if op.get('modules') else op.get('kind') or 'operation'
|
|
406
|
+
print(f"operation {op['id']} [{op['status']}] {what}")
|
|
407
|
+
result = op.get('result')
|
|
407
408
|
if result:
|
|
408
409
|
if 'exit_code' in result:
|
|
409
410
|
print(f"exit code: {result['exit_code']}")
|
|
@@ -413,14 +414,14 @@ def _print_task(task: dict) -> None:
|
|
|
413
414
|
print(result['output'])
|
|
414
415
|
|
|
415
416
|
|
|
416
|
-
def
|
|
417
|
+
def cmd_operation(args):
|
|
417
418
|
client = _client(args)
|
|
418
|
-
|
|
419
|
-
else client.request('GET', f'/
|
|
419
|
+
op = _wait_for_operation(client, args.operation_id, args.interval) if args.wait \
|
|
420
|
+
else client.request('GET', f'/operations/{args.operation_id}')['operation']
|
|
420
421
|
if args.json:
|
|
421
|
-
print(json.dumps(
|
|
422
|
+
print(json.dumps(op, indent=2))
|
|
422
423
|
return
|
|
423
|
-
|
|
424
|
+
_print_operation(op)
|
|
424
425
|
|
|
425
426
|
|
|
426
427
|
def cmd_backup(args):
|
|
@@ -529,12 +530,12 @@ def main(argv=None):
|
|
|
529
530
|
sp.add_argument('--interval', type=float, default=10.0, help='poll seconds for --wait')
|
|
530
531
|
sp.set_defaults(func=cmd_update_modules)
|
|
531
532
|
|
|
532
|
-
sp = sub.add_parser('
|
|
533
|
-
sp.add_argument('
|
|
533
|
+
sp = sub.add_parser('operation', help='check a queued module update')
|
|
534
|
+
sp.add_argument('operation_id', type=int)
|
|
534
535
|
sp.add_argument('--wait', action='store_true', help='block until it finishes')
|
|
535
536
|
sp.add_argument('--interval', type=float, default=10.0)
|
|
536
537
|
sp.add_argument('--json', action='store_true')
|
|
537
|
-
sp.set_defaults(func=
|
|
538
|
+
sp.set_defaults(func=cmd_operation)
|
|
538
539
|
|
|
539
540
|
sp = sub.add_parser('backup', help='start a backup of a deployment (deploy scope)')
|
|
540
541
|
sp.add_argument('build_id', type=int)
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: doploy-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal
|
|
5
|
+
License: MIT
|
|
6
|
+
Project-URL: Homepage, https://doploy.io
|
|
7
|
+
Project-URL: Documentation, https://docs.doploy.io
|
|
8
|
+
Project-URL: Dashboard, https://cloud.doploy.io
|
|
9
|
+
Keywords: doploy,odoo,deploy,ci,cli
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: httpx>=0.27
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
|
|
23
|
+
# doploy CLI
|
|
24
|
+
|
|
25
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
26
|
+
[](https://pypi.org/project/doploy-cli/)
|
|
27
|
+
[](https://opensource.org/licenses/MIT)
|
|
28
|
+
|
|
29
|
+
The command line for [doploy](https://doploy.io), the Odoo hosting and CI platform.
|
|
30
|
+
Watch builds, read test results and logs, and drive deployments from your terminal.
|
|
31
|
+
|
|
32
|
+
```console
|
|
33
|
+
$ doploy builds acme --type development
|
|
34
|
+
ID TYPE STATUS FQDN COMMIT_SHA CREATED
|
|
35
|
+
418 development Active Error doploy-k3j9x2.doploy.site 9f1c2ab 2026-09-11T14:02:11
|
|
36
|
+
|
|
37
|
+
$ doploy tests 418
|
|
38
|
+
build 418 [Active Error] — 1 errors, 0 failures, 2 warnings
|
|
39
|
+
|
|
40
|
+
[ERROR] sale_custom.test_discounts
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Install
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pipx install doploy-cli
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
or with `pip`, `uv`, or `pip install --user`:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install doploy-cli
|
|
53
|
+
uv tool install doploy-cli
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Requires Python 3.10 or newer.
|
|
57
|
+
|
|
58
|
+
## Sign in
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
doploy login
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Your browser opens, you sign in with your doploy account, and the CLI is connected.
|
|
65
|
+
Sessions renew themselves. Sign out with `doploy logout`.
|
|
66
|
+
|
|
67
|
+
What the CLI may do is decided per app in **Settings → Connected apps** on the doploy
|
|
68
|
+
dashboard: read only, or read and deploy, on all projects or only some. Change it there at any
|
|
69
|
+
time; the change applies on the CLI's next command.
|
|
70
|
+
|
|
71
|
+
## Quick start
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
doploy projects # your projects and their ids
|
|
75
|
+
doploy builds <project-id> --type staging # recent builds
|
|
76
|
+
doploy build <build-id> # one build in full
|
|
77
|
+
doploy tests <build-id> --details # test failures with tracebacks
|
|
78
|
+
doploy logs <build-id> --source test -f # follow the test log until the build settles
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Commands
|
|
82
|
+
|
|
83
|
+
| Command | Description |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `login` | Sign in with your browser |
|
|
86
|
+
| `logout` | Forget the saved session |
|
|
87
|
+
| `projects` | List your projects |
|
|
88
|
+
| `builds <project>` | Recent builds for a project. `--type development\|staging\|production`, `--limit` |
|
|
89
|
+
| `build <id>` | One build: status, commit, versions, error summary |
|
|
90
|
+
| `tests <build>` | Test failures for a build. `--details` prints tracebacks, `--warnings` includes warnings |
|
|
91
|
+
| `logs <build>` | Tail logs. `--source build\|test\|odoo`, `--lines`, `--filter TEXT`, `-f` to follow |
|
|
92
|
+
| `branch create <project> <name>` | Fork a development branch on GitHub and queue its build. `--from <branch-id>` |
|
|
93
|
+
| `rebuild <build>` | Queue a rebuild of a deployment |
|
|
94
|
+
| `restart <build>` | Restart the Odoo service |
|
|
95
|
+
| `update-modules <build> [modules]` | Run `odoo-bin -u` on the modules doploy detected as changed, or the ones you list. `--theme`, `--no-theme`, `--wait` |
|
|
96
|
+
| `operation <id>` | Check a queued module update. `--wait` |
|
|
97
|
+
| `backup <build>` | Take a database and filestore backup. `--comment`, `--wait` |
|
|
98
|
+
|
|
99
|
+
Commands that print tables accept `--json` for machine-readable output.
|
|
100
|
+
|
|
101
|
+
Anything aimed at a **production** deployment requires `--confirm`. Nothing destructive is
|
|
102
|
+
available: no deletes, no restores, no domain changes.
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
**Why did my build fail?**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
doploy builds acme --type development --limit 1
|
|
110
|
+
doploy tests 418 --details
|
|
111
|
+
doploy logs 418 --source test --filter ERROR
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Follow a build as it runs**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
doploy logs 419 --source test -f
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Exits on its own when the build settles. `--source odoo` follows the running container's log
|
|
121
|
+
instead and runs until Ctrl-C.
|
|
122
|
+
|
|
123
|
+
**Ship a change to staging**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
doploy update-modules 302 --wait
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Updates exactly the modules doploy saw change in the last code update, waits for Odoo to finish,
|
|
130
|
+
and exits non-zero if the update failed. Add `--theme` to rebuild website theme assets, or leave it
|
|
131
|
+
out and doploy decides from the module list.
|
|
132
|
+
|
|
133
|
+
**Take a backup first**
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
doploy backup 301 --confirm --wait --comment "before v2.4"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Log sources
|
|
140
|
+
|
|
141
|
+
| `--source` | What you get |
|
|
142
|
+
|---|---|
|
|
143
|
+
| `build` | doploy's own build log and error summary. Fast, default. |
|
|
144
|
+
| `test` | The Odoo test run output of a development build. What actually failed. |
|
|
145
|
+
| `odoo` | The running Odoo container's log. Runtime tracebacks on staging and production. |
|
|
146
|
+
|
|
147
|
+
## Links
|
|
148
|
+
|
|
149
|
+
- Documentation: https://docs.doploy.io/agents/cli
|
|
150
|
+
- Dashboard: https://cloud.doploy.io
|
|
151
|
+
- Support: support@doploy.io
|
|
152
|
+
|
|
153
|
+
## License
|
|
154
|
+
|
|
155
|
+
MIT
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "doploy-cli"
|
|
7
|
-
version = "0.2.
|
|
8
|
-
description = "doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal
|
|
7
|
+
version = "0.2.1"
|
|
8
|
+
description = "doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
11
11
|
requires-python = ">=3.10"
|
doploy_cli-0.2.0/PKG-INFO
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: doploy-cli
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal or CI
|
|
5
|
-
License: MIT
|
|
6
|
-
Project-URL: Homepage, https://doploy.io
|
|
7
|
-
Project-URL: Documentation, https://docs.doploy.io
|
|
8
|
-
Project-URL: Dashboard, https://cloud.doploy.io
|
|
9
|
-
Keywords: doploy,odoo,deploy,ci,cli
|
|
10
|
-
Classifier: Development Status :: 4 - Beta
|
|
11
|
-
Classifier: Environment :: Console
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
-
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
-
Requires-Python: >=3.10
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
License-File: LICENSE
|
|
20
|
-
Requires-Dist: httpx>=0.27
|
|
21
|
-
Dynamic: license-file
|
|
22
|
-
|
|
23
|
-
# doploy CLI
|
|
24
|
-
|
|
25
|
-
Watch builds, read logs, and drive your Odoo deployments on [doploy](https://doploy.io)
|
|
26
|
-
from a terminal or a CI pipeline.
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
pipx install doploy-cli
|
|
30
|
-
doploy login # opens your browser; no tokens to paste
|
|
31
|
-
doploy projects
|
|
32
|
-
doploy builds <project-id> --type production
|
|
33
|
-
doploy logs <build-id> --source test -f
|
|
34
|
-
doploy update-modules <build-id> --wait
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Auth
|
|
38
|
-
|
|
39
|
-
`doploy login` signs you in with your doploy account (OAuth, PKCE, loopback
|
|
40
|
-
callback). Tokens refresh themselves and live in `~/.config/doploy/config.json`
|
|
41
|
-
(mode 0600). Whether the CLI may deploy is controlled per app in
|
|
42
|
-
Settings > Connected apps.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## Commands
|
|
46
|
-
|
|
47
|
-
| Command | What it does |
|
|
48
|
-
|---|---|
|
|
49
|
-
| `projects` | List your projects |
|
|
50
|
-
| `builds <project>` | Recent builds, filter with `--type` |
|
|
51
|
-
| `build <id>` | One build in full |
|
|
52
|
-
| `tests <build>` | Test failures, `--details` for tracebacks |
|
|
53
|
-
| `logs <build>` | Tail logs; `--source build\|test\|odoo`, `-f` to follow |
|
|
54
|
-
| `branch create <project> <name>` | Fork a dev branch and queue its build |
|
|
55
|
-
| `rebuild <build>` | Queue a rebuild |
|
|
56
|
-
| `restart <build>` | Restart the Odoo service |
|
|
57
|
-
| `update-modules <build> [modules]` | Run `odoo-bin -u`; `--theme`, `--wait` |
|
|
58
|
-
| `backup <build>` | Start a backup; `--wait` |
|
|
59
|
-
| `task <id>` | Poll a queued task |
|
|
60
|
-
| `logout` | Forget saved credentials |
|
|
61
|
-
|
|
62
|
-
Production targets always need `--confirm`. Destructive operations
|
|
63
|
-
(deletes, restores) are not exposed.
|
doploy_cli-0.2.0/README.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# doploy CLI
|
|
2
|
-
|
|
3
|
-
Watch builds, read logs, and drive your Odoo deployments on [doploy](https://doploy.io)
|
|
4
|
-
from a terminal or a CI pipeline.
|
|
5
|
-
|
|
6
|
-
```bash
|
|
7
|
-
pipx install doploy-cli
|
|
8
|
-
doploy login # opens your browser; no tokens to paste
|
|
9
|
-
doploy projects
|
|
10
|
-
doploy builds <project-id> --type production
|
|
11
|
-
doploy logs <build-id> --source test -f
|
|
12
|
-
doploy update-modules <build-id> --wait
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Auth
|
|
16
|
-
|
|
17
|
-
`doploy login` signs you in with your doploy account (OAuth, PKCE, loopback
|
|
18
|
-
callback). Tokens refresh themselves and live in `~/.config/doploy/config.json`
|
|
19
|
-
(mode 0600). Whether the CLI may deploy is controlled per app in
|
|
20
|
-
Settings > Connected apps.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## Commands
|
|
24
|
-
|
|
25
|
-
| Command | What it does |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `projects` | List your projects |
|
|
28
|
-
| `builds <project>` | Recent builds, filter with `--type` |
|
|
29
|
-
| `build <id>` | One build in full |
|
|
30
|
-
| `tests <build>` | Test failures, `--details` for tracebacks |
|
|
31
|
-
| `logs <build>` | Tail logs; `--source build\|test\|odoo`, `-f` to follow |
|
|
32
|
-
| `branch create <project> <name>` | Fork a dev branch and queue its build |
|
|
33
|
-
| `rebuild <build>` | Queue a rebuild |
|
|
34
|
-
| `restart <build>` | Restart the Odoo service |
|
|
35
|
-
| `update-modules <build> [modules]` | Run `odoo-bin -u`; `--theme`, `--wait` |
|
|
36
|
-
| `backup <build>` | Start a backup; `--wait` |
|
|
37
|
-
| `task <id>` | Poll a queued task |
|
|
38
|
-
| `logout` | Forget saved credentials |
|
|
39
|
-
|
|
40
|
-
Production targets always need `--confirm`. Destructive operations
|
|
41
|
-
(deletes, restores) are not exposed.
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: doploy-cli
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: doploy CLI: watch builds, read logs, and drive Odoo deployments from a terminal or CI
|
|
5
|
-
License: MIT
|
|
6
|
-
Project-URL: Homepage, https://doploy.io
|
|
7
|
-
Project-URL: Documentation, https://docs.doploy.io
|
|
8
|
-
Project-URL: Dashboard, https://cloud.doploy.io
|
|
9
|
-
Keywords: doploy,odoo,deploy,ci,cli
|
|
10
|
-
Classifier: Development Status :: 4 - Beta
|
|
11
|
-
Classifier: Environment :: Console
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
-
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
-
Requires-Python: >=3.10
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
License-File: LICENSE
|
|
20
|
-
Requires-Dist: httpx>=0.27
|
|
21
|
-
Dynamic: license-file
|
|
22
|
-
|
|
23
|
-
# doploy CLI
|
|
24
|
-
|
|
25
|
-
Watch builds, read logs, and drive your Odoo deployments on [doploy](https://doploy.io)
|
|
26
|
-
from a terminal or a CI pipeline.
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
pipx install doploy-cli
|
|
30
|
-
doploy login # opens your browser; no tokens to paste
|
|
31
|
-
doploy projects
|
|
32
|
-
doploy builds <project-id> --type production
|
|
33
|
-
doploy logs <build-id> --source test -f
|
|
34
|
-
doploy update-modules <build-id> --wait
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Auth
|
|
38
|
-
|
|
39
|
-
`doploy login` signs you in with your doploy account (OAuth, PKCE, loopback
|
|
40
|
-
callback). Tokens refresh themselves and live in `~/.config/doploy/config.json`
|
|
41
|
-
(mode 0600). Whether the CLI may deploy is controlled per app in
|
|
42
|
-
Settings > Connected apps.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## Commands
|
|
46
|
-
|
|
47
|
-
| Command | What it does |
|
|
48
|
-
|---|---|
|
|
49
|
-
| `projects` | List your projects |
|
|
50
|
-
| `builds <project>` | Recent builds, filter with `--type` |
|
|
51
|
-
| `build <id>` | One build in full |
|
|
52
|
-
| `tests <build>` | Test failures, `--details` for tracebacks |
|
|
53
|
-
| `logs <build>` | Tail logs; `--source build\|test\|odoo`, `-f` to follow |
|
|
54
|
-
| `branch create <project> <name>` | Fork a dev branch and queue its build |
|
|
55
|
-
| `rebuild <build>` | Queue a rebuild |
|
|
56
|
-
| `restart <build>` | Restart the Odoo service |
|
|
57
|
-
| `update-modules <build> [modules]` | Run `odoo-bin -u`; `--theme`, `--wait` |
|
|
58
|
-
| `backup <build>` | Start a backup; `--wait` |
|
|
59
|
-
| `task <id>` | Poll a queued task |
|
|
60
|
-
| `logout` | Forget saved credentials |
|
|
61
|
-
|
|
62
|
-
Production targets always need `--confirm`. Destructive operations
|
|
63
|
-
(deletes, restores) are not exposed.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|