GithubHelp home page GithubHelp logo

willdurand / taskgraph Goto Github PK

View Code? Open in Web Editor NEW

This project forked from taskcluster/taskgraph

0.0 1.0 0.0 2.95 MB

Generates task dependency graphs for Taskcluster CI

License: Mozilla Public License 2.0

Shell 0.35% JavaScript 0.22% Python 98.73% PowerShell 0.01% Makefile 0.09% Batchfile 0.10% Dockerfile 0.50%

taskgraph's Introduction

Task Status

pre-commit.ci status

Code Coverage

Pypi Version

Documentation Status

License

Taskgraph

Taskgraph is a Python library to generate graphs of tasks for the Taskcluster CI service. It is the recommended approach for configuring tasks once your project outgrows a single .taskcluster.yml file and is what powers the over 30,000 tasks and counting that make up Firefox's CI.

For more information and usage instructions, see the docs.

How It Works

Taskgraph leverages the fact that Taskcluster is a generic task execution platform. This means that tasks can be scheduled via its comprehensive API, and aren't limited to being triggered in response to supported events.

Taskgraph leverages this execution platform to allow CI systems to scale to any size or complexity.

  1. A decision task is created via Taskcluster's normal .taskcluster.yml file. This task invokes taskgraph.
  2. Taskgraph evaluates a series of yaml based task definitions (similar to those other CI offerings provide).
  3. Taskgraph applies transforms on top of these task definitions. Transforms are Python functions that can programmatically alter or even clone a task definition.
  4. Taskgraph applies some optional optimization logic to remove unnecessary tasks.
  5. Taskgraph submits the resulting task graph to Taskcluster via its API.

Taskgraph's combination of declarative task configuration combined with programmatic alteration are what allow it to support CI systems of any scale. Taskgraph is the library that powers the 30,000+ tasks making up Firefox's CI.

Installation

Taskgraph supports Python 3.6 and up, and can be installed from Pypi:

pip install taskcluster-taskgraph

Alternatively, the repo can be cloned and installed directly:

git clone https://github.com/taskcluster/taskgraph
cd taskgraph
python setup.py install

In both cases, it's recommended to use a Python virtual environment.

Get Involved

If you'd like to get involved, please see our contributing docs!

taskgraph's People

Contributors

aakash017 avatar ahal avatar bhearsum avatar callek avatar catamorphism avatar dependabot[bot] avatar djmitche avatar escapewindow avatar gabrielbusta avatar gbrownmozilla avatar glandium avatar grenade avatar hneiva avatar jcristau avatar johanlorenzo avatar jwhitlock avatar kdashg avatar masterwayz avatar matt-boris avatar miladhakimi avatar ncalexan avatar nthomas-mozilla avatar pawanraocse avatar petemoore avatar pre-commit-ci[bot] avatar sarah-clements avatar serge-sans-paille avatar tomprince avatar tomrittervg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.