Skip to content

MeAmAnUsername/pie

 
 

Repository files navigation

GitHub license Jenkins Jenkins Tests PIE API PIE Runtime

PIE: Pipelines for Interactive Environments

PIE is an API and runtime for developing interactive software development pipelines and incremental build scripts.

Copyright and License

Copyright © 2018-2019 Delft University of Technology

The code and files in this project are licensed under the Apache License, Version 2.0. You may use the files in this project in compliance with the license.

Questions and Issues

If you have a question, enhancement, feature request, or bug report, please search the issue tracker for a solution or workaround, or create a new issue.

User's guide

Installation

PIE is deployed as a set of Maven artifacts to the MetaBorg artifact server, which you can consume with Maven or Gradle. To be able to get artifacts from the MetaBorg artifact servers, add the following to your build.gradle file:

repositories {
  jcenter()
  maven { url "https://artifacts.metaborg.org/content/repositories/releases/" }
  maven { url "https://artifacts.metaborg.org/content/repositories/snapshots/" }
}

or build.gradle.kts file:

repositories {
  jcenter()
  maven { url = uri("https://artifacts.metaborg.org/content/repositories/releases/") }
  maven { url = uri("https://artifacts.metaborg.org/content/repositories/snapshots/") }
}

or add the following to your Maven pom.xml file:

<repositories>
  <repository>
    <id>metaborg-release-repo</id>
    <url>https://artifacts.metaborg.org/content/repositories/releases/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>metaborg-snapshot-repo</id>
    <url>https://artifacts.metaborg.org/content/repositories/snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

To depend on version 0.6.0 of the runtime to build and execute pipelines, add the following Gradle dependency to your build.gradle file:

implementation 'org.metaborg:pie.runtime:0.6.0'

or build.gradle.kts file:

implementation("org.metaborg:pie.runtime:0.6.0")

or add the following to your Maven pom.xml file:

<dependency>
  <groupId>org.metaborg</groupId>
  <artifactId>pie.runtime</artifactId>
  <version>0.6.0</version>
</dependency>

The latest stable version is listed at the top of this file. The development version in the develop branch is published on every commit with version develop-SNAPSHOT which you can depend on as follows:

implementation 'org.metaborg:pie.runtime:develop-SNAPSHOT'
implementation("org.metaborg:pie.runtime:develop-SNAPSHOT")
<dependency>
  <groupId>org.metaborg</groupId>
  <artifactId>pie.runtime</artifactId>
  <version>develop-SNAPSHOT</version>
</dependency>

Components

PIE consists of several components:

  • pie.api: The PIE API for developing reusable interactive pipelines or incremental build scripts
  • pie.runtime: The PIE runtime for incrementally executing pipelines developed with the API
  • pie.taskdefs.guice: Guice dependency injection support for task definitions
  • pie.dagger: Dagger dependency injection support

Developer's guide

Building

As prerequisites for building PIE, you need a Java Development Kit (JDK) of version 8 or higher. To build PIE, run the Gradle wrapper as follows in the root directory of this repository:

./gradlew buildAll

Development

PIE can developed by importing this repository into IntelliJ IDEA or Eclipse as Gradle projects. Alternatively, any code editor in conjunction with local builds described above should work.

Continuous integration

PIE is automatically built, tested, and published on our buildfarm, configured in the Jenkinsfile. It uses the gradlePipeline shared pipeline from the metaborg.jenkins.pipeline shared pipeline library.

Publishing

To publish PIE, run ./gradlew publishAll.

To publish a new release version of PIE, first Git commit your changes and tag the commit in the form of release-<version>, e.g., release-0.3.0, and then run ./gradlew publishAll.

About

Pipelines for Interactive Environments

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 75.2%
  • Kotlin 24.8%