Giter VIP home page Giter VIP logo

java-buildpack-dependency-builder's Introduction

Java Buildpack Dependency Builders

This project automates the building and publication of Java Buildpack dependency artifacts.

NOTE: OpenJDK is the only dependency that is actually built via this repository. For the rest of the dependencies, this repository serves as the automation of caching them in the Java Buildpack's respository.

Replicating Repository

To host the Java Buildpack dependency artifacts on your own server, first download the artifacts and index.yml files as described below, make them available at suitable locations on a web server, and then fork the Java buildpack and update its repository configuration to point at the web server.

All the artifacts and index.yml files may be downloaded using the replicate script.

To use the script, ensure that you have installed the AWS CLI and issue the following commands from the root directory of a clone of this repository:

BASE_URI=<BASE-URI> DESTINATION=<DESTINATION> ./replicate.sh
Environment Variable Description
BASE_URI A URI to replace https://java-buildpack.cloudfoundry.org with, in index.yml files. This value should be the network location that the repository is replicated to (e.g. https://internal-repository:8000/dependencies).
DESTINATION A filesystem location to replicate the repository to.

Available Artifacts

The list of available versions for each dependency can be found at the following locations.

Dependency Location
Azure Application Insights universal
Auto Reconfiguration universal
Client Certificate Mapper universal
Container Customizer universal
Container Security Provider universal
Contrast Security universal
Google Stackdriver Debugger bionic
Groovy universal
JaCoCo universal
Java CfEnv universal
jvmkill bionic
MariaDB JDBC universal
Memory Calculator bionic
Metric Writer universal
New Relic universal
OpenJDK JDK bionic
OpenJDK JRE bionic
PostgreSQL JDBC universal
RedisStore universal
SkyWalking universal
Spring Boot CLI universal
tc Server universal
Tomcat Access Logging Support universal
Tomcat Lifecycle Support universal
Tomcat Logging Support universal
Tomcat universal
TomEE Resource Configuration universal
TomEE universal
Wildfly universal
WSO2 Microgateway Runtime universal
WSO2 Microgateway Toolkit universal
YourKit bionic

Contributing

Pull requests are welcome; see the contributor guidelines for details.

License

The Builder is released under version 2.0 of the Apache License.


Update Locations

This table shows locations to check for new releases of cached dependencies. It is used primarily by Pivotal employees to keep the caches up to date.

Dependency Location
OpenJDK oracle, jdk8u

java-buildpack-dependency-builder's People

Contributors

anthonydahanne avatar asifdxtreme avatar dmikusa avatar ekcasey avatar glyn avatar jtarchie avatar nebhale avatar pivotal-david-osullivan avatar rkoster avatar youngm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-buildpack-dependency-builder's Issues

Support for on-prem hosting or non AWS hosting

Thanks again for sharing this repo and making it easy to host binaries repos.

I understand that currently in order to use the replicate script, user need to have an AWS account to push artefacts on their own bucket, and then copy the bucket content to their on-prem web server. Please correct me if I'm wrong. This implies 3 transfers:
1- source -> desktop
2- desktop -> aws
3- aws -> onprem web server

I was wondering how to make this more independent of AWS and faster. Is there a way to access the files on the local

Would usage of fog storage abstraction enable other object store providers, including local file systems while preserving support AWS S3 ?

On prem users could just rsync/scp their local.

Alternatively, an option to only save on local disk and ignore s3 upload could make it, then let users of other blobstore (e.g. rackspace or google storage) pick native tools to sync the local repo.

OpenJDK

OpenJDK said its jdk but when I download it, its just JRE, is this intended behavior?

Make dependency replicator more resilient to failures

We recently experienced an outage when replicating with the new ssl code. #8

When an artifact fails to download it is deleted in the mirror.

It seems to me that the replication code should do what it can to preserve the mirror in the event of any failure. Otherwise if my org's internet or proxy goes down my repo would get deleted and non of my apps would be able to stage.

Support for verifying authenticity of artifacts w.r.t. update sources (MD5 or signatures)

Thanks again for sharing the java-buildpack-dependency-builder, and its replicate script to be able to replicate artifacts within an offline private paas instance.

Following @nebhale 's suggestion to have users request most needed features in the java buildpack, it would be great if the java-buildpack-dependency-builder provided a way to trace back to the update sources and verify the integrity/authenticity of the artifact binaries.

Most artifacts repos make available checksums or digital signatures that enables their users to validate that binaries in downstream distributions properly match original distribution. This allows users to get protected against ~"man-in-the-middle" attacks that would inject malicious code into the replicated artifacts run by the java buildpack.

E.g. bintray provides a way to digitally sign artifacts using PGP keys, see also related binary manual.
As an example, the upload source for groovy is bintray, onto which the PGP signature is available as HTTPS download urls. Groovy ships and digital signature associated to each release (e.g. groovy-binary-2.2.2.zip.asc )

So the need is for java-buildpack users or paas operators using the replicate script to be able to verify that their locally replicated artifact match the checksum/hash or digital signatures of the corresponding update locations. Ideally this verification would be done automatically.

As an example of the value associated to this feature, some company policies require that binaries run in production can be tracked back to their origin, being either commercial vendors, distributions or opensource communities. This could prevent CloudFoundry java-buildpack adoption in those.

Some possible ways this could be provided:

  • for users to semi-manually verify origin of replicated artifacts, provide a machine readable description of each artifacts with the following (could that fit into the current index.yml file) ?
    • the local file path (e.g. groovy/groovy-2.2.1.zip) of the artifact
    • the original update location (e.g. http://dl.bintray.com/groovy/maven/groovy-binary-2.4.0-beta-2.zip )
    • the traceability/authenticity verification method (eg 'pgp' or 'md5') and associated params (e.g. http://dl.bintray.com/groovy/maven/#groovy-binary-2.2.2.zip.asc and https://bintray.com/user/downloadSubjectPublicKey?username=groovy)
  • users trusting the buildand replicate scripts to verify authenticity of the fetched/ replicated artifacts. The script would then automatically verify the authenticity of fetched/replicated artifacts against update locations, and fail on differences. Paas users or Paas operator would merely have to rate their confidence on the update source to be confident about code they use in their app.

Return a non 0 exit code when anything about replication fails

We have a cron that executes replication. We'd like to set up our cron to email us the log if anything about the script fails. To do this we need the replicate script to return a non 0 value when anything goes wrong.

I think this would include the failure to download any of the artifacts. When the Proxy wasn't correctly handling ssl it would have been useful for us to know about the failure to download artifacts before our users.

No documentation on how to actually build the dependencies

It looks like all the build scripts under bin/ have been moved to some concourse pipeline setup, but there is no pointer to the pipeline definition.

I was hoping that there is still some mechanism to manually build dependencies locally for testing purposes, but can't figure out how to do it. I guess I could try playing with the latest versions of the build scripts, before they got deleted, but they may no longer work anyways, so this may be a waste of time.

Index might remove the paths to old versions

Do you know if download.pivotal.io is committed to keep all the versions in the index.yml? I am worried that when using this script, new index might remove the paths to old versions.

Thanks in advance

Changing index of index.yml

Hey! I'm a really big fan of this tool! I used the old version (using bundle) to make a copy to my server and automatically change all the index.yml.

Now, I've just tried the new version (using aws cli) and I've checked the first downloads to be sure it's working right but unfortunately it doesn't. I could not check if after downloading all the files it updates the content of the index because I ran out of space in disk. Does it changes when downloading process is finished?

Before creating a new VM I'd like to be sure that this tools stills enables changing the path to my server in the index automatically. Is it possible?

Thanks in advance

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.