Skip to main content

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.

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
  • Will not use, search for, nor help set environment variables
  • 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 handle 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
      

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

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

License

Copyright 2021 Dojo Five, LLC

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

embedops-cli-0.3.2.tar.gz (64.9 kB view details)

Uploaded Source

Built Distribution

embedops_cli-0.3.2-py3-none-any.whl (120.9 kB view details)

Uploaded Python 3

File details

Details for the file embedops-cli-0.3.2.tar.gz.

File metadata

  • Download URL: embedops-cli-0.3.2.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for embedops-cli-0.3.2.tar.gz
Algorithm Hash digest
SHA256 af248946c9738b03f73fca5370408210b4d72d11af7504e133b88a7bb8023150
MD5 7347c9847f74ac6b73667393c5633ef2
BLAKE2b-256 b94a40820e7505ec702256d89f95d0c9ee359c0a976084a75b4d429394637e64

See more details on using hashes here.

File details

Details for the file embedops_cli-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for embedops_cli-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 198d3aa923edd0fb960b9b5cb78599372095185728034658fd10045194fb7025
MD5 4a164d275afeb48f604fb5836028235d
BLAKE2b-256 f425bd414add4e6837135d8720d6ba8db22af9cdb364842fe15100d80428ce4f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page