Skip to content

A prototype of an app to store GHC build artifacts created on CI

License

Notifications You must be signed in to change notification settings

haskell-infra/ghc-artifact-collector

 
 

Repository files navigation

GHC artifact collector

License BSD3 Build status CircleCI

This is the application that collects GHC build artifacts created on Circle CI and AppVeyor.

Usage:

ghc-artifact-collector - collect GHC build artifacts

Usage: ghc-artifact-collector [-t|--as-tool TOOL-NAME] FILE
  GHC artifactor collector

Available options:
  -h,--help                Show this help text
  -t,--as-tool TOOL-NAME   Upload file as a tool with this name.
  FILE                     File to store.

Behavior spec

  • If environment vars of CircleCI or AppVeyor are not set, print a message about the fact and exit with status code 1.

  • If S3 variables are not set, do nothing (important because we don't want PRs from forks to fail because of this, and those PRs won't have S3 variables set). S3 environment variables:

    • GHC_ARTIFACT_COLLECTOR_ACCESS_KEY
    • GHC_ARTIFACT_COLLECTOR_SECRET_KEY
    • GHC_ARTIFACT_COLLECTOR_BUCKET_NAME
    • GHC_ARTIFACT_COLLECTOR_REGION

    The variables mean what their names suggest.

  • If branch is not master and the build has been triggered not by a tag push, do nothing. Note that one has to add filtering by tags in order to enable building on tag pushing on CircleCI. (This is unless --as-tool is used. With that option branch and tag do not matter, but it's used only to deploy the ghc-artifact-collector tool itself.)

  • If there is no tag, use the following object keys:

    nightly/<job-name>/<DD-MM-YYYY-SHA1>/bindist.tar.xz
    nightly/<job-name>/<DD-MM-YYYY-SHA1>/metadata.json
    

    The metadata.json file contains some metadata describing how the bindist was obtained (SHA1 of commit, etc.).

    In addition to that, the first artifact in the list of files to upload will be copied to this (more) stable location:

    nightly/<job-name>/latest/bindist.tar.xz
    nightly/<job-name>/latest/metadata.json
    
  • If there is a tag, use the following prefix:

    releases/<job-name>/<tag>/bindist.tar.xz
    releases/<job-name>/<tag>/metadata.json
    

    Similarly, the latest version of artifact will be copied to this location:

    releases/<job-name>/latest/bindist.tar.xz
    releases/<job-name>/latest/metadata.json
    
  • nightly/ folder is expected to be configured with such life cycle policy that old files are automatically deleted, e.g. after a month.

License

Copyright © 2018 Tweag I/O

Distributed under BSD 3 clause license.

About

A prototype of an app to store GHC build artifacts created on CI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 100.0%