rostainer-deploy 0.0.3__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.
@@ -0,0 +1,213 @@
1
+ # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,emacs
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,python,emacs
3
+
4
+ # Docker ROS Tools - This is a tool repository, not a workspace
5
+ # Ignore any test workspaces or temporary files created during development
6
+ .compose_starter_info
7
+ .docker-compose.override.yml
8
+ .direnv/
9
+ builds/
10
+ # Generated from git tags by hatch-vcs at build/install time
11
+ scripts/cli/rostainer_cli/_version.py
12
+ ### Emacs ###
13
+ # -*- mode: gitignore; -*-
14
+ *~
15
+ \#*\#
16
+ /.emacs.desktop
17
+ /.emacs.desktop.lock
18
+ *.elc
19
+ auto-save-list
20
+ tramp
21
+ .\#*
22
+
23
+ # Org-mode
24
+ .org-id-locations
25
+ *_archive
26
+
27
+ # flymake-mode
28
+ *_flymake.*
29
+
30
+ # eshell files
31
+ /eshell/history
32
+ /eshell/lastdir
33
+
34
+ # elpa packages
35
+ /elpa/
36
+
37
+ # reftex files
38
+ *.rel
39
+
40
+ # AUCTeX auto folder
41
+ /auto/
42
+
43
+ # cask packages
44
+ .cask/
45
+ dist/
46
+
47
+ # Flycheck
48
+ flycheck_*.el
49
+
50
+ # server auth directory
51
+ /server/
52
+
53
+ # projectiles files
54
+ .projectile
55
+
56
+ # directory configuration
57
+ .dir-locals.el
58
+
59
+ # network security
60
+ /network-security.data
61
+
62
+
63
+ ### Python ###
64
+ # Byte-compiled / optimized / DLL files
65
+ __pycache__/
66
+ *.py[cod]
67
+ *$py.class
68
+
69
+ # C extensions
70
+ *.so
71
+
72
+ # Distribution / packaging
73
+ .Python
74
+ build/
75
+ develop-eggs/
76
+ downloads/
77
+ eggs/
78
+ .eggs/
79
+ lib/
80
+ lib64/
81
+ parts/
82
+ sdist/
83
+ var/
84
+ wheels/
85
+ share/python-wheels/
86
+ *.egg-info/
87
+ .installed.cfg
88
+ *.egg
89
+ MANIFEST
90
+
91
+ # PyInstaller
92
+ # Usually these files are written by a python script from a template
93
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
94
+ *.manifest
95
+ *.spec
96
+
97
+ # Installer logs
98
+ pip-log.txt
99
+ pip-delete-this-directory.txt
100
+
101
+ # Unit test / coverage reports
102
+ htmlcov/
103
+ .tox/
104
+ .nox/
105
+ .coverage
106
+ .coverage.*
107
+ .cache
108
+ nosetests.xml
109
+ coverage.xml
110
+ *.cover
111
+ *.py,cover
112
+ .hypothesis/
113
+ .pytest_cache/
114
+ cover/
115
+
116
+ # Translations
117
+ *.mo
118
+ *.pot
119
+
120
+ # Django stuff:
121
+ *.log
122
+ local_settings.py
123
+ db.sqlite3
124
+ db.sqlite3-journal
125
+
126
+ # Flask stuff:
127
+ instance/
128
+ .webassets-cache
129
+
130
+ # Scrapy stuff:
131
+ .scrapy
132
+
133
+ # Sphinx documentation
134
+ docs/_build/
135
+
136
+ # PyBuilder
137
+ .pybuilder/
138
+ target/
139
+
140
+ # Jupyter Notebook
141
+ .ipynb_checkpoints
142
+
143
+ # IPython
144
+ profile_default/
145
+ ipython_config.py
146
+
147
+ # pyenv
148
+ # For a library or package, you might want to ignore these files since the code is
149
+ # intended to run in multiple environments; otherwise, check them in:
150
+ # .python-version
151
+
152
+ # pipenv
153
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
154
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
155
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
156
+ # install all needed dependencies.
157
+ #Pipfile.lock
158
+
159
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
160
+ __pypackages__/
161
+
162
+ # Celery stuff
163
+ celerybeat-schedule
164
+ celerybeat.pid
165
+
166
+ # SageMath parsed files
167
+ *.sage.py
168
+
169
+ # Environments
170
+ .env
171
+ .venv
172
+ env/
173
+ venv/
174
+ ENV/
175
+ env.bak/
176
+ venv.bak/
177
+
178
+ # Spyder project settings
179
+ .spyderproject
180
+ .spyproject
181
+
182
+ # Rope project settings
183
+ .ropeproject
184
+
185
+ # mkdocs documentation
186
+ /site
187
+
188
+ # mypy
189
+ .mypy_cache/
190
+ .dmypy.json
191
+ dmypy.json
192
+
193
+ # Pyre type checker
194
+ .pyre/
195
+
196
+ # pytype static type analyzer
197
+ .pytype/
198
+
199
+ # Cython debug symbols
200
+ cython_debug/
201
+
202
+ ### VisualStudioCode ###
203
+ .vscode/
204
+
205
+ # Local History for Visual Studio Code
206
+ .history/
207
+
208
+ ### VisualStudioCode Patch ###
209
+ # Ignore all local history of files
210
+ .history
211
+ .ionide
212
+
213
+ # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,emacs
@@ -0,0 +1,50 @@
1
+ Metadata-Version: 2.5
2
+ Name: rostainer-deploy
3
+ Version: 0.0.3
4
+ Summary: rostainer plugin: push package updates to robots over ssh, through a local registry
5
+ Project-URL: Homepage, https://git.whoi.edu/bmillerklugman/rostainer
6
+ Project-URL: Documentation, https://bmillerklugman.pages.whoi.edu/rostainer/
7
+ Author: rostainer contributors
8
+ License-Expression: MIT
9
+ Keywords: deployment,docker,fleet,ros,ros2,rostainer
10
+ Requires-Python: >=3.7
11
+ Requires-Dist: rich>=12
12
+ Requires-Dist: rostainer
13
+ Requires-Dist: rostainer-package
14
+ Description-Content-Type: text/markdown
15
+
16
+ # rostainer-deploy
17
+
18
+ A [rostainer](https://bmillerklugman.pages.whoi.edu/rostainer/) plugin that pushes
19
+ package updates (from [`rostainer-package`](../rostainer-package)) to robots over
20
+ ssh. Images go through a registry on your machine, so each robot downloads only the
21
+ layers it doesn't have yet - after a code change, typically just the workspace's
22
+ build. No image tar is copied, and robots need only ssh, Docker and Python 3.
23
+
24
+ ```bash
25
+ pipx inject rostainer rostainer-deploy # or: pip install 'rostainer[deploy]'
26
+ rostainer init --with deploy # adds [plugins.deploy] to .rostainer.toml
27
+ ```
28
+
29
+ ```toml
30
+ [plugins.deploy]
31
+ [plugins.deploy.groups]
32
+ robots = ["robot1", "robot2"]
33
+
34
+ [plugins.deploy.targets.robot1]
35
+ host = "10.0.0.5" # or a ~/.ssh/config alias
36
+ user = "ros"
37
+
38
+ [plugins.deploy.targets.robot2]
39
+ host = "robot2"
40
+ ```
41
+
42
+ ```bash
43
+ rostainer deploy setup # first time: copy your ssh key, check the robots, push
44
+ rostainer package create # build a new version
45
+ rostainer deploy push # send it to every robot (or: push robots, push robot1)
46
+ rostainer deploy status # what each robot runs
47
+ rostainer deploy rollback robot1 # back to the version it ran before
48
+ ```
49
+
50
+ See the [Deploy guide](https://bmillerklugman.pages.whoi.edu/rostainer/plugins/deploy.html).
@@ -0,0 +1,35 @@
1
+ # rostainer-deploy
2
+
3
+ A [rostainer](https://bmillerklugman.pages.whoi.edu/rostainer/) plugin that pushes
4
+ package updates (from [`rostainer-package`](../rostainer-package)) to robots over
5
+ ssh. Images go through a registry on your machine, so each robot downloads only the
6
+ layers it doesn't have yet - after a code change, typically just the workspace's
7
+ build. No image tar is copied, and robots need only ssh, Docker and Python 3.
8
+
9
+ ```bash
10
+ pipx inject rostainer rostainer-deploy # or: pip install 'rostainer[deploy]'
11
+ rostainer init --with deploy # adds [plugins.deploy] to .rostainer.toml
12
+ ```
13
+
14
+ ```toml
15
+ [plugins.deploy]
16
+ [plugins.deploy.groups]
17
+ robots = ["robot1", "robot2"]
18
+
19
+ [plugins.deploy.targets.robot1]
20
+ host = "10.0.0.5" # or a ~/.ssh/config alias
21
+ user = "ros"
22
+
23
+ [plugins.deploy.targets.robot2]
24
+ host = "robot2"
25
+ ```
26
+
27
+ ```bash
28
+ rostainer deploy setup # first time: copy your ssh key, check the robots, push
29
+ rostainer package create # build a new version
30
+ rostainer deploy push # send it to every robot (or: push robots, push robot1)
31
+ rostainer deploy status # what each robot runs
32
+ rostainer deploy rollback robot1 # back to the version it ran before
33
+ ```
34
+
35
+ See the [Deploy guide](https://bmillerklugman.pages.whoi.edu/rostainer/plugins/deploy.html).
@@ -0,0 +1,32 @@
1
+ [build-system]
2
+ requires = ["hatchling", "hatch-vcs"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "rostainer-deploy"
7
+ dynamic = ["version"]
8
+ description = "rostainer plugin: push package updates to robots over ssh, through a local registry"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.7"
12
+ authors = [{ name = "rostainer contributors" }]
13
+ keywords = ["ros", "ros2", "docker", "rostainer", "deployment", "fleet"]
14
+ # Compatibility with rostainer itself is the plugin API version
15
+ # (DeployPlugin.api_version), which rostainer checks when it loads it.
16
+ dependencies = ["rostainer", "rostainer-package", "rich>=12"]
17
+
18
+ [project.entry-points."rostainer.plugins"]
19
+ deploy = "rostainer_deploy:DeployPlugin"
20
+
21
+ [project.urls]
22
+ Homepage = "https://git.whoi.edu/bmillerklugman/rostainer"
23
+ Documentation = "https://bmillerklugman.pages.whoi.edu/rostainer/"
24
+
25
+ # Versioned with rostainer, from the same repository's tags.
26
+ [tool.hatch.version]
27
+ source = "vcs"
28
+ fallback-version = "0.0.0.dev0"
29
+ raw-options = { root = "../.." }
30
+
31
+ [tool.hatch.build.targets.wheel]
32
+ packages = ["rostainer_deploy"]