popper

Container-native task automation engine.

https://github.com/getpopper/popper

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    2 of 42 committers (4.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.3%) to scientific vocabulary

Keywords

automation-engine cli containers devops docker podman reproducibility sciops singularity workflows

Keywords from Contributors

numerical programming-language ecosystem-model bioinformatics
Last synced: 6 months ago · JSON representation

Repository

Container-native task automation engine.

Basic Info
  • Host: GitHub
  • Owner: getpopper
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage: https://getpopper.io
  • Size: 1.43 MB
Statistics
  • Stars: 305
  • Watchers: 12
  • Forks: 62
  • Open Issues: 23
  • Releases: 0
Topics
automation-engine cli containers devops docker podman reproducibility sciops singularity workflows
Created over 10 years ago · Last pushed almost 4 years ago
Metadata Files
Readme Contributing License Code of conduct

README.md

Popper Popper

Downloads Build Status codecov Join the chat at https://gitter.im/systemslab/popper slack CROSS

Popper is a tool for defining and executing container-native testing workflows in Docker. With Popper, you define a workflow in a YAML file, and then execute it with a single command. A workflow file looks like this:

```yaml steps: - id: dev-init uses: docker://rikorose/gcc-cmake:gcc-9 runs: [sh, -uexc] args: - | rm -rf build/ cmake -DCMAKEBUILDTYPE=Release -S . -B build

  • id: build uses: docker://rikorose/gcc-cmake:gcc-9 runs: [cmake, --build, build/, --parallel, '4']

  • id: test uses: docker://rikorose/gcc-cmake:gcc-9 dir: /workspace/build/ runs: [ctest] ```

Assuming the above is stored in a ci.yml file in the root of your project folder, this entire workflow gets executed by running:

bash popper run -f ci.yml

Running a single step:

bash popper run -f ci.yml build

Starting a shell inside the build step container:

bash popper run -f ci.yml build

Running on another engine (Podman):

bash popper run -f ci.yml -e podman build

See the examples/ folder for examples for tests for other languages, as well as other types of tests (integration, regresssion, etc.).

Installation

To install or upgrade Popper, run the following in your terminal:

bash curl -sSfL https://raw.githubusercontent.com/getpopper/popper/master/install.sh | sh

Docker is required to run Popper and the installer will abort if the docker command cannot be invoked from your shell. For other installation options, including installing for use with the other supported engines (Singularity and Podman), or for setting up a developing environment for Popper, read the complete installation instructions.

Once installed, you can get an overview and list of available commands:

bash popper help

Read the Quickstart Guide to learn the basics of how to use Popper. Or browse the Official documentation.

Features

  • Lightweight workflow and task automation syntax. Defining a list of steps is as simple as writing file in a lightweight YAML syntax and invoking popper run (see demo above). If you're familiar with Docker Compose, you can think of Popper as Compose but for end-to-end tasks instead of services.

  • An abstraction over container runtimes. In addition to Docker, Popper can seamlessly execute workflows in other runtimes by interacting with distinct container engines. Popper currently supports Docker, Singularity and Podman.

  • An abstraction over CI services. Define a pipeline once and then instruct Popper to generate configuration files for distinct CI services, allowing users to run the exact same workflows they run locally on Travis, Jenkins, Gitlab, Circle and others. See the examples/ folder for examples on how to automate CI tasks for multiple projects (Go, C++, Node, etc.).

  • An abstraction over resource managers. Popper can also execute workflows on a variety of resource managers and schedulers such as Kubernetes and SLURM, without requiring any modifications to a workflow YAML file. We currently support SLURM and are working on adding support for Kubernetes.

  • Aid in workflow development. Aid in the implementation and debugging of workflows, and provide with an extensive list of example workflows that can serve as a starting point.

What Problem Does Popper Solve?

Popper is a container-native workflow execution and task automation engine. In practice, when we work following the container-native paradigm, we end up interactively executing multiple Docker commands (docker pull, docker build, docker run, etc.) so that we can build containers, compile code, test applications, deploy software, among others. Keeping track of which docker commands we have executed, in which order, and which flags were passed to each, can quickly become unmanageable, difficult to document (think of outdated README instructions) and error prone.

On top of this, having the same workflow work in other environments (CI, K8S, etc.) is time-consuming and defeats the purpose of using containers (portability). The goal of Popper is to bring order to this chaotic scenario by providing a framework for clearly and explicitly defining container-native tasks. You can think of Popper as tool for wrapping all these manual tasks in a lightweight, machine-readable, self-documented format (YAML).

While this sounds simple at first, it has significant implications: results in time-savings, improves communication and in general unifies development, testing and deployment workflows. As a developer or user of "Popperized" container-native projects, you only need to learn one tool, and leave the execution details to Popper, whether is to build and tests applications locally, on a remote CI server or a Kubernetes cluster.

Contributing

Anyone is welcome to contribute to Popper! To get started, take a look at our contributing guidelines, then dive in with our list of good first issues.

Participation Guidelines

Popper adheres to the code of conduct posted in this repository. By participating or contributing to Popper, you're expected to uphold this code. If you encounter unacceptable behavior, please immediately email us.

How to Cite Popper

Ivo Jimenez, Michael Sevilla, Noah Watkins, Carlos Maltzahn, Jay Lofstead, Kathryn Mohror, Andrea Arpaci-Dusseau and Remzi Arpaci-Dusseau. The Popper Convention: Making Reproducible Systems Evaluation Practical. In 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), 1561–70, 2017. (https://doi.org/10.1109/IPDPSW.2017.157)

PDF for a pre-print version available here. For BibTeX, click here.

Owner

  • Name: Popper
  • Login: getpopper
  • Kind: organization
  • Email: ivotron@ucsc.edu
  • Location: Santa Cruz, CA

Home to repositories related to @uccross's Popper project

GitHub Events

Total
  • Watch event: 6
  • Fork event: 1
Last Year
  • Watch event: 6
  • Fork event: 1

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 659
  • Total Committers: 42
  • Avg Commits per committer: 15.69
  • Development Distribution Score (DDS): 0.404
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Ivo Jimenez i****z@g****m 393
Jayjeet Chakraborty j****b@r****m 80
Ujjwal Ayyangar u****7@g****m 34
Ankan Poddar f****n@g****m 30
Rafael Castillo r****l@t****e 18
Francisco Enrique Cordova Gonzalez f****7@g****m 12
Pete Wilcox p****x@g****m 10
Vipul Chhabra v****5@g****m 8
Akashraj a****1@g****m 8
Edidiong Etuk 3****g 7
Sina Hamedian s****n@g****m 6
Anders Poirel a****o@g****m 4
Wolfgang Traylor w****r@p****e 4
arshul a****3@g****m 3
rishiUT 4****T 3
Nicole Castillo n****c@g****m 3
Fernanda Domínguez f****c@g****m 3
Bárbara Galindo g****e@g****m 3
Cristian Klein c****n@g****m 3
Anish Hota a****2@g****m 2
Maruth Goyal m****l@g****m 2
vivekr123 v****8@g****m 2
Fernando Salcido f****3@g****m 2
Shun Kashiwa s****a@l****p 1
Ricardo Holguin r****n@p****m 1
Quincy Wofford q****d@g****m 1
Victor v****a@g****m 1
Shun Kashiwa s****v@g****m 1
Mark Lee p****r@l****m 1
Michael Sevilla m****3@g****m 1
and 12 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 45
  • Total pull requests: 55
  • Average time to close issues: 3 months
  • Average time to close pull requests: 21 days
  • Total issue authors: 10
  • Total pull request authors: 20
  • Average comments per issue: 1.96
  • Average comments per pull request: 1.15
  • Merged pull requests: 30
  • Bot issues: 0
  • Bot pull requests: 6
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ivotron (17)
  • JayjeetAtGithub (11)
  • wtraylor (6)
  • edeediong (3)
  • shumbo (2)
  • bertbesser (2)
  • mr-c (1)
  • BonaBeavis (1)
  • Jswig (1)
  • qwofford (1)
Pull Request Authors
  • shumbo (14)
  • dependabot[bot] (6)
  • ivotron (4)
  • bertbesser (4)
  • VD44 (4)
  • rishiUT (3)
  • Jswig (3)
  • vivekr123 (2)
  • maruthgoyal (2)
  • nicolecastillo (2)
  • SamarthGoyal007 (2)
  • jaimistry12 (1)
  • AdrianSot (1)
  • bkmgit (1)
  • ech0-de (1)
Top Labels
Issue Labels
good first issue (12) stale (5) bug (1)
Pull Request Labels
dependencies (6) python (2)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 663 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 11
    (may contain duplicates)
  • Total versions: 36
  • Total maintainers: 1
proxy.golang.org: github.com/getpopper/popper
  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 1.9%
Stargazers count: 1.9%
Average: 5.1%
Dependent packages count: 7.0%
Dependent repos count: 9.3%
Last synced: 6 months ago
pypi.org: popper

Popper CLI tool to generate reproducible papers.

  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 11
  • Downloads: 663 Last month
Rankings
Stargazers count: 3.7%
Dependent repos count: 4.4%
Forks count: 5.5%
Average: 7.5%
Dependent packages count: 10.0%
Downloads: 13.9%
Maintainers (1)
Last synced: 6 months ago

Dependencies

examples/go/go.mod go
  • github.com/google/go-cmp v0.5.3
  • github.com/jstemmer/go-junit-report v0.9.1
  • golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c
examples/go/go.sum go
  • github.com/google/go-cmp v0.5.3
  • github.com/tbpg/go-junit-report v0.9.2-0.20200506144438-50086c54f894
  • github.com/yuin/goldmark v1.2.1
  • golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
  • golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
  • golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
  • golang.org/x/mod v0.3.0
  • golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
  • golang.org/x/net v0.0.0-20200822124328-c89045814202
  • golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
  • golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
  • golang.org/x/sys v0.0.0-20190412213103-97732733099d
  • golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
  • golang.org/x/text v0.3.0
  • golang.org/x/tools v0.0.0-20200904185747-39188db58858
  • golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
  • golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
  • golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
examples/gradle/build.gradle maven
  • junit:junit 4.13 testImplementation
examples/js/package.json npm
  • jest ^24.9.0 development
  • prettier ^1.18.2 development
docs/requirements.txt pypi
  • sphinx-markdown-tables *
examples/python/setup.py pypi
  • pytest *
src/setup.py pypi
  • GitPython ==3.1.7
  • click ==7.1.2
  • docker ==4.3.1
  • dockerpty ==0.4.1
  • kubernetes ==11.0.0
  • paramiko ==2.7.2
  • pykwalify ==1.7.0
  • python-box ==5.1.1
  • pyyaml ==5.3.1
  • spython ==0.0.79