EmbedOps Command Line Tools
Project description
EmbedOps Tools
CLI tool for enabling easier and smoother local development for embedded systems via the command line. Promotes usage of Docker and best practices for modern embedded development.
Current Features
Parse CI YAML files to allow for jobs to be run in the same containers and the same way locally as they do on CI.
Python Packages needed
defined in requirements.txt and setup.cfg
YAML finding and parsing
Functionality:
- Show names of all jobs
- Show detailed job context
Limitations:
-
No guarantee of YAML written by anyone other than Dojo Five employees will be able to run as expected
-
Can only be run from the current working directory your pipeline scripts expect to be in as there is no way to set cwd explicitly
-
Only works with BitBucket and GitLab YAML files, and GitHub Actions with only one workflow file
-
Will not use, search for, nor help set environment variables defined outside of YAML
-
no way to mark that a job shouldn't be run locally or hide non-runnable jobs
-
Will show "hidden" GitLab jobs and allow them to be run
-
Does not handle
extends:
keyword in GitLab CI/CD -
Only handles multi-line script with a complete command in each line.
-
This is applied to both
|
(literal) and>
(folded) YAML multiline block scalar indicator -
For example, it doesn't work if the
if-else
statement is called in multiple lines.
Working example:script: | FILE=.clang-format if [ -f "$FILE" ]; then echo "$FILE exists. Use repository $FILE."; else echo "$FILE does not exist. Use container $FILE."; cp /tools/.clang-format .clang-format; fi
Failing example:
script: | FILE=.clang-format if [ -f "$FILE" ]; then echo "$FILE exists. Use repository $FILE." else echo "$FILE does not exist. Use container $FILE." cp /tools/.clang-format .clang-format fi
-
-
GitHub
Auto-detection of the GitHub CI configuration file works only if there is one file in the .github/workflows directory. When there are more than one files in that directory, use the --filename flag to specify a GitHub CI configuration.
Syntax:
embedops-cli jobs --filename <PATH_TO_CI_CONFIG_FILE> run <JOB_NAME>
Not Implemented:
- Info to pull from YAML:
- after/before scripts?
include:
,extends:
on GitLab,uses:
on GitHub,pipe:
on BitBucket not supported
Docker container launching / checking /running
Functionality:
- use parsed YAML information
- map cwd to Docker container and launch (sets mounted directory as container's cwd)
- Run script in docker container found above
- Output any artifacts in the mounted directory
- Login to the EmbedOps registry for paying clients
Limitations:
- Assume all jobs have an explicit image tag or a default image tag in yaml
- Assume all jobs have a script (not handling entrypoints)
- Must be launched from the top level working directory of the project (where YAML is stored)
- doesn't clean up after itself - all artifacts are left behind, not just desired ones.
- no way to specify clean and build vs rebuild unless explicitly defined in YAML
- Env variables used but not defined in YAML must be set by user in .env file manually, no error checking
- look for .wslconfig on Windows and suggest edits or add if not found
- Attempt to start docker if it's not running?
Not Implemented:
- Run before or after script
- run entire pipeline or workflow at once
- shell and any other non-Docker based runners are not supported on any system at this time
Endpoints
Functionality:
- Log in to EmbedOps via CLI
- Auth0 connection from embedops.io to registry
Not Implemented:
- Jobs run from CLI do not talk to API
Installation
Funtionality:
- Available on embedops.com in PyPi package registry
Limitations:
- Little to no documentation
Not Implemented:
- New version check and message
License
Copyright 2021 Dojo Five, LLC
Code Owners
- Dojo Five
Engineers:-
Bailey Steinfadt
-
Bryan Siepert
-
Zhi Xuen Lai
-
Aaron Fontaine
-
Jimmy Gomez
Former Engineers:
-
Cole Spear
-
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file embedops-cli-0.3.9.tar.gz
.
File metadata
- Download URL: embedops-cli-0.3.9.tar.gz
- Upload date:
- Size: 82.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2d25e9250761b27c9ae43c630db5704b6690e53d9a1bfcb1101619ddcee1981 |
|
MD5 | 89b93ba37f1b0968c0212c29baa72758 |
|
BLAKE2b-256 | c39adba825df0315e543553d5483d2259bf86a2c8fcf240b7a53ac20b8f0deb3 |
File details
Details for the file embedops_cli-0.3.9-py3-none-any.whl
.
File metadata
- Download URL: embedops_cli-0.3.9-py3-none-any.whl
- Upload date:
- Size: 162.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86bcbb8269c0ef38ebdc6ce96a11b81f45e3cfaef883102620ac9c78f5e5b088 |
|
MD5 | bef2064b059af58fc975d703cb63dc47 |
|
BLAKE2b-256 | d1cf56ac9406837821f83a9fb8b47bf69829555858b680dad2ecd0919e71e50b |