json-to-type (empty) → 4.0.0
raw patch · 38 files changed
+3317/−0 lines, 38 filesdep +GenericPrettydep +QuickCheckdep +aesonsetup-changed
Dependencies added: GenericPretty, QuickCheck, aeson, base, bytestring, containers, data-default, directory, filepath, hashable, json-to-type, lens, mtl, optparse-applicative, pretty, process, run-haskell-module, scientific, smallcheck, template-haskell, text, uniplate, unordered-containers, vector, yaml
Files
- LICENSE +34/−0
- README.md +138/−0
- Setup.hs +2/−0
- app/GenerateJSONParser.hs +194/−0
- changelog.md +246/−0
- common/CommonCLI.hs +39/−0
- examples/colors.json +15/−0
- examples/union.json +14/−0
- json-to-type.cabal +309/−0
- src/JsonToType/Alternative.hs +48/−0
- src/JsonToType/CodeGen.hs +41/−0
- src/JsonToType/CodeGen/Common.hs +13/−0
- src/JsonToType/CodeGen/Elm.hs +69/−0
- src/JsonToType/CodeGen/ElmFormat.hs +316/−0
- src/JsonToType/CodeGen/Generic.hs +13/−0
- src/JsonToType/CodeGen/Haskell.hs +151/−0
- src/JsonToType/CodeGen/HaskellFormat.hs +289/−0
- src/JsonToType/Extract.hs +169/−0
- src/JsonToType/Format.hs +17/−0
- src/JsonToType/Nested.hs +104/−0
- src/JsonToType/Plugin/Subtype.hs +27/−0
- src/JsonToType/Pretty.hs +62/−0
- src/JsonToType/Split.hs +145/−0
- src/JsonToType/Test.hs +82/−0
- src/JsonToType/Type.hs +149/−0
- src/JsonToType/Util.hs +29/−0
- test/TestExamples.hs +98/−0
- test/colors.json +31/−0
- test/customerform.json +23/−0
- test/events.json +1/−0
- test/facebook.json +44/−0
- test/gen/GenerateTestJSON.hs +172/−0
- test/iPhoneMenu.json +77/−0
- test/interop.json +41/−0
- test/jenkins.json +1/−0
- test/productsdb.json +32/−0
- test/qc/TestQC.hs +29/−0
- test/youtube.json +53/−0
+ LICENSE view
@@ -0,0 +1,34 @@+This repository contains some test JSON examples in test/*.json+that is downloaded from Twitter API and http://www.jquery4u.com/json/.+Naturally these are covered by other licenses.++Code copyright (c) 2014, Michal J. Gajda++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Michal J. Gajda nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.md view
@@ -0,0 +1,138 @@+json-to-type+=============+Fork of [json-autotype](https://github.com/migamake/json-autotype).+It just builds and such.++Takes a JSON format input, and generates automatic Haskell type declarations.++Parser and printer instances are derived using [Aeson](http://hackage.haskell.org/package/aeson).++The program uses union type unification to trim output declarations. The types of same attribute tag and similar attribute set, are automatically unified using recognition by attribute set matching. (This option can be optionally turned off, or a set of unified types may be given explicitly.) `:|:` alternatives (similar to `Either`) are used to assure that all `JSON` inputs seen in example input file are handled correctly.++Details on official releases are on [Hackage](https://hackage.haskell.org/package/json-to-type)+We currently support code generation to [Haskell](https://www.haskell.org), and [Elm](https://elm-lang.org).++USAGE:+======+After installing with `cabal install json-to-type`, you might generate stub code for the parser:++```+ json-to-type input1.json ... inputN.json -o MyFormat.hs+```++Then you might test the parser by running it on an input file:++```+ runghc MyFormat.hs input.json+```++At this point you may see data structure generated automatically for you.+The more input files you give to the inference engine `json-to-type`,+the more precise type description will be.++Algorithm will also suggest which types look similar, based on a set of attribute names,+and unify them unless specifically instructed otherwise.++The goal of this program is to make it easy for users of big JSON APIs to generate entries from+example data.++Occasionally you might find a valid JSON for which `json-to-type` doesn't generate a correct parser.+You may either edit the resulting file _and_ send it to the author as a test case for future release.++Patches and suggestions are welcome.++You can run [with Docker](https://hub.docker.com/r/migamake/json-to-type/):+```+docker run -it migamake/json-to-type+```++EXAMPLES:+=========++The most simple example:+```+ {+ "colorsArray":[{+ "colorName":"red",+ "hexValue":"#f00"+ },+ {+ "colorName":"green",+ "hexValue":"#0f0"+ },+ {+ "colorName":"blue",+ "hexValue":"#00f"+ }+ ]+ }+```++It will produce the module with the following datatypes and TH calls for JSON parser derivations:+```+ data ColorsArray = ColorsArray {+ colorsArrayHexValue :: Text,+ colorsArrayColorName :: Text+ } deriving (Show,Eq)++ data TopLevel = TopLevel {+ topLevelColorsArray :: ColorsArray+ } deriving (Show,Eq)+```+Note that attribute names match the names of JSON dictionary keys.++Another example with ambiguous types:+```+ {+ "parameter":[{+ "parameterName":"apiVersion",+ "parameterValue":1+ },+ {+ "parameterName":"failOnWarnings",+ "parameterValue":false+ },+ {+ "parameterName":"caller",+ "parameterValue":"site API"+ }]+ }+```+It will produce quite intuitive result (plus extra parentheses, and class derivations):++```+ data Parameter = Parameter {+ parameterParameterValue :: Bool :|: Int :|: Text,+ parameterParameterName :: Text+ }++ data TopLevel = TopLevel {+ topLevelParameter :: Parameter+ }+```++Real-world use case examples are provided in the package [source repository](https://github.com/mgajda/json-to-type/tree/master/test).++Methodology:+============+1. Json-To-Type uses its own [union type system](https://github.com/mgajda/json-to-type/blob/master/JsonToType/Type.hs) to derive types from JSON documents as the first step.+2. Then it finds all those records that have 90% of the same key names, and suggest them as similar enough to merit treating as instances of the same type. (Note that this is optional, and can be tuned manually.)+3. Last step is to derive unique-ish type names - we currently do it by concatenating the name of the container and name of the key. (Please open PR, if you want something fancy about that - initial version used just key name, when it was unique.)+4. Finally it generates [Haskell](https://www.haskell.org/) or [Elm](http://elm-lang.org/) code for the type.++Combination of robust [*union type system*](https://github.com/mgajda/json-to-type/blob/master/JsonToType/Type.hs), and heuristic makes this system extremely reliable.+Main test is QuickCheck-based generation of random JSON documents, and checking that they are all correctly parsed by resulting parser.++More details are described in [Haskell.SG meetup presentation](https://engineers.sg/video/json-to-type-1-0-haskell-sg--429).++Other approaches:+=================++* There is a [TypeScript type provider](https://jvilk.com/MakeTypes/), and [PLDI 2016 paper](https://dl.acm.org/citation.cfm?id=2908115) on solving this problem using <em>preferred type shapes</em> instead of union types.+One can think about it as a alternative theory that gives very similar results, with more complicated exposition. It also does not tackle the problem of tagged records. It also does not attempt to <em>guess</em> unification candidates in order to reduce type complexity.+* There *was* a [json-sampler](https://maxs.io/generating-types-from-json-samples/) that allows to make simpler data structure from JSON examples, but doesn't seem to perform unification, nor is it suitable for big APIs.++* [PADS project](https://www.cs.princeton.edu/~dpw/papers/padsml06.pdf) is another attempt to automatically infer types to treat <em>arbitrary</em> data formats (not just JSON). It mixes type declarations, with parsing/printing information in order to have a consistent view of both. It does not handle automatic type inference though.+* [JSON Schema generator](https://www.newtonsoft.com/jsonschema/help/html/GenerateSchema.htm) uses .NET types to generate JSON Schema instead (in opposite direction.) Similar schema generation is [used here](https://sixgun.wordpress.com/2012/02/09/using-json-net-to-generate-jsonschema/)+* Microsoft Developer Network advocates use of [Data Contracts](https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data-contracts) instead to constrain possible input data.+* [QuickType](https://github.com/quicktype/quicktype) uses [Markov chains heuristic](https://blog.quicktype.io/markov/) instead of theory
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ app/GenerateJSONParser.hs view
@@ -0,0 +1,194 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE ViewPatterns #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Main where++import Control.Applicative+import Control.Exception (assert)+import Control.Monad (forM_, when, unless)+import Data.Maybe+import Data.Monoid+import Data.List (partition)+import System.Exit+import System.IO (stdin, stderr, IOMode(..))+--import System.IO.Posix.MMap (mmapFileByteString)+import System.FilePath (splitExtension)+import System.Process (system)+import qualified Data.ByteString.Lazy.Char8 as BSL+import qualified Data.HashMap.Strict as Map+import Data.Aeson(Value(..), eitherDecode, encode, FromJSON(..), ToJSON(..))+import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import qualified Data.Text.Encoding as Text(decodeUtf8)+import Data.Text (Text)+import Text.PrettyPrint.GenericPretty (pretty)+import Data.Version(showVersion)++import JsonToType.CodeGen+import JsonToType.Extract+import JsonToType.Format+import JsonToType.Split+import JsonToType.Type+import JsonToType.Util+import JsonToType.Pretty+import qualified Data.Yaml as Yaml++import Options.Applicative+import CommonCLI+import Paths_json_to_type++-- * Command line flags+data Options = Options {+ tyOpts :: TypeOpts+ , outputFilename :: FilePath+ , typecheck :: Bool+ , yaml :: Bool+ , preprocessor :: Bool+ , filenames :: [FilePath]+ }++versionOption =+ infoOption+ (showVersion version)+ (long "version" <> help "Show version")++optParser :: Parser Options+optParser =+ versionOption <*> (+ Options <$> tyOptParser+ <*> strOption (short 'o' <>+ long "output" <>+ long "outputFilename" <> value "")+ <*> unflag (short 'n' <>+ long "no-typecheck" <> help "Do not typecheck after unification")+ <*> switch (long "yaml" <> help "Parse inputs as YAML instead of JSON")+ <*> switch (short 'p' <>+ long "preprocessor" <>+ help "Work as GHC preprocessor (and skip preprocessor pragma)")+ <*> some (argument str (metavar "FILES..."))+ )++-- | Report an error to error output.+report :: Text -> IO ()+report = Text.hPutStrLn stderr++-- | Report an error and terminate the program.+fatal :: Text -> IO ()+fatal msg = do report msg+ exitFailure++-- | Extracts type from JSON file, along with the original @Value@.+-- In order to facilitate dealing with failures, it returns a triple of+-- @FilePath@, extracted @Type@, and a JSON @Value@.+extractTypeFromJSONFile :: Options -> FilePath -> IO (Maybe (FilePath, Type, Value))+extractTypeFromJSONFile opts inputFilename =+ withFileOrHandle inputFilename ReadMode stdin $ \hInput ->+ -- First we decode JSON input into Aeson's Value type+ do Text.hPutStrLn stderr $ "Processing " `Text.append` Text.pack (show inputFilename)+ decodedJSON :: Either Text Value <- decoder <$> BSL.hGetContents hInput+ --let decodedJSON :: Maybe Value = decodeValue input+ -- myTrace ("Decoded JSON: " ++ pretty decoded)+ case decodedJSON of+ Left err -> do report $ Text.concat ["Cannot decode JSON input from "+ , Text.pack (show inputFilename)+ , err+ ]+ return Nothing+ Right v -> do -- If decoding JSON was successful...+ -- We extract type structure from the JSON value.+ let t :: Type = extractType v+ myTrace $ "Type: " ++ pretty t+ (v `typeCheck` t) `unless` fatal ("Typecheck against base type failed for "+ `Text.append` Text.pack inputFilename)+ return $ Just (inputFilename, t, v)+ where+ decoder :: FromJSON v => BSL.ByteString -> Either Text v+ decoder input | yaml opts = case Yaml.decodeEither' $ BSL.toStrict input of+ Left exc -> Left $ Text.pack $ Yaml.prettyPrintParseException exc+ Right r -> Right r+ | otherwise = case eitherDecode input of+ Left e -> Left $ Text.pack e+ Right r -> Right r+ -- | Works like @Debug.trace@ when the --debug flag is enabled, and does nothing otherwise.+ myTrace :: String -> IO ()+ myTrace msg = debug (tyOpts opts) `when` putStrLn msg+ -- | Perform preprocessing of JSON input to drop initial pragma.+ preprocess :: BSL.ByteString -> BSL.ByteString+ preprocess | preprocessor opts = dropPragma+ | otherwise = id+++-- | Type checking all input files with given type,+-- and return a list of filenames for files that passed the check.+typeChecking :: Type -> [FilePath] -> [Value] -> IO [FilePath]+typeChecking ty inputFilenames values = do+ unless (null failures) $ report $ Text.unwords $ "Failed to typecheck with unified type: ":+ (Text.pack `map` failures)+ when ( null successes) $ fatal "No files passed the typecheck."+ return successes+ where+ checkedFiles = zip inputFilenames $ map (`typeCheck` ty) values+ (map fst -> successes,+ map fst -> failures) = partition snd checkedFiles++-- | Take a set of JSON input filenames, Haskell output filename, and generate module parsing these JSON files.+generateHaskellFromJSONs :: Options -> [FilePath] -> FilePath -> IO ()+generateHaskellFromJSONs opts@Options { tyOpts=TyOptions { toplevel+ , lang+ , test }+ }+ inputFilenames outputFilename = do+ -- Read type from each file+ (filenames,+ typeForEachFile,+ valueForEachFile) <- unzip3 . catMaybes <$> mapM (extractTypeFromJSONFile opts) inputFilenames+ -- Unify all input types+ when (null typeForEachFile) $ do+ report "No valid JSON input file..."+ exitFailure+ let finalType = foldr1 unifyTypes typeForEachFile+ passedTypeCheck <- if typecheck opts+ then typeChecking finalType filenames valueForEachFile+ else return filenames+ -- We split different dictionary labels to become different type trees (and thus different declarations.)+ let splitted = splitTypeByLabel toplevelName finalType+ myTrace $ "SPLITTED: " ++ pretty splitted+ assert (not $ any hasNonTopTObj $ Map.elems splitted) $ do+ -- We compute which type labels are candidates for unification+ let uCands = unificationCandidates splitted+ myTrace $ "CANDIDATES:\n" ++ pretty uCands+ when (suggest $ tyOpts opts) $ forM_ uCands $ \cs -> do+ putStr "-- "+ Text.putStrLn $ "=" `Text.intercalate` cs+ -- We unify the all candidates or only those that have been given as command-line flags.+ let unified = if autounify $ tyOpts opts+ then unifyCandidates uCands splitted+ else splitted+ myTrace $ "UNIFIED:\n" ++ pretty unified+ -- We start by writing module header+ writeModule lang outputFilename toplevelName unified+ when (test && (outputFilename /= "")) $+ exitWith =<< runModule lang outputFilename passedTypeCheck+ where+ -- | Works like @Debug.trace@ when the --debug flag is enabled, and does nothing otherwise.+ myTrace :: String -> IO ()+ myTrace msg = debug (tyOpts opts) `when` putStrLn msg+ toplevelName = capitalize $ Text.pack toplevel++-- | Drop initial pragma.+dropPragma :: BSL.ByteString -> BSL.ByteString+dropPragma input | "{-#" `BSL.isPrefixOf` input = BSL.dropWhile (/='\n') input+ | otherwise = input+++-- | Initialize flags, and run @generateHaskellFromJSONs@.+main :: IO ()+main = do opts <- execParser optInfo+ generateHaskellFromJSONs opts (filenames opts) (outputFilename opts)+ where+ optInfo = info (optParser <**> helper)+ ( fullDesc+ <> progDesc "Parser JSON or YAML, get its type, and generate appropriate parser."+ <> header "json-to-type -- automatic type and parser generation from JSON")
+ changelog.md view
@@ -0,0 +1,246 @@+Changelog+=========+ 4.0.0 Mar 2022+ * fork from json-to-type, merge json-alt. rename json-to-type.+ delete stack. add flake.+ Set module paths according to package name.++ + 3.1.3 Mar 2022+ * Relaxed bounds, fixes #47.++ 3.1.2 Apr 2020+ * Future-proof nested code gen interface+ with parametric `CodeFrag`ment that can+ refer to thing that is not a type.++ 3.1.1 Apr 2020+ * Expose JsonToType.Nested++ 3.1.0 Apr 2020+ * New, experimental interface for nesting+ generated types by other code generators.++ 3.0.5 Mar 2020+ * Using package import from `run-haskell-module` by default.+ * Expose commonly used functions for:+ - normalizing Haskell type names,+ - formatting JSON Autotype types in Haskell++ 3.0.4 Mar 2020+ * Do not try to test compilation when module is written to stdout.+ * Update lens dependency bounds++ 3.0.3 Mar 2020+ * Separate running Haskell modules in `run-haskell-module` package.++ 3.0.2 Sep 2019+ * Relax `lens`, `hashable` version bounds for GHC 8.8.1 update.++ 3.0.0 Nov 2018+ * Distinguishing integers and floats.+ * Hide all API beside Alternative (as unused outside generator).+ * Add fixity for alt (#20)+ * Use `eitherDecode` instead of `decode` to get better error messages.+ * Split JsonToType.Alternative to `json-alt`.++ 2.0.2 Nov 2018+ * Clean up the tests.+ * Remove compatibility with Aeson versions earlier than 1.2.1.+ * Removed all CPP macros+ * Add --version++ 2.0.1 Nov 2018+ * Better error reporting when parsing JSON.++ 2.0.0 Jun 2018+ * Elm support completed with untagged unions+ * Add HaskellStrict option for running tests with -Werror, -Wall by default.+ * Make random tests run with -Werror, -Wall by default+ * Update dependencies to Aeson ranged between 1.2.1-1.4++ 1.1.2 Mar 2018+ * Fixed maintainer list.++ 1.1.1 Mar 2018+ * Fixed test builds (for Haskell).++ 1.1.0 Mar 2018+ * Partial support Elm code generation.++ 1.0.19 Nov 2017+ * Allow to have a custom name for toplevel data type.++ 1.0.18 Nov 2017+ * Fixed unit tests.+ * Fixed import for inclusion in Stackage.++ 1.0.17 Nov 2017+ * Fixed build and test issues.++ 1.0.16 Nov 2017+ * Dependencies updated to resolve #12, #15.+ * Fixed orphan Generic for Aeson >= 1.2.1 (#14).+ * Cleaned option parsing code.+ * Qualify GHC.Generics import.+ * Switch to optparse-applicative+ * Option to explicitly unify selected entries++ 1.0.15 Dec 2016+ * Support YAML input.++ 1.0.14 May 2016+ * Update to latest lens.++ 1.0.13 Mar 2016+ * Bumped up hint upper bound for v0.5.++ 1.0.12 Mar 2016++ * Fixed issue #8 - misrepresenting Double as Int.+ * Fixed issue #9 - efficient formatting with new Aeson-0.10 builder (toEncoding.)++ 1.0.11 Mar 2016++ * Updated to GHC 8.0++ 1.0.10 Sep 2015++ * Fixed bug appeared with aeson 0.10 breaking change:+ https://github.com/bos/aeson/issues/287++ 1.0.8 Sep 2015++ * Dependency bump for lens 4.13 and aeson 0.10.++ 1.0.7 Jul 2015++ * Dependency bump for lens and vector.++ 1.0.6 Jun 2015++ * Make lens and aeson versions consistent in the *.cabal file.++ 1.0.3-1.0.5 Jun 2015++ * Bumped Aeson dependency up.+ * Tiny docs corrections.++ 1.0.2 Jun 2015++ * Relaxed dependency for lens-4.11.++ 1.0.1 Apr 2015++ * Relaxed dependency to lens-4.10.++ 1.0 Apr 2015++ * First stable release.++ 0.5 Apr 2015++ * Reduced name space pollution when generating code.+ Now all valid JSON test examples do work.+ * Corrected build failure on GHC 7.8.4++ 0.4 Apr 2015++ * Release candidate for current functionality.++ 0.3 Apr 2015++ * Passed all smallcheck/quickcheck tests.+ * Approaching release candidate.++ 0.2.5.13 Apr 2015++ * Correctly handling lone option, not yet union with optionality.+ Fixed: #3.++ 0.2.5.12 Apr 2015++ * Added typechecking before and after type unification.+ * Added shrink for more informative QuickCheck testing.+ * Tested mostly using GHC 7.10.++ 0.2.5.11 Mar 2015++ * Add short versions of command line flags: -o, -d, and -t.++ 0.2.5.10 Mar 2015++ * Bump up lens dependency.++ 0.2.5.8 Mar 2015++ * Updated tests and build config.++ 0.2.5.7 Mar 2015++ * Fixed documentation anchors, and unit test classification for failures.++ 0.2.5.6 Mar 2015++ * Relaxed upper bounds for lens 4.8.++ 0.2.5.5 Mar 2015++ * (Skipped this version number by mistake.)++ 0.2.5.4 Dec 2014++ * Relaxed upper bounds for new lens.++ 0.2.5.3 Dec 2014++ * Relaxed upper bounds again.++ 0.2.5.2 Dec 2014++ * Updated metainfo, relaxed upper bounds for GHC 7.10.++ 0.2.5.0 Nov 2014++ * Nicer union type syntax in JsonToType.Alternative.++ 0.2.4.0 Nov 2014++ * To assure proper treatment of unions,+ I make them with JsonToType.Alternative type instead of Either.++ 0.2.3.0 Nov 2014++ * Explicit JSON parser generation to avoid conflicts between Haskell keywords and field names.+ * Renaming of Haskell field names with a prefix of object name (data type.)++ 0.2.2.0 Nov 2014++ * GenerateJSONParser may now take multiple input samples to produce single parser.+ * Fixed automated testing for all example files.++ 0.2.1.4 Oct 2014++ * Added examples to the package distribution.++ 0.2.1.3 Oct 2014++ * Cleaned up package.+ * Changelog in markdown format.++ 0.2.1 Oct 2014++ * Added option to use it as a filter ('-' is accepted input name.)++ 0.2.0 Oct 2014++ * First release to Hackage.+ * Handling of proper unions, and most examples.+ * Automatically tested on a wide range of example documents (see+ tests/)+ * Initial documentation in README.md.++ 0.1.0 July 2014++ * First experiments uploaded to GitHub, and discussed to+ HackerSpace.SG.
+ common/CommonCLI.hs view
@@ -0,0 +1,39 @@+module CommonCLI(TypeOpts(..), unflag, tyOptParser) where+++import Data.Monoid ((<>))+import Options.Applicative+import System.Process (system)+import qualified System.Environment (lookupEnv)+import System.Exit (ExitCode)++import JsonToType.CodeGen (Lang(..))++data TypeOpts = TyOptions {+ autounify :: Bool+ , toplevel :: String+ , debug :: Bool+ , test :: Bool+ , suggest :: Bool+ , lang :: Lang+ }++unflag :: Mod FlagFields Bool -> Parser Bool+unflag = flag True False++tyOptParser :: Parser TypeOpts+tyOptParser = TyOptions+ <$> unflag (long "no-autounify" <> help "Do not automatically unify suggested candidates")+ <*> strOption (short 't' <>+ long "toplevel" <> value "TopLevel"+ <> help "Name for toplevel data type")+ <*> switch (long "debug" <> help "Set this flag to see more debugging info" )+ <*> unflag (long "no-test" <> help "Do not run generated parser afterwards" )+ <*> unflag (long "no-suggest" <> help "Do not suggest candidates for unification" )+ <*> langOpts+++langOpts :: Parser Lang+langOpts = flag Haskell Haskell (long "haskell")+ <|> flag Haskell Elm (long "elm")+
+ examples/colors.json view
@@ -0,0 +1,15 @@+{+ "colorsArray":[{+ "colorName":"red",+ "hexValue":"#f00"+ },+ {+ "colorName":"green",+ "hexValue":"#0f0"+ },+ {+ "colorName":"blue",+ "hexValue":"#00f"+ }+ ]+}
+ examples/union.json view
@@ -0,0 +1,14 @@+{+ "parameter":[{+ "parameterName":"apiVersion",+ "parameterValue":1+ },+ {+ "parameterName":"failOnWarnings",+ "parameterValue":false+ },+ {+ "parameterName":"caller",+ "parameterValue":"site API"+ }]+}
+ json-to-type.cabal view
@@ -0,0 +1,309 @@+cabal-version: 3.0++-- This file has been generated from package.yaml by hpack version 0.35.2.+--+-- see: https://github.com/sol/hpack++name: json-to-type+version: 4.0.0+synopsis: Automatic type declaration for JSON input data+description: Generates datatype declarations with Aeson''s ''Data.Aeson.FromJSON''+ .+ instances from a set of example @.json@ files.+ .+ .+ To get started you need to install the package,+ .+ and run @json-to-type@ binary on an input @.json@ file.+ .+ That will generate a new Aeson-based JSON parser.+ .+ .+ > $ json-to-type input.json -o JSONTypes.hs+ .+ .+ Feel free to tweak the by changing types of the fields+ .+ — any field type that is instance of ''Data.Aeson.FromJSON'' should work.+ .+ .+ You may immediately test the parser by calling it as a script:+ .+ .+ > $ runghc JSONTypes.hs input.json+ .+ .+ One can now use multiple input files to generate better type description.+ .+ .+ Now with Elm code generation support!+ .+ (If you want your favourite programming language supported too —+ .+ name your price and mail the author.)+ .+ .+ See introduction on <https://github.com/mgajda/json-to-type> for details.'+ .+homepage: https://github.com/jappeace/json-to-type.git#readme+license: BSD-3-Clause+license-file: LICENSE+stability: stable+author: Michal J. Gajda+maintainer: simons@cryp.to,+ mjgajda@gmail.com+copyright: Copyright by Migamake '2014-'2020+category: Data, Tools+build-type: Simple+extra-source-files:+ README.md+ changelog.md+ examples/union.json+ examples/colors.json+ test/colors.json+ test/events.json+ test/interop.json+ test/jenkins.json+ test/youtube.json+ test/customerform.json+ test/facebook.json+ test/iPhoneMenu.json+ test/productsdb.json+bug-reports: https://github.com/jappeace/json-to-type/issues+tested-with:+ GHC==8.0.2 GHC==8.2.2 GHC==8.4.4 GHC==8.6.5 GHC==8.8.2 GHC==8.10.1++source-repository head+ type: git+ location: https://github.com/jappeace/json-to-type.git++library+ exposed-modules:+ JsonToType.CodeGen+ JsonToType.Extract+ JsonToType.Alternative+ JsonToType.Format+ JsonToType.CodeGen.Haskell+ JsonToType.CodeGen.HaskellFormat+ JsonToType.CodeGen.Generic+ JsonToType.CodeGen.Elm+ JsonToType.CodeGen.ElmFormat+ JsonToType.Split+ JsonToType.Type+ JsonToType.Test+ JsonToType.Util+ JsonToType.Nested+ JsonToType.Pretty+ other-modules:+ JsonToType.CodeGen.Common+ JsonToType.Plugin.Subtype+ Paths_json_to_type+ autogen-modules:+ Paths_json_to_type+ hs-source-dirs:+ src+ other-extensions:+ TemplateHaskell+ ScopedTypeVariables+ OverloadedStrings+ FlexibleInstances+ MultiParamTypeClasses+ DeriveDataTypeable+ DeriveGeneric+ RecordWildCards+ build-depends:+ GenericPretty+ , QuickCheck+ , aeson+ , base >=4.0.0 && <5.0+ , containers+ , data-default+ , filepath+ , hashable+ , lens+ , mtl+ , pretty+ , process+ , run-haskell-module+ , scientific+ , smallcheck+ , template-haskell+ , text+ , uniplate+ , unordered-containers+ , vector+ default-language: Haskell2010++executable json-to-type+ main-is: GenerateJSONParser.hs+ hs-source-dirs:+ app+ common+ other-modules:+ CommonCLI+ Paths_json_to_type+ autogen-modules:+ Paths_json_to_type+ other-extensions:+ TemplateHaskell+ ScopedTypeVariables+ OverloadedStrings+ FlexibleInstances+ MultiParamTypeClasses+ DeriveDataTypeable+ DeriveGeneric+ RecordWildCards+ build-depends:+ GenericPretty+ , aeson+ , base >=4.0.0 && <5.0+ , bytestring+ , containers+ , filepath+ , hashable+ , json-to-type+ , lens+ , mtl+ , optparse-applicative+ , pretty+ , process+ , scientific+ , template-haskell+ , text+ , uniplate+ , unordered-containers+ , vector+ , yaml+ default-language: Haskell2010++test-suite json-to-type-examples+ type: exitcode-stdio-1.0+ main-is: TestExamples.hs+ other-modules:+ CommonCLI+ Paths_json_to_type+ autogen-modules:+ Paths_json_to_type+ hs-source-dirs:+ test+ common+ other-extensions:+ TemplateHaskell+ ScopedTypeVariables+ OverloadedStrings+ FlexibleInstances+ MultiParamTypeClasses+ DeriveDataTypeable+ DeriveGeneric+ RecordWildCards+ build-depends:+ GenericPretty+ , QuickCheck+ , aeson+ , base >=4.0.0 && <5.0+ , containers+ , directory+ , filepath+ , hashable+ , json-to-type+ , lens+ , mtl+ , optparse-applicative+ , pretty+ , process+ , scientific+ , smallcheck+ , template-haskell+ , text+ , uniplate+ , unordered-containers+ , vector+ default-language: Haskell2010++test-suite json-to-type-gen-test+ type: exitcode-stdio-1.0+ main-is: GenerateTestJSON.hs+ hs-source-dirs:+ test/gen+ common+ other-modules:+ CommonCLI+ Paths_json_to_type+ autogen-modules:+ Paths_json_to_type+ other-extensions:+ TemplateHaskell+ ScopedTypeVariables+ OverloadedStrings+ FlexibleInstances+ MultiParamTypeClasses+ DeriveDataTypeable+ DeriveGeneric+ RecordWildCards+ build-depends:+ GenericPretty+ , QuickCheck+ , aeson+ , base >=4.0.0 && <5.0+ , bytestring+ , containers+ , directory+ , filepath+ , hashable+ , json-to-type+ , lens+ , mtl+ , optparse-applicative+ , pretty+ , process+ , scientific+ , smallcheck+ , template-haskell+ , text+ , uniplate+ , unordered-containers+ , vector+ default-language: Haskell2010++test-suite json-to-type-qc-test+ type: exitcode-stdio-1.0+ main-is: TestQC.hs+ other-modules:+ CommonCLI+ Paths_json_to_type+ autogen-modules:+ Paths_json_to_type+ hs-source-dirs:+ test/qc+ common+ other-extensions:+ TemplateHaskell+ ScopedTypeVariables+ OverloadedStrings+ FlexibleInstances+ MultiParamTypeClasses+ DeriveDataTypeable+ DeriveGeneric+ RecordWildCards+ build-depends:+ GenericPretty+ , QuickCheck+ , aeson+ , base >=4.0.0 && <5.0+ , containers+ , filepath+ , hashable+ , json-to-type+ , lens+ , mtl+ , optparse-applicative+ , pretty+ , process+ , scientific+ , smallcheck+ , template-haskell+ , text+ , uniplate+ , unordered-containers+ , vector+ default-language: Haskell2010
+ src/JsonToType/Alternative.hs view
@@ -0,0 +1,48 @@+{-# LANGUAGE TypeOperators #-}+-- | This module defines data type (a :|: b) that behaves all like @Either@,+-- except that has no tag in JSON representation as used by @FromJSON@ and @ToJSON@.+module JsonToType.Alternative(+ (:|:)(..)+ , toEither, fromEither+ , alt+ ) where++import Data.Aeson+import Control.Applicative++-- | Data type (a :|: b) that behaves all like @Either@,+-- except that has no tag in JSON representation as used by @FromJSON@ and @ToJSON@.+data a :|: b = AltLeft a+ | AltRight b+ deriving(Show,Eq,Ord)+infixr 5 :|:++-- | Convert to @Either@ datatype.+toEither :: a :|: b -> Either a b+toEither (AltLeft a) = Left a+toEither (AltRight b) = Right b+{-# INLINE toEither #-}++-- | Convert from @Either@ datatype.+fromEither :: Either a b -> a :|: b+fromEither (Left a) = AltLeft a+fromEither (Right b) = AltRight b+{-# INLINE fromEither #-}++-- | Deconstruct the type with two functions corresponding to constructors.+-- This is like @either@.+alt :: (a -> c) -> (b -> c) -> a :|: b -> c+alt f _ (AltLeft a) = f a+alt _ g (AltRight b) = g b+infixr 5 `alt`++instance (ToJSON a, ToJSON b) => ToJSON (a :|: b) where+ toJSON (AltLeft a) = toJSON a+ toJSON (AltRight b) = toJSON b+ {-# INLINE toJSON #-}++instance (FromJSON a, FromJSON b) => FromJSON (a :|: b) where+ parseJSON input = (AltLeft <$> parseJSON input) <|>+ (AltRight <$> parseJSON input) <|>+ fail ("Neither alternative was found for: " ++ show input)+ {-# INLINE parseJSON #-}
+ src/JsonToType/CodeGen.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedStrings #-}+-- | Code generation and test running in different languages. (Switchbox.)+module JsonToType.CodeGen(+ Lang(..)+ , writeModule+ , runModule+ , defaultOutputFilename+ ) where++import Data.Text(Text)+import qualified Data.HashMap.Strict as Map+import JsonToType.Type+import System.Exit++import JsonToType.CodeGen.Haskell+import JsonToType.CodeGen.Elm++-- | Available output languages.+data Lang = Haskell+ | HaskellStrict+ | Elm++-- | Default output filname is used, when there is no explicit output file path, or it is "-" (stdout).+-- Default module name is consistent with it.+defaultOutputFilename :: Lang -> FilePath+defaultOutputFilename Haskell = defaultHaskellFilename+defaultOutputFilename HaskellStrict = defaultHaskellFilename+defaultOutputFilename Elm = defaultElmFilename++-- | Write a Haskell module to an output file, or stdout if `-` filename is given.+writeModule :: Lang -> FilePath -> Text -> Map.HashMap Text Type -> IO ()+writeModule Haskell = writeHaskellModule+writeModule HaskellStrict = writeHaskellModule+writeModule Elm = writeElmModule++-- | Run module in a given language.+runModule :: Lang -> FilePath -> [String] -> IO ExitCode+runModule Haskell = runHaskellModule+runModule HaskellStrict = runHaskellModuleStrict+runModule Elm = runElmModule
+ src/JsonToType/CodeGen/Common.hs view
@@ -0,0 +1,13 @@+module JsonToType.CodeGen.Common(writeRunningCommandComment) where++import System.Environment(getArgs, getProgName)+import System.IO++-- | Write a comment with urrently running command (for documentation of generated code.)+writeRunningCommandComment :: Handle -> String -> IO ()+writeRunningCommandComment outHandle commentString = do+ prog <- getProgName+ args <- getArgs+ hPutStrLn outHandle $ unwords $ commentString:prog:args++
+ src/JsonToType/CodeGen/Elm.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedStrings #-}+-- | Wrappers for generating prologue and epilogue code in Haskell.+module JsonToType.CodeGen.Elm(+ defaultElmFilename+ , writeElmModule+ , runElmModule+ ) where++import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import Data.Text+import qualified Data.HashMap.Strict as Map+import Control.Arrow (first)+import Control.Exception (assert)+import Data.Monoid ((<>))+import System.FilePath+import System.IO+import System.Process (system)+import System.Exit (ExitCode)++import JsonToType.Format+import JsonToType.Type+import JsonToType.Util+import JsonToType.CodeGen.ElmFormat++import Debug.Trace(trace)++defaultElmFilename = "JSONTypes.elm"++header :: Text -> Text+header moduleName = Text.unlines [+ Text.unwords ["module ", capitalize moduleName, " exposing(..)"]+ ,""+ ,"-- DO NOT EDIT THIS FILE MANUALLY!"+ ,"-- It was automatically generated by `json-to-type`."+ ,"-- elm-package install toastal/either"+ ,"-- elm-package install NoRedInk/elm-decode-pipeline"+ ,"import Either exposing (Either, unpack)"+ ,"import Json.Encode exposing (..)"+ ,"import Json.Decode exposing (..)"+ ,"import Json.Decode.Pipeline exposing (..)"+ ,""]++epilogue :: Text -> Text+epilogue toplevelName = Text.unlines []++-- | Write a Haskell module to an output file, or stdout if `-` filename is given.+writeElmModule :: FilePath -> Text -> Map.HashMap Text Type -> IO ()+writeElmModule outputFilename toplevelName types =+ withFileOrHandle outputFilename WriteMode stdout $ \hOut ->+ assert (trace extension extension == ".elm") $ do+ Text.hPutStrLn hOut $ header $ Text.pack moduleName+ -- We write types as Haskell type declarations to output handle+ Text.hPutStrLn hOut $ displaySplitTypes types+ Text.hPutStrLn hOut $ epilogue toplevelName+ where+ (moduleName, extension) =+ first normalizeTypeName' $+ splitExtension $+ if outputFilename == "-"+ then defaultElmFilename+ else outputFilename+ normalizeTypeName' = Text.unpack . normalizeTypeName . Text.pack++runElmModule :: FilePath -> [String] -> IO ExitCode+runElmModule elmModule _arguments = do+ hPutStrLn stderr "Compiling *not* running Elm module for a test."+ system $ Prelude.unwords $ ["elm", "make", elmModule] -- ignore parsing args
+ src/JsonToType/CodeGen/ElmFormat.hs view
@@ -0,0 +1,316 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGuaGE ScopedTypeVariables #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGuaGE DeriveGeneric #-}+{-# LANGuaGE FlexibleContexts #-}+-- | Formatting type declarations and class instances for inferred types.+module JsonToType.CodeGen.ElmFormat(+ displaySplitTypes,+ normalizeTypeName) where++import Control.Arrow ((&&&))+import Control.Applicative ((<$>), (<*>))+import Control.Lens.TH+import Control.Lens+import Control.Monad (forM)+import Control.Exception(assert)+import qualified Data.HashMap.Strict as Map+import Data.Monoid+import qualified Data.Set as Set+import qualified Data.Text as Text+import Data.Text (Text)+import Data.Set (Set, toList)+import Data.List (foldl1')+import Data.Char (isAlpha, isDigit)+import Control.Monad.State.Class+import Control.Monad.State.Strict(State, runState)+import GHC.Generics (Generic)++import JsonToType.Type+import JsonToType.Extract+import JsonToType.Split+import JsonToType.Format+import JsonToType.Util ()++--import Debug.Trace -- DEBUG+trace _ x = x++fst3 :: (t, t1, t2) -> t+fst3 (a, _b, _c) = a++data DeclState = DeclState { _decls :: [Text]+ , _counter :: Int+ }+ deriving (Eq, Show, Ord, Generic)++makeLenses ''DeclState++type DeclM = State DeclState++type Map k v = Map.HashMap k v++stepM :: DeclM Int+stepM = counter %%= (\i -> (i, i+1))++tShow :: (Show a) => a -> Text+tShow = Text.pack . show++-- | Wrap a type alias.+wrapAlias :: Text -> Text -> Text+wrapAlias identifier contents = Text.unwords ["type alias ", identifier, "=", contents]++-- | Wrap a data type declaration+wrapDecl :: Text -> Text -> Text+wrapDecl identifier contents = Text.unlines [header, contents, " }"]+ --,"\nderiveJSON defaultOptions ''" `Text.append` identifier]+ where+ header = Text.concat ["type alias ", identifier, " = ", " { "]++-- | Explanatory type alias for making declarations+-- First element of the triple is original JSON identifier,+-- second element of the triple is the mapped identifier name in Haskell.+-- third element of the triple shows the type in a formatted way+type MappedKey = (Text, Text, Text, Type, Bool)++-- | Make Decoder declaration, given identifier (object name in Haskell) and mapping of its keys+-- from JSON to Haskell identifiers *in the same order* as in *data type declaration*.+makeDecoder :: Text -> [MappedKey] -> Text+makeDecoder identifier contents =+ Text.unlines [+ Text.concat [decodeIdentifier, " : Json.Decode.Decoder ", identifier]+ , Text.concat [decodeIdentifier, " ="]+ , Text.unwords [" Json.Decode.Pipeline.decode", identifier]+ , Text.unlines (makeParser identifier <$> contents) ]+ where+ decodeIdentifier = decoderIdent identifier+ makeParser identifier (jsonId, _, _, ty, isOptional) = Text.unwords [+ " |>"+ , if isOptional+ then "Json.Decode.Pipeline.optional"+ else "Json.Decode.Pipeline.required"+ , Text.concat ["\"", jsonId, "\""]+ , "(" <> getDecoder ty <> ")"] -- quote++getDecoder TString = "Json.Decode.string"+getDecoder TInt = "Json.Decode.int"+getDecoder TDouble = "Json.Decode.float"+getDecoder TBool = "Json.Decode.bool"+getDecoder (TArray t) = "Json.Decode.list (" <> getDecoder t <> ")"+getDecoder (TLabel l) = decoderIdent l+getDecoder (TObj o) = error "getDecoder cannot handle complex object types!"+getDecoder (TUnion u) = case nonNull of+ [] -> "Json.Decode.value"+ [x] -> getDecoder x+ _ -> foldl1' altDecoder $ map getDecoder nonNull+ where+ nonNull = nonNullComponents u+--error $ "getDecoder cannot yet handle union types:" <> show u++altDecoder a b = "(Json.Decode.oneOf [Json.Decode.map Either.Left ("+ <> a <> "), Json.Decode.map Either.Right ("+ <> b <> ")])"+{-Json.Decode.Pipeline.decode Something+"Json.Decode.Pipeline " <>-}+ ++decoderIdent ident = "decode" <> capitalize (normalizeTypeName ident)+-- Contents example for wrapFromJSON:+-- " <$>+--" v .: "hexValue" <*>+--" v .: "colorName\""++encoderIdent ident = "encode" <> capitalize (normalizeTypeName ident)++-- | Make Encoder declaration, given identifier (object name in Haskell) and mapping of its keys+-- from JSON to Haskell identifiers in the same order as in declaration+makeEncoder :: Text -> [MappedKey] -> Text+makeEncoder identifier contents =+ Text.unlines [+ Text.unwords [encoderIdent identifier, ":", identifier, "->", "Json.Encode.Value"]+ , encoderIdent identifier <> " record ="+ , " Json.Encode.object ["+ , " " <> (joinWith "\n , " (makeEncoder <$> contents))+ , " ]"+ ]+ where+ makeEncoder (jsonId, haskellId, _typeText, ty, _nullable) = Text.concat [+ "(", tShow jsonId, ", (", getEncoder ty, ") record.", normalizeFieldName identifier jsonId, ")"+ ]+ --"answers", Json.Encode.list <| List.map encodeAnswer <| record.answers+ escapeText = Text.pack . show . Text.unpack++getEncoder :: Type -> Text+getEncoder TString = "Json.Encode.string"+getEncoder TDouble = "Json.Encode.float"+getEncoder TInt = "Json.Encode.int"+getEncoder TBool = "Json.Encode.bool"+getEncoder TNull = "identity"+getEncoder (TLabel l) = encoderIdent l+getEncoder (TArray e) = "Json.Encode.list << List.map (" <> getEncoder e <> ")"+getEncoder (TObj o) = error $ "Seeing direct object encoder: " <> show o+getEncoder (TUnion u) = case nonNull of+ [] -> "identity"+ [x] -> getDecoder x+ _ -> foldl1' altEncoder $ map getEncoder nonNull+ where+ nonNull = nonNullComponents u++altEncoder a b = "Either.unpack (" <> a <> ") (" <> b <> ")"++-- Contents example for wrapToJSON+--"hexValue" .= hexValue+-- ,"colorName" .= colorName]+-- | Join text with other as separator.+joinWith :: Text -> [Text] -> Text+joinWith _ [] = ""+joinWith joiner (aFirst:rest) = aFirst <> Text.concat (map (joiner <>) rest)++-- | Makes a generic identifier name.+genericIdentifier :: DeclM Text+genericIdentifier = do+ i <- stepM+ return $! "Obj" `Text.append` tShow i++-- * Printing a single data type declaration+newDecl :: Text -> [(Text, Type)] -> DeclM Text+newDecl identifier kvs = do attrs <- forM kvs $ \(k, v) -> do+ formatted <- formatType v+ return (k, normalizeFieldName identifier k, formatted, v, isNullable v)+ let decl = Text.unlines [wrapDecl identifier $ fieldDecls attrs+ ,""+ ,makeDecoder identifier attrs+ ,""+ ,makeEncoder identifier attrs]+ addDecl decl+ return identifier+ where+ fieldDecls attrList = Text.intercalate ",\n" $ map fieldDecl attrList+ fieldDecl :: (Text, Text, Text, Type, Bool) -> Text+ fieldDecl (_jsonName, haskellName, fType, _type, _nullable) = Text.concat [+ " ", haskellName, " : ", fType]++addDecl decl = decls %%= (\ds -> ((), decl:ds))++-- | Add new type alias for Array type+newAlias :: Text -> Type -> DeclM Text+newAlias identifier content = do formatted <- formatType content+ addDecl $ Text.unlines [wrapAlias identifier formatted]+ return identifier++-- | Convert a JSON key name given by second argument,+-- from within a dictionary keyed with first argument,+-- into a name of Haskell record field (hopefully distinct from other such selectors.)+normalizeFieldName :: Text -> Text -> Text+normalizeFieldName identifier = escapeKeywords .+ uncapitalize .+ (normalizeTypeName identifier `Text.append`) .+ normalizeTypeName++keywords :: Set Text+keywords = Set.fromList ["type", "alias", "exposing", "module", "class",+ "where", "let", "do"]++escapeKeywords :: Text -> Text+escapeKeywords k | k `Set.member` keywords = k `Text.append` "_"+escapeKeywords k = k++nonNullComponents = Set.toList . Set.filter (TNull /=)+-- | Format the type within DeclM monad, that records+-- the separate declarations on which this one is dependent.+formatType :: Type -> DeclM Text+formatType TString = return "String"+formatType TDouble = return "Float"+formatType TInt = return "Int"+formatType TBool = return "Bool"+formatType (TLabel l) = return $ normalizeTypeName l+formatType (TUnion u) = wrap <$> case length nonNull of+ 0 -> return emptyTypeRepr+ 1 -> formatType $ head nonNull+ _ -> foldl1' join <$> mapM formatType nonNull+ where+ nonNull = nonNullComponents u+ wrap :: Text -> Text+ wrap inner | TNull `Set.member` u = Text.concat ["(Maybe (", inner, "))"]+ | otherwise = inner+ join fAlt fOthers = Text.concat ["Either (", fAlt, ") (", fOthers, ")"]+formatType (TArray a) = do inner <- formatType a+ return $ Text.concat ["List (", inner, ")"]+formatType (TObj o) = do ident <- genericIdentifier+ newDecl ident d+ where+ d = Map.toList $ unDict o+formatType e | e `Set.member` emptySetLikes = return emptyTypeRepr+formatType t = return $ "ERROR: Don't know how to handle: " `Text.append` tShow t++emptyTypeRepr :: Text+emptyTypeRepr = "Json.Decode.Value" -- default, accepts future extension where we found no data++runDecl :: DeclM a -> Text+runDecl decl = Text.unlines $ finalState ^. decls+ where+ initialState = DeclState [] 1+ (_, finalState) = runState decl initialState++-- * Splitting object types by label for unification.+type TypeTree = Map Text [Type]++type TypeTreeM a = State TypeTree a++addType :: Text -> Type -> TypeTreeM ()+addType label typ = modify $ Map.insertWith (++) label [typ]++formatObjectType :: Text -> Type -> DeclM Text+formatObjectType identifier (TObj o) = newDecl identifier d+ where+ d = Map.toList $ unDict o+formatObjectType identifier other = newAlias identifier other++-- | Display an environment of types split by name.+displaySplitTypes :: Map Text Type -> Text+displaySplitTypes dict = trace ("displaySplitTypes: " ++ show (toposort dict)) $ runDecl declarations+ where+ declarations =+ forM (toposort dict) $ \(name, typ) ->+ formatObjectType (normalizeTypeName name) typ++-- | Normalize type name by:+-- 1. Treating all characters that are not acceptable in Haskell variable name as end of word.+-- 2. Capitalizing each word, but a first (camelCase).+-- 3. Adding underscore if first character is non-alphabetic.+-- 4. Escaping Haskell keywords if the whole identifier is such keyword.+-- 5. If identifier is empty, then substituting "JsonEmptyKey" for its name.+normalizeTypeName :: Text -> Text+normalizeTypeName s = ifEmpty "JsonEmptyKey" .+ escapeKeywords .+ escapeFirstNonAlpha .+ Text.concat .+ map capitalize .+ filter (not . Text.null) .+ Text.split (not . acceptableInVariable) $ s+ where+ ifEmpty x "" = x+ ifEmpty _ nonEmpty = nonEmpty+ acceptableInVariable c = isAlpha c || isDigit c+ escapeFirstNonAlpha cs | Text.null cs = cs+ escapeFirstNonAlpha cs@(Text.head -> c) | isAlpha c = cs+ escapeFirstNonAlpha cs = "_" `Text.append` cs++-- | Computes all type labels referenced by a given type.+allLabels :: Type -> [Text]+allLabels = flip go []+ where+ go (TLabel l) ls = l:ls+ go (TArray t) ls = go t ls+ go (TUnion u) ls = Set.foldr go ls u+ go (TObj o) ls = Map.foldr go ls $ unDict o+ go _other ls = ls++-- | Remaps type labels according to a `Map`.+remapLabels :: Map Text Text -> Type -> Type+remapLabels ls (TObj o) = TObj $ Dict $ Map.map (remapLabels ls) $ unDict o+remapLabels ls (TArray t) = TArray $ remapLabels ls t+remapLabels ls (TUnion u) = TUnion $ Set.map (remapLabels ls) u+remapLabels ls (TLabel l) = TLabel $ Map.lookupDefault l l ls+remapLabels _ other = other
+ src/JsonToType/CodeGen/Generic.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+module JsonToType.CodeGen.Generic(src) where++import Language.Haskell.TH+import Language.Haskell.TH.Quote++-- | Multiline source string+src = QuasiQuoter (\src -> [|src|])+ (error "Cannot use src as pattern")+ (error "Cannot use src as type" )+ (error "Cannot use src as dec" )+
+ src/JsonToType/CodeGen/Haskell.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE OverloadedStrings #-}+-- | Wrappers for generating prologue and epilogue code in Haskell.+module JsonToType.CodeGen.Haskell(+ writeHaskellModule+ , runHaskellModule+ , runHaskellModuleStrict+ , defaultHaskellFilename+ , importedModules+ , requiredPackages+ , generateModuleImports+ , ModuleImport+ ) where++import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import Data.Text hiding (unwords)+import qualified Data.HashMap.Strict as Map+import Control.Arrow (first)+import Control.Exception (assert)+import Data.Default+import Data.Monoid ((<>))+import System.FilePath+import System.IO+import System.Process (system)+import qualified System.Environment (lookupEnv)+import System.Exit (ExitCode)++import JsonToType.Format+import JsonToType.Type+import JsonToType.CodeGen.Generic(src)+import JsonToType.CodeGen.HaskellFormat+import JsonToType.Util++import qualified Language.Haskell.RunHaskellModule as Run++-- | Default output filname is used, when there is no explicit output file path, or it is "-" (stdout).+-- Default module name is consistent with it.+defaultHaskellFilename :: FilePath+defaultHaskellFilename = "JSONTypes.hs"++-- | Generate module header+header :: Text -> Text+header moduleName = [src|+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DeriveGeneric #-}+-- | DO NOT EDIT THIS FILE MANUALLY!+-- It was automatically generated by `json-to-type`.+module |] <> capitalize moduleName <> [src| where+|] <> generateModuleImports importedModules++-- | Alias for indicating that this is item in module imports list.+type ModuleImport = Text++-- | Given a list of imports, generate source code.+generateModuleImports :: [ModuleImport] -> Text+generateModuleImports = Text.unlines+ . fmap ("import " <>)++-- | List of packages required by modules below.+-- Keep and maintain together.+requiredPackages :: [Text]+requiredPackages = ["aeson", "json-alt", "base", "bytestring", "text"]++-- | List of modules to import+importedModules :: [ModuleImport]+importedModules = [+ " System.Exit (exitFailure, exitSuccess)"+ , " System.IO (stderr, hPutStrLn)"+ , "qualified Data.ByteString.Lazy.Char8 as BSL"+ , " System.Environment (getArgs)"+ , " Control.Monad (forM_, mzero, join)"+ , " Control.Applicative"+ , " JsonToType.Alternative"+ , " Data.Aeson(eitherDecode, Value(..), FromJSON(..), ToJSON(..),pairs,(.:), (.:?), (.=), object)"+ , " Data.Monoid((<>))"+ , " Data.Text (Text)"+ , "qualified GHC.Generics"+ ]++-- | Epilogue for generated code:+--+-- * function to use parser to get data from `Text`+-- * main function in case we use `runghc` for testing parser immediately+epilogue :: Text -> Text+epilogue toplevelName = [src|++-- | Use parser to get |] <> toplevelName <> [src| object+parse :: FilePath -> IO |] <> toplevelName <> [src|+parse filename = do+ input <- BSL.readFile filename+ case eitherDecode input of+ Left errTop -> fatal $ case (eitherDecode input :: Either String Value) of+ Left err -> "Invalid JSON file: " ++ filename ++ "\n " ++ err+ Right _ -> "Mismatched JSON value from file: " ++ filename+ ++ "\n" ++ errTop+ Right r -> return (r :: |] <> toplevelName <> ")" <> [src|+ where+ fatal :: String -> IO a+ fatal msg = do hPutStrLn stderr msg+ exitFailure++-- | For quick testing+main :: IO ()+main = do+ filenames <- getArgs+ forM_ filenames (\f -> parse f >>= (\p -> p `seq` putStrLn $ "Successfully parsed " ++ f))+ exitSuccess+|]++-- | Write a Haskell module to an output file, or stdout if `-` filename is given.+writeHaskellModule :: FilePath -> Text -> Map.HashMap Text Type -> IO ()+writeHaskellModule outputFilename toplevelName types =+ withFileOrHandle outputFilename WriteMode stdout $ \hOut ->+ assert (extension == ".hs") $ do+ Text.hPutStrLn hOut $ header $ Text.pack moduleName+ -- We write types as Haskell type declarations to output handle+ Text.hPutStrLn hOut $ displaySplitTypes types+ Text.hPutStrLn hOut $ epilogue toplevelName+ where+ (moduleName, extension) =+ first normalizeTypeName' $+ splitExtension $+ if outputFilename == "-"+ then defaultHaskellFilename+ else outputFilename+ normalizeTypeName' = Text.unpack . normalizeTypeName . Text.pack++-- | Function to run Haskell module+--+-- FIXME: just rely on `run-haskell-module` exports+runHaskellModule :: FilePath -> [String] -> IO ExitCode+runHaskellModule = Run.runHaskellModule++-- | Options to be used when running Haskell module+defaultHaskellOpts :: Run.RunOptions+defaultHaskellOpts = def { Run.additionalPackages = ["json-alt", "aeson"]+ }++-- | Run Haskell module with strict warning options (each warning is an error)+runHaskellModuleStrict :: FilePath -> [String] -> IO ExitCode+runHaskellModuleStrict = Run.runHaskellModule' opts+ where+ opts = def { Run.compileArgs = ["-Wall", "-Werror"]}+
+ src/JsonToType/CodeGen/HaskellFormat.hs view
@@ -0,0 +1,289 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGuaGE ScopedTypeVariables #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGuaGE DeriveGeneric #-}+{-# LANGuaGE FlexibleContexts #-}+-- | Formatting type declarations and class instances for inferred types.+module JsonToType.CodeGen.HaskellFormat(+ displaySplitTypes, normalizeTypeName,+ normalizeFieldName, formatType+) where++import Control.Arrow ((&&&))+import Control.Applicative ((<$>), (<*>))+import Control.Lens.TH+import Control.Lens+import Control.Monad (forM)+import Control.Exception(assert)+import qualified Data.HashMap.Strict as Map+import Data.Monoid+import qualified Data.Set as Set+import qualified Data.Text as Text+import Data.Text (Text)+import Data.Set (Set )+import Data.List (foldl1')+import Data.Char (isAlpha, isDigit)+import Control.Monad.State.Class+import Control.Monad.State.Strict(State, runState)+import qualified Data.Graph as Graph+import GHC.Generics (Generic)++import JsonToType.Type+import JsonToType.Extract+import JsonToType.Format+import JsonToType.Split (toposort)+import JsonToType.Util ()++--import Debug.Trace -- DEBUG+trace _ x = x++fst3 :: (t, t1, t2) -> t+fst3 (a, _b, _c) = a++data DeclState = DeclState { _decls :: [Text]+ , _counter :: Int+ }+ deriving (Eq, Show, Ord, Generic)++makeLenses ''DeclState++type DeclM = State DeclState++type Map k v = Map.HashMap k v++stepM :: DeclM Int+stepM = counter %%= (\i -> (i, i+1))++tShow :: (Show a) => a -> Text+tShow = Text.pack . show++-- | Wrap a type alias.+wrapAlias :: Text -> Text -> Text+wrapAlias identifier contents = Text.unwords ["type", identifier, "=", contents]++-- | Wrap a data type declaration+wrapDecl :: Text -> Text -> Text+wrapDecl identifier contents = Text.unlines [header, contents, " } deriving (Show,Eq,GHC.Generics.Generic)"]+ --,"\nderiveJSON defaultOptions ''" `Text.append` identifier]+ where+ header = Text.concat ["data ", identifier, " = ", identifier, " { "]++-- | Explanatory type alias for making declarations+-- First element of the triple is original JSON identifier,+-- second element of the triple is the mapped identifier name in Haskell.+-- third element of the triple shows the type in a formatted way+type MappedKey = (Text, Text, Text, Bool)++-- | Make ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys+-- from JSON to Haskell identifiers *in the same order* as in *data type declaration*.+makeFromJSON :: Text -> [MappedKey] -> Text+makeFromJSON identifier contents =+ Text.unlines [+ Text.unwords ["instance FromJSON", identifier, "where"]+ , Text.unwords [" parseJSON (Object v) =", makeParser identifier contents]+ , " parseJSON _ = mzero" ]+ where+ makeParser identifier [] = Text.unwords ["return ", identifier]+ makeParser identifier _ = Text.unwords [identifier, "<$>", inner]+ inner = " <*> " `Text.intercalate`+ map takeValue contents+ takeValue (jsonId, _, ty, True ) = Text.concat ["v .:? \"", jsonId, "\""] -- nullable types+ takeValue (jsonId, _, _ , False) = Text.concat ["v .: \"", jsonId, "\""]+-- Contents example for wrapFromJSON:+-- " <$>+--" v .: "hexValue" <*>+--" v .: "colorName\""++-- | Make ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys+-- from JSON to Haskell identifiers in the same order as in declaration+makeToJSON :: Text -> [MappedKey] -> Text+makeToJSON identifier contents =+ Text.unlines [+ Text.concat ["instance ToJSON ", identifier, " where"]+ , Text.concat [" toJSON (", identifier, " {", wildcard, "}) = object [", inner ", ", "]"]+ , maybeToEncoding+ ]+ where+ maybeToEncoding | null contents = ""+ | otherwise =+ Text.concat [" toEncoding (", identifier, " {", wildcard, "}) = pairs (", inner "<>", ")"]+ wildcard | null contents = ""+ | otherwise = ".."+ inner separator = separator `Text.intercalate`+ map putValue contents+ putValue (jsonId, haskellId, _typeText, _nullable) = Text.unwords [escapeText jsonId, ".=", haskellId]+ escapeText = Text.pack . show . Text.unpack+-- Contents example for wrapToJSON+--"hexValue" .= hexValue+-- ,"colorName" .= colorName]+++-- | Makes a generic identifier name.+genericIdentifier :: DeclM Text+genericIdentifier = do+ i <- stepM+ return $! "Obj" `Text.append` tShow i++-- * Printing a single data type declaration+newDecl :: Text -> [(Text, Type)] -> DeclM Text+newDecl identifier kvs = do attrs <- forM kvs $ \(k, v) -> do+ formatted <- formatType v+ return (k, normalizeFieldName identifier k, formatted, isNullable v)+ let decl = Text.unlines [wrapDecl identifier $ fieldDecls attrs+ ,""+ ,makeFromJSON identifier attrs+ ,""+ ,makeToJSON identifier attrs]+ addDecl decl+ return identifier+ where+ fieldDecls attrList = Text.intercalate ",\n" $ map fieldDecl attrList+ fieldDecl :: (Text, Text, Text, Bool) -> Text+ fieldDecl (_jsonName, haskellName, fType, _nullable) = Text.concat [+ " ", (escapeKeywords haskellName), " :: ", fType]++addDecl decl = decls %%= (\ds -> ((), decl:ds))++-- | Add new type alias for Array type+newAlias :: Text -> Type -> DeclM Text+newAlias identifier content = do formatted <- formatType content+ addDecl $ Text.unlines [wrapAlias identifier formatted]+ return identifier++-- | Convert a JSON key name given by second argument,+-- from within a dictionary keyed with first argument,+-- into a name of Haskell record field (hopefully distinct from other such selectors.)+normalizeFieldName :: Text -> Text -> Text+normalizeFieldName identifier = escapeKeywords .+ uncapitalize .+ (normalizeTypeName identifier `Text.append`) .+ normalizeTypeName++keywords :: Set Text+keywords = Set.fromList ["kind", "type", "data", "module", "class", "where", "let", "do"]++escapeKeywords :: Text -> Text+escapeKeywords k | k `Set.member` keywords = k `Text.append` "_"+escapeKeywords k = k++-- | Format the type within DeclM monad, that records+-- the separate declarations on which this one is dependent.+formatType :: Type -> DeclM Text+formatType TString = return "Text"+formatType TInt = return "Int"+formatType TDouble = return "Double"+formatType TBool = return "Bool"+formatType (TLabel l) = return $ normalizeTypeName l+formatType (TUnion u) = wrap <$> case length nonNull of+ 0 -> return emptyTypeRepr+ 1 -> formatType $ head nonNull+ _ -> Text.intercalate ":|:" <$> mapM formatType nonNull+ where+ nonNull = Set.toList $ Set.filter (TNull /=) u+ wrap :: Text -> Text+ wrap inner | TNull `Set.member` u = Text.concat ["(Maybe (", inner, "))"]+ | otherwise = inner+formatType (TArray a) = do inner <- formatType a+ return $ Text.concat ["[", inner, "]"]+formatType (TObj o) = do ident <- genericIdentifier+ newDecl ident d+ where+ d = Map.toList $ unDict o+formatType e | e `Set.member` emptySetLikes = return emptyTypeRepr+formatType t = return $ "ERROR: Don't know how to handle: " `Text.append` tShow t++emptyTypeRepr :: Text+emptyTypeRepr = "(Maybe Value)" -- default, accepts future extension where we found no data++runDecl :: DeclM a -> Text+runDecl decl = Text.unlines $ finalState ^. decls+ where+ initialState = DeclState [] 1+ (_, finalState) = runState decl initialState++-- * Splitting object types by label for unification.+type TypeTree = Map Text [Type]++type TypeTreeM a = State TypeTree a++addType :: Text -> Type -> TypeTreeM ()+addType label typ = modify $ Map.insertWith (++) label [typ]++splitTypeByLabel' :: Text -> Type -> TypeTreeM Type+splitTypeByLabel' _ TString = return TString+splitTypeByLabel' _ TInt = return TInt+splitTypeByLabel' _ TDouble = return TDouble+splitTypeByLabel' _ TBool = return TBool+splitTypeByLabel' _ TNull = return TNull+splitTypeByLabel' _ (TLabel r) = assert False $ return $ TLabel r -- unnecessary?+splitTypeByLabel' l (TUnion u) = do m <- mapM (splitTypeByLabel' l) $ Set.toList u+ return $! TUnion $! Set.fromList m+splitTypeByLabel' l (TArray a) = do m <- splitTypeByLabel' (l `Text.append` "Elt") a+ return $! TArray m+splitTypeByLabel' l (TObj o) = do kvs <- forM (Map.toList $ unDict o) $ \(k, v) -> do+ component <- splitTypeByLabel' k v+ return (k, component)+ addType l (TObj $ Dict $ Map.fromList kvs)+ return $! TLabel l++-- | Splits initial type with a given label, into a mapping of object type names and object type structures.+splitTypeByLabel :: Text -> Type -> Map Text Type+splitTypeByLabel topLabel t = Map.map (foldl1' unifyTypes) finalState+ where+ finalize (TLabel l) = assert (l == topLabel) $ return ()+ finalize topLevel = addType topLabel topLevel+ initialState = Map.empty+ (_, finalState) = runState (splitTypeByLabel' topLabel t >>= finalize) initialState++formatObjectType :: Text -> Type -> DeclM Text+formatObjectType identifier (TObj o) = newDecl identifier d+ where+ d = Map.toList $ unDict o+formatObjectType identifier other = newAlias identifier other++-- | Display an environment of types split by name.+displaySplitTypes :: Map Text Type -> Text+displaySplitTypes dict = trace ("displaySplitTypes: " ++ show (toposort dict)) $ runDecl declarations+ where+ declarations =+ forM (toposort dict) $ \(name, typ) ->+ formatObjectType (normalizeTypeName name) typ++-- | Normalize type name by:+-- 1. Treating all characters that are not acceptable in Haskell variable name as end of word.+-- 2. Capitalizing each word, but a first (camelCase).+-- 3. Adding underscore if first character is non-alphabetic.+-- 4. Escaping Haskell keywords if the whole identifier is such keyword.+-- 5. If identifier is empty, then substituting "JsonEmptyKey" for its name.+normalizeTypeName :: Text -> Text+normalizeTypeName = ifEmpty "JsonEmptyKey" .+ ensureBeginsWithCapital .+ escapeKeywords .+ escapeFirstNonAlpha .+ Text.concat .+ map capitalize .+ filter (not . Text.null) .+ Text.split (not . acceptableInVariable)+ where+ ifEmpty x "" = x+ ifEmpty _ nonEmpty = nonEmpty+ ensureBeginsWithCapital x =+ if Text.isPrefixOf "_" x+ then "D" <> x+ else x+ acceptableInVariable c = isAlpha c || isDigit c+ escapeFirstNonAlpha cs | Text.null cs = cs+ escapeFirstNonAlpha cs@(Text.head -> c) | isAlpha c = cs+ escapeFirstNonAlpha cs = "_" `Text.append` cs++-- | Computes all type labels referenced by a given type.+allLabels :: Type -> [Text]+allLabels = flip go []+ where+ go (TLabel l) ls = l:ls+ go (TArray t) ls = go t ls+ go (TUnion u) ls = Set.foldr go ls u+ go (TObj o) ls = Map.foldr go ls $ unDict o+ go _other ls = ls
+ src/JsonToType/Extract.hs view
@@ -0,0 +1,169 @@+-- | Extraction and unification of AutoType's @Type@ from Aeson @Value@.+module JsonToType.Extract(valueSize, valueTypeSize,+ valueDepth, Dict(..),+ Type(..), emptyType,+ extractType, unifyTypes,+ typeCheck) where++import Control.Arrow ((&&&))+import Control.Exception (assert)+import Data.Aeson.Key (toText)+import Data.Aeson.KeyMap (toHashMap)+import JsonToType.Type+import qualified Data.Graph as Graph+import qualified Data.HashMap.Strict as Map+import Data.HashMap.Strict (HashMap, mapKeys)+import qualified Data.Set as Set+import qualified Data.Vector as V+import Data.Aeson+import Data.Text (Text)+import Data.Set (Set )+import Data.List (foldl1')+import Data.Scientific (isInteger)++--import Debug.Trace++-- Convert from Aeson's @KeyMap v@ type to Autotype's @HashMap Text v@ type.+toHashMapTxt = mapKeys toText . toHashMap++-- | Compute total number of nodes (and leaves) within the value tree.+-- Each simple JavaScript type (including String) is counted as of size 1,+-- whereas both Array or object types are counted as 1+sum of the sizes+-- of their member values.+valueSize :: Value -> Int+valueSize Null = 1+valueSize (Bool _) = 1+valueSize (Number _) = 1+valueSize (String _) = 1+valueSize (Array a) = V.foldl' (+) 1 $ V.map valueSize a+valueSize (Object o) = (1+) . sum . map valueSize . Map.elems $ toHashMapTxt o++-- | Compute total size of the type of the @Value@.+-- For:+-- * simple types it is always 1,+-- * for arrays it is just 1+_maximum_ size of the (single) element type,+-- * for objects it is _sum_ of the sizes of fields (since each field type+-- is assumed to be different.)+valueTypeSize :: Value -> Int+valueTypeSize Null = 1+valueTypeSize (Bool _) = 1+valueTypeSize (Number _) = 1+valueTypeSize (String _) = 1+valueTypeSize (Array a) = (1+) . V.foldl' max 0 $ V.map valueTypeSize a+valueTypeSize (Object o) = (1+) . sum . map valueTypeSize . Map.elems $ toHashMapTxt o++-- | Compute total depth of the value.+-- For:+-- * simple types it is 1+-- * for either Array or Object, it is 1 + maximum of depths of their members+valueDepth :: Value -> Int+valueDepth Null = 1+valueDepth (Bool _) = 1+valueDepth (Number _) = 1+valueDepth (String _) = 1+valueDepth (Array a) = (1+) . V.foldl' max 0 $ V.map valueDepth a+valueDepth (Object o) = (1+) . maximum . (0:) . map valueDepth . Map.elems $ toHashMapTxt o++-- | Check if a number is integral, or floating point+-- | Extract @Type@ from the JSON @Value@.+-- Unifying types of array elements, if necessary.+extractType :: Value -> Type+extractType (Object o) = TObj $ Dict $ Map.map extractType $ toHashMapTxt o+extractType Null = TNull+extractType (Bool _) = TBool+extractType (Number n) | isInteger n = TInt+extractType (Number _) = TDouble+extractType (String _) = TString+extractType (Array a) | V.null a = TArray emptyType+extractType (Array a) = TArray $ V.foldl1' unifyTypes $ traceShow $ V.map extractType a+ where+ --traceShow a = trace (show a) a+ traceShow = id++-- | Type check the value with the derived type.+typeCheck :: Value -> Type -> Bool+typeCheck Null TNull = True+typeCheck v (TUnion u) = typeCheck v `any` Set.toList u+typeCheck (Bool _) TBool = True+typeCheck (String _) TString = True+typeCheck (Number n) TInt = isInteger n+typeCheck (Number _) TDouble = True+typeCheck (Array elts) (TArray eltType) = (`typeCheck` eltType) `all` V.toList elts+typeCheck (Object d) (TObj e ) = typeCheckKey `all` keysOfBoth+ where+ typeCheckKey k = getValue k (toHashMapTxt d) `typeCheck` get k e+ getValue :: Text -> HashMap Text Value -> Value+ getValue = Map.lookupDefault Null+ keysOfBoth :: [Text]+ keysOfBoth = Set.toList $ Set.fromList (Map.keys $ toHashMapTxt d) `Set.union` keys e+typeCheck _ (TLabel _ ) = error "Cannot typecheck labels without environment!"+typeCheck {-a-} _ _ {-b-} = {-trace msg $-} False+ where+ -- msg = "Mismatch: " ++ show a ++ " :: " ++ show b++allKeys :: Dict -> Dict -> [Text]+d `allKeys` e = Set.toList (keys d `Set.union` keys e)++-- | Standard unification procedure on @Type@s,+-- with inclusion of @Type@ unions.+unifyTypes :: Type -> Type -> Type+unifyTypes TBool TBool = TBool+unifyTypes TInt TInt = TInt+unifyTypes TDouble TInt = TDouble+unifyTypes TInt TDouble = TDouble+unifyTypes TDouble TDouble = TDouble+unifyTypes TString TString = TString+unifyTypes TNull TNull = TNull+unifyTypes (TObj d) (TObj e) = TObj newDict+ where+ newDict :: Dict+ newDict = Dict $ Map.fromList [(k, get k d `unifyTypes`+ get k e) | k <- allKeys d e ]+unifyTypes (TArray u) (TArray v) = TArray $ u `unifyTypes` v+unifyTypes t s = typeAsSet t `unifyUnion` typeAsSet s++-- | Unify sets of types (sets are union types of alternatives).+unifyUnion :: Set Type -> Set Type -> Type+unifyUnion u v = assertions $+ union $ uSimple `Set.union`+ vSimple `Set.union`+ unifiedObjects `Set.union`+ Set.singleton unifiedArray+ where+ -- We partition our types for easier unification into simple and compound+ (uSimple, uCompound) = Set.partition isSimple u+ (vSimple, vCompound) = Set.partition isSimple v+ assertions = assert (Set.null $ Set.filter (not . isArray) uArr) .+ assert (Set.null $ Set.filter (not . isArray) vArr)+ -- then we partition compound typs into objects and arrays.+ -- Note that there should be no TUnion here, since we are inside a TUnion already.+ -- (That is reduced by @union@ smart costructor as superfluous.)+ (uObj, uArr) = Set.partition isObject uCompound+ (vObj, vArr) = Set.partition isObject vCompound+ unifiedObjects = Set.fromList $ if null objects+ then []+ else [foldl1' unifyTypes objects]+ objects = Set.toList $ uObj `Set.union` vObj+ arrayElts :: [Type]+ arrayElts = map (\(TArray ty) -> ty) $+ Set.toList $+ uArr `Set.union` vArr+ unifiedArray = TArray $ if null arrayElts+ then emptyType+ else foldl1' unifyTypes arrayElts++-- | Smart constructor for union types.+union :: Set Type -> Type+union = simplifyUnion . TUnion++-- | Simplify TUnion's so there is no TUnion directly inside TUnion.+-- If there is only one element of the set, then return this single+-- element as a type.+simplifyUnion :: Type -> Type+simplifyUnion (TUnion s) | Set.size s == 1 = head $ Set.toList s+simplifyUnion (TUnion s) = TUnion $ Set.unions $ map elements $ Set.toList s+ where+ elements (TUnion elems) = elems+ elements sing = Set.singleton sing+simplifyUnion unexpected = error ("simplifyUnion: unexpected argument " ++ show unexpected)+
+ src/JsonToType/Format.hs view
@@ -0,0 +1,17 @@+-- | Formatting tools for code generation.+module JsonToType.Format(capitalize, uncapitalize) where++import Data.Text(Text)+import qualified Data.Text as Text++-- | Make the first letter of a Text upper case.+capitalize :: Text -> Text+capitalize word = Text.toUpper first `Text.append` rest+ where+ (first, rest) = Text.splitAt 1 word++-- | Make the first letter of a Text lower case.+uncapitalize :: Text -> Text+uncapitalize word = Text.toLower first `Text.append` rest+ where+ (first, rest) = Text.splitAt 1 word
+ src/JsonToType/Nested.hs view
@@ -0,0 +1,104 @@+{-# language DeriveGeneric #-}+{-# language OverloadedStrings #-}+{-# language TypeSynonymInstances #-}+{-# language FlexibleInstances #-}+-- | Simple interface for using AutoType inference+-- in other code generators.+--+-- Simply takes a list of Aeson values,+-- and returns a type description.+--+-- For this type description,+-- we can use function to generate an entire new module.+--+-- Note that while we can put more code in the module,+-- it is recommended to avoid multiple automatically+-- generated types in order to avoid name conflicts.+--+-- NOTE: this interface is yet unstable+module JsonToType.Nested(+ defaultImportedModules+ , generateModuleImports+ , inferType+ , CodeFrag(..)+ , TypeName+ , TypeFrag+ , ModuleImport+ , PackageName+ ) where++import Data.Aeson+import JsonToType.CodeGen.Haskell(generateModuleImports, requiredPackages, importedModules, ModuleImport)+import JsonToType.CodeGen.HaskellFormat(displaySplitTypes)+import JsonToType.Extract(extractType, unifyTypes)+import JsonToType.Split(splitTypeByLabel)+import Data.Default+import Data.Typeable+import Data.Text(Text)+import GHC.Generics++-- FIXME: general type to compose generated types+-- move to JSON Autotype as library interface?+-- * API Response Structures+type Code = Text+type TypeName = Text+type PackageName = Text++-- | Generated code reference and its requirements+-- Content to embed in an autogenerated module:+--+-- * name of the reference+-- * declarations to describe it+-- * module imports necessary for declarations+-- to work+data CodeFrag a = CodeFrag+ {+ -- | Code fragment to be inserted in generated module+ codeFragCode :: Code+ -- | Toplevel type name to refer to+ , codeFragName :: a+ -- | List of clauses to add to imports list+ , codeFragImports :: [ModuleImport]+ -- | List of packages to add to generated package dependencies+ , codeFragPackages :: [PackageName]+ } deriving+ ( Eq+ , Show+ , Generic+ , Typeable+ )++type TypeFrag = CodeFrag TypeName++instance Default TypeFrag where+ -- Minimal placeholder to use in case we cannot infer proper type+ def = CodeFrag {+ codeFragCode = ""+ , codeFragName = "Data.Aeson.Value"+ , codeFragImports = ["qualified Data.Aeson"]+ , codeFragPackages = ["aeson"]+ }++-- | List of modules imported for Autotyped declarations+defaultImportedModules = importedModules++-- | Given intended type name, and a list of+-- text fields with JSON, return+-- either an error, or an `EndpointResponse`+-- that allows to declare and use this type+-- in generated module.+inferType :: Text -> [Value] -> TypeFrag+inferType typeName [] = def+inferType typeName jsonValues =+ CodeFrag {+ codeFragImports = defaultImportedModules+ , codeFragCode = displaySplitTypes splitTypeDescriptors+ , codeFragName = typeName+ , codeFragPackages = requiredPackages+ }+ where+ valueTypes = map extractType jsonValues+ -- FIXME: should be <> in Typelike?+ unifiedType = foldr1 unifyTypes valueTypes+ splitTypeDescriptors = splitTypeByLabel typeName unifiedType+
+ src/JsonToType/Plugin/Subtype.hs view
@@ -0,0 +1,27 @@+-- | API to which @SubtypePlugin@s should conform.+module JsonToType.Plugin.Subtype (+ SubtypePlugin (..)+ , SubtypeDesc (..)+ ) where++import JsonToType.Type+import Data.Aeson+import Data.Dynamic++-- | Hmm... this should be existential type?+type TypeDesc = String++-- | Operations that @SubtypPlugin@ must implement.+data SubtypePlugin = SubtypePlugin {+ detect :: [Value] -> Maybe SubtypeDesc -- | Check whether a set of values belongs to this type family+ , unify :: SubtypeDesc -> SubtypeDesc -> Either SubtypeDesc Type+ }++-- | Description of a subtype+data SubtypeDesc = SubtypeDesc {+ subtypeName :: String -- | Code that is different for different type families+ , subtypeClass :: Type+ , reference :: String -> String -- | Show type reference with a given name prefix+ , declare :: String -- | Show type declaration+ , typeInfo :: Dynamic+ }
+ src/JsonToType/Pretty.hs view
@@ -0,0 +1,62 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-- | Instances of @Text.PrettyPrint.Out@ class to visualize+-- Aeson @Value@ data structure.+module JsonToType.Pretty() where++import qualified Data.HashMap.Strict as Hash+import Data.HashMap.Strict(HashMap)+import Data.Aeson+import qualified Data.Aeson.KeyMap as KM+import JsonToType.Type (Dict(..), Type)+import qualified Data.Text as Text+import Data.Text (Text)+import Data.Set as Set(Set, toList)+import Data.Scientific+import Data.Vector as V(Vector, toList)+import Text.PrettyPrint.GenericPretty+import Text.PrettyPrint++formatPair :: (Out a, Out b) => (a, b) -> Doc+formatPair (a, b) = nest 1 (doc a <+> ": " <+> doc b <+> ",")++-- * This is to make prettyprinting possible for Aeson @Value@ type.+instance Out Scientific where+ doc = doc . show+ docPrec _ = doc++instance (Out a) => Out (Vector a) where+ doc (V.toList -> v) = "<" <+> doc v <+> ">"+ docPrec _ = doc++instance Out Value++instance (Out a) => Out (Set a) where+ doc (Set.toList -> s) = "{" <+> doc s <+> "}"+ docPrec _ = doc++instance (Out a, Out b) => Out (HashMap a b) where+ doc (Hash.toList -> dict) = foldl ($$) "{" (map formatPair dict) $$ nest 1 "}"+ docPrec _ = doc++instance (Out v) => Out (KM.KeyMap v) where+ doc (KM.toList -> dict) = foldl ($$) "{" (map formatKeyValPair dict) $$ nest 1 "}"+ where+ formatKeyValPair (k, v) = nest 1 (doc (show k) <+> ": " <+> doc v <+> ",")+ docPrec _ = doc++instance Out Dict where+ doc = doc . unDict++instance Out Type where+ doc = doc . show++instance Out Text where+ doc = text . Text.unpack -- TODO: check if there may be direct way?+ docPrec _ = doc
+ src/JsonToType/Split.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGuaGE ScopedTypeVariables #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGuaGE DeriveGeneric #-}+{-# LANGuaGE FlexibleContexts #-}+-- | Formatting type declarations and class instances for inferred types. +module JsonToType.Split(+ splitTypeByLabel, unificationCandidates,+ unifyCandidates, toposort+) where++import Control.Arrow ((&&&))+import Control.Applicative ((<$>), (<*>))+import Control.Lens.TH+import Control.Lens+import Control.Monad (forM)+import Control.Exception(assert)+import qualified Data.HashMap.Strict as Map+import Data.Monoid+import qualified Data.Set as Set+import qualified Data.Text as Text+import Data.Text (Text)+import Data.Set (Set )+import Data.List (foldl1')+import Data.Char (isAlpha, isDigit)+import Control.Monad.State.Class+import Control.Monad.State.Strict(State, runState)+import qualified Data.Graph as Graph+import GHC.Generics (Generic)++import JsonToType.Type+import JsonToType.Extract+import JsonToType.Util ()++--import Debug.Trace -- DEBUG+trace _ x = x++fst3 :: (t, t1, t2) -> t+fst3 (a, _b, _c) = a++type Map k v = Map.HashMap k v ++-- | Explanatory type alias for making declarations+-- First element of the triple is original JSON identifier,+-- second element of the triple is the mapped identifier name in Haskell.+-- third element of the triple shows the type in a formatted way+type MappedKey = (Text, Text, Text, Bool)++-- * Splitting object types by label for unification.+type TypeTree = Map Text [Type]++type TypeTreeM a = State TypeTree a++addType :: Text -> Type -> TypeTreeM ()+addType label typ = modify $ Map.insertWith (++) label [typ]++splitTypeByLabel' :: Text -> Type -> TypeTreeM Type+splitTypeByLabel' _ TString = return TString+splitTypeByLabel' _ TInt = return TInt+splitTypeByLabel' _ TDouble = return TDouble+splitTypeByLabel' _ TBool = return TBool+splitTypeByLabel' _ TNull = return TNull+splitTypeByLabel' _ (TLabel r) = error $ "Splitting into labelled types after label "+ <> show r <> " was already given!"+splitTypeByLabel' l (TUnion u) = do m <- mapM (splitTypeByLabel' l) $ Set.toList u+ return $! TUnion $! Set.fromList m+splitTypeByLabel' l (TArray a) = do m <- splitTypeByLabel' (l `Text.append` "Elt") a+ return $! TArray m+splitTypeByLabel' l (TObj o) = do kvs <- forM (Map.toList $ unDict o) $ \(k, v) -> do+ component <- splitTypeByLabel' k v+ return (k, component)+ addType l (TObj $ Dict $ Map.fromList kvs)+ return $! TLabel l++-- | Splits initial type with a given label, into a mapping of object type names and object type structures.+splitTypeByLabel :: Text -> Type -> Map Text Type+splitTypeByLabel topLabel t = Map.map (foldl1' unifyTypes) finalState+ where+ finalize (TLabel l) = assert (l == topLabel) $ return ()+ finalize topLevel = addType topLabel topLevel+ initialState = Map.empty+ (_, finalState) = runState (splitTypeByLabel' topLabel t >>= finalize) initialState++-- | Topological sorting of splitted types so that it is accepted declaration order.+toposort :: Map Text Type -> [(Text, Type)] +toposort splitted = map ((id &&& (splitted Map.!)) . fst3 . graphKey) $ Graph.topSort graph+ where+ (graph, graphKey) = Graph.graphFromEdges' $ map makeEntry $ Map.toList splitted+ makeEntry (k, v) = (k, k, allLabels v)++-- | Computes all type labels referenced by a given type.+allLabels :: Type -> [Text]+allLabels = flip go []+ where+ go (TLabel l) ls = l:ls+ go (TArray t) ls = go t ls+ go (TUnion u) ls = Set.foldr go ls u+ go (TObj o) ls = Map.foldr go ls $ unDict o+ go _other ls = ls++-- * Finding candidates for extra unifications+-- | For a given splitted types, it returns candidates for extra+-- unifications.+unificationCandidates :: Map.HashMap t Type -> [[t]]+unificationCandidates = Map.elems .+ Map.filter candidates .+ Map.fromListWith (++) .+ concatMap entry .+ Map.toList+ where+ -- | Candidate entry has to have at least two candidates, so that unification makes sense+ candidates [ ] = False+ candidates [_] = False+ candidates _ = True+ -- | Make a candidate entry for each object type, which points from its keys to its label.+ entry (k, TObj o) = [(Set.fromList $ Map.keys $ unDict o, [k])]+ entry _ = [] -- ignore array elements and toplevel type if it is Array++-- | Unifies candidates on a give input list.+unifyCandidates :: [[Text]] -> Map Text Type -> Map Text Type+unifyCandidates candidates splitted = Map.map (remapLabels labelMapping) $ replacements splitted+ where+ unifiedType :: [Text] -> Type+ unifiedType cset = foldr1 unifyTypes $ + map (splitted Map.!) cset+ replace :: [Text] -> Map Text Type -> Map Text Type+ replace cset@(c:_) s = Map.insert c (unifiedType cset) (foldr Map.delete s cset)+ replace [] _ = error "Empty candidate set in replace"+ replacements :: Map Text Type -> Map Text Type+ replacements s = foldr replace s candidates+ labelMapping :: Map Text Text+ labelMapping = Map.fromList $ concatMap mapEntry candidates+ mapEntry cset@(c:_) = [(x, c) | x <- cset]+ mapEntry [] = error "Empty candidate set in mapEntry"++-- | Remaps type labels according to a `Map`.+remapLabels :: Map Text Text -> Type -> Type+remapLabels ls (TObj o) = TObj $ Dict $ Map.map (remapLabels ls) $ unDict o+remapLabels ls (TArray t) = TArray $ remapLabels ls t+remapLabels ls (TUnion u) = TUnion $ Set.map (remapLabels ls) u+remapLabels ls (TLabel l) = TLabel $ Map.lookupDefault l l ls+remapLabels _ other = other+
+ src/JsonToType/Test.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+-- | Arbitrary instances for the JSON @Value@.+module JsonToType.Test (+ arbitraryTopValue+ ) where++import Control.Applicative ((<$>), (<*>))+import Data.Aeson+import Data.Aeson.Key (fromText)+import qualified Data.Aeson.KeyMap as KM+import Data.Function (on)+import Data.Hashable (Hashable)+import Data.Generics.Uniplate.Data+import Data.List+import Data.Scientific+import qualified Data.Text as Text+import Data.Text (Text)+import qualified Data.Vector as V+import qualified Data.HashMap.Strict as Map+import GHC.Generics++import Test.QuickCheck.Arbitrary+import Test.QuickCheck+import Test.SmallCheck.Series++instance Arbitrary Text where+ arbitrary = Text.pack <$> sized (`vectorOf` alphabetic)+ where+ alphabetic = choose ('a', 'z')++instance (Arbitrary a) => Arbitrary (V.Vector a) where+ arbitrary = V.fromList <$> arbitrary++instance (Arbitrary v) => Arbitrary (Map.HashMap Text v) where+ arbitrary = makeMap <$> arbitrary++-- | Helper function for generating Arbitrary and Series instances+-- for @Data.HashMap.Strict.Map@ from lists of pairs.+makeMap :: (Ord a, Hashable a) =>[(a, b)] -> Map.HashMap a b+makeMap = Map.fromList+ . nubBy ((==) `on` fst)+ . sortBy (compare `on` fst)++instance Arbitrary Scientific where+ arbitrary = scientific <$> arbitrary <*> arbitrary++-- | Transformation to shrink top level of @Value@, doesn't consider nested sub-@Value@s.+simpleShrink :: Value -> [Value]+simpleShrink (Array a) = map (Array . V.fromList) $ shrink $ V.toList a+simpleShrink (Object o) = map (Object . KM.fromList) $ shrink $ KM.toList o+simpleShrink _ = [] -- Nothing for simple objects++-- | Generator for compound @Value@s+complexGens :: Int -> [Gen Value]+complexGens i = [Object . KM.fromList <$> resize i arbitrary,+ Array <$> resize i arbitrary]++-- | Arbitrary JSON (must start with Object or Array.)+arbitraryTopValue :: Gen Value+arbitraryTopValue = sized $ oneof . complexGens++-- * SmallCheck Serial instances+instance (Monad m) => Serial m Text where+ series = newtypeCons Text.pack++instance (Monad m) => Serial m Scientific where+ series = cons2 scientific++instance Serial m a => Serial m (V.Vector a) where+ series = newtypeCons V.fromList++instance (Monad m) => Serial m Key where+ series = fmap fromText series++instance Serial m v => Serial m (KM.KeyMap v) where+ series = newtypeCons $ KM.fromList+ . nubBy ((==) `on` fst)+ . sortBy (compare `on` fst)++-- This one is generated with Generics and instances above+instance Monad m => Serial m Value
+ src/JsonToType/Type.hs view
@@ -0,0 +1,149 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+-- | Union types describing JSON objects, and operations for querying these types.+module JsonToType.Type(typeSize,+ Dict(..), keys, get, withDict,+ Type(..), emptyType,+ isSimple, isArray, isObject, typeAsSet,+ hasNonTopTObj,+ hasTObj,+ isNullable,+ emptySetLikes+ ) where++import Prelude hiding (any)+import qualified Data.HashMap.Strict as Hash+import qualified Data.Set as Set+import Data.Data (Data(..))+import Data.Typeable (Typeable)+import Data.Foldable (any)+import Data.Text (Text)+import Data.Set (Set )+import Data.HashMap.Strict(HashMap)+import Data.List (sort)+import Data.Ord (comparing)+import Data.Generics.Uniplate+import GHC.Generics (Generic)++-- * Dictionary types for overloading of usual class instances.+-- | Type alias for HashMap+type Map = HashMap++-- | Dictionary of types indexed by names.+newtype Dict = Dict { unDict :: Map Text Type }+ deriving (Eq, Data, Typeable, Generic)++instance Show Dict where+ show = show . sort . Hash.toList . unDict++instance Ord Dict where+ compare = comparing $ sort . Hash.toList . unDict++-- | Make operation on a map to an operation on a Dict.+withDict :: (Map Text Type -> Map Text Type) -> Dict -> Dict+f `withDict` (Dict m) = Dict $ f m++-- | Take all keys from dictionary.+keys :: Dict -> Set Text+keys = Set.fromList . Hash.keys . unDict++-- | Union types for JSON values.+data Type = TNull | TBool | TString |+ TInt | TDouble |+ TUnion (Set Type) |+ TLabel Text |+ TObj Dict |+ TArray Type+ deriving (Show,Eq, Ord, Data, Typeable, Generic)++-- These are missing Uniplate instances...+{-+instance Biplate (Set a) a where+ biplate s = (Set.toList s, Set.fromList)++instance Biplate (HashMap k v) v where+ biplate m = (Hash.elems m, Hash.fromList . zip (Hash.keys m))+ -}++instance Uniplate Type where+ uniplate (TUnion s) = (Set.toList s, TUnion . Set.fromList )+ uniplate (TObj d) = (Hash.elems m, TObj . Dict . Hash.fromList . zip (Hash.keys m))+ where+ m = unDict d+ uniplate (TArray t) = ([t], TArray . head )+ uniplate s = ([], const s )++-- | Empty type+emptyType :: Type+emptyType = TUnion Set.empty++-- | Lookup the Type within the dictionary.+get :: Text -> Dict -> Type+get key = Hash.lookupDefault TNull key . unDict++-- $derive makeUniplateDirect ''Type++-- | Size of the `Type` term.+typeSize :: Type -> Int+typeSize TNull = 1+typeSize TBool = 1+typeSize TString = 1+typeSize TInt = 1+typeSize TDouble = 1+typeSize (TObj o) = (1+) . sum . map typeSize . Hash.elems . unDict $ o+typeSize (TArray a) = 1 + typeSize a+typeSize (TUnion u) = (1+) . sum . (0:) . map typeSize . Set.toList $ u+typeSize (TLabel _) = error "Don't know how to compute typeSize of TLabel."++-- | Check if this is nullable (Maybe) type, or not.+-- Nullable type will always accept TNull or missing key that contains it.+isNullable :: Type -> Bool+isNullable TNull = True+isNullable (TUnion u) = isNullable `any` u+isNullable _ = False++-- | "Null-ish" types+emptySetLikes :: Set Type+emptySetLikes = Set.fromList [TNull, TArray $ TUnion $ Set.fromList []]+-- Q: and TObj $ Map.fromList []?+{-# INLINE emptySetLikes #-}++-- | Convert any type into union type (even if just singleton).+typeAsSet :: Type -> Set Type+typeAsSet (TUnion s) = s+typeAsSet t = Set.singleton t++-- | Is the top-level constructor a TObj?+isObject :: Type -> Bool+isObject (TObj _) = True+isObject _ = False++-- | Is it a simple (non-compound) Type?+isSimple :: Type -> Bool+isSimple x = not (isObject x) && not (isArray x) && not (isUnion x)++-- | Is the top-level constructor a TUnion?+isUnion :: Type -> Bool+isUnion (TUnion _) = True+isUnion _ = False++-- | Is the top-level constructor a TArray?+-- | Check if the given type has non-top TObj.+isArray :: Type -> Bool+isArray (TArray _) = True+isArray _ = False++-- | Check if the given type has non-top TObj.+hasNonTopTObj :: Type -> Bool+hasNonTopTObj (TObj o) = any hasTObj $ Hash.elems $ unDict o+hasNonTopTObj _ = False++-- | Check if the given type has TObj on top or within array..+hasTObj :: Type -> Bool+hasTObj (TObj _) = True+hasTObj (TArray a) = hasTObj a+hasTObj (TUnion u) = any hasTObj u+hasTObj _ = False
+ src/JsonToType/Util.hs view
@@ -0,0 +1,29 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}++-- | Utility functions that may be ultimately moved to some library.+module JsonToType.Util( withFileOrHandle+ , withFileOrDefaultHandle+ ) where++import Data.Hashable+import qualified Data.Set as Set+import System.IO (withFile, IOMode(..), Handle, stdin, stdout)++-- | Generic function for opening file if the filename is not empty nor "-",+-- or using given handle otherwise (probably stdout, stderr, or stdin).+-- TODO: Should it become utility function?+withFileOrHandle :: FilePath -> IOMode -> Handle -> (Handle -> IO r) -> IO r+withFileOrHandle "" _ handle action = action handle+withFileOrHandle "-" _ handle action = action handle+withFileOrHandle name ioMode _ action = withFile name ioMode action++-- | Generic function for choosing either file with given name or stdin/stdout as input/output.+-- It accepts the function that takes the corresponding handle.+-- Stdin/stdout is selected by "-".+withFileOrDefaultHandle :: FilePath -> IOMode -> (Handle -> IO r) -> IO r+withFileOrDefaultHandle "-" ReadMode action = action stdin+withFileOrDefaultHandle "-" WriteMode action = action stdout+withFileOrDefaultHandle "-" otherMode _ = error $ "Incompatible io mode ("+ ++ show otherMode+ ++ ") for `-` in withFileOrDefaultHandle."+withFileOrDefaultHandle filename ioMode action = withFile filename ioMode action
+ test/TestExamples.hs view
@@ -0,0 +1,98 @@+-- Test over all files in examples/ directory+module Main(main) where++import Control.Monad(forM, forM_, unless, join)+import Data.Char(toUpper)+import Data.Functor ((<$>))+import Data.List(isPrefixOf, isSuffixOf, isInfixOf)+import Data.Maybe(isJust)+import System.Directory(doesDirectoryExist, getDirectoryContents, createDirectoryIfMissing)+import System.FilePath((</>), (<.>), takeBaseName, replaceFileName)+import System.Exit(ExitCode(..))+import System.Environment as Env+import System.Process (rawSystem)+import JsonToType.CodeGen(runModule, Lang(Haskell))+import Data.Aeson ( Result, Object, FromJSON, Value(Null,Number), (.:?) )+import qualified Data.Aeson.KeyMap as KM+import Data.Aeson.Key (fromString, fromText)+import Data.Aeson.Types ( Parser, parse )+import Data.Text ( Text, pack )+++-- | <http://book.realworldhaskell.org/read/io-case-study-a-library-for-searching-the-filesystem.html>+getRecursiveContents :: FilePath -> IO [FilePath]+getRecursiveContents topdir = do+ ex<-doesDirectoryExist topdir+ if ex+ then do+ names <- getDirectoryContents topdir+ let properNames = filter (not . isPrefixOf ".") names+ paths <- forM properNames $ \name -> do+ let path = topdir </> name+ isDirectory <- doesDirectoryExist path+ if isDirectory+ then getRecursiveContents path+ else return [path]+ return (concat paths)+ else return []++capitalize :: String -> String+capitalize [] = []+capitalize (s:ss) = toUpper s:ss++main :: IO ()+main = do+ putStrLn "****************************************"+ verifyAesonOperators+ filenames <- filter (isSuffixOf ".json")+ <$> getRecursiveContents "examples"+ createDirectoryIfMissing True "output"+ forM_ filenames $ \filename -> do+ let outputFilename = ("output" </> capitalize (takeBaseName filename <.> "hs"))+ genResult <- runAutotype filename ["--outputFilename", outputFilename]+ unless (genResult == ExitSuccess) $+ fail (unwords ["test case", show filename, "failed with", show genResult])+ parserResult <- runModule Haskell outputFilename [filename]+ -- ^ runModule HaskellStrict -- for compiling with -Wall -Werror+ unless (parserResult == ExitSuccess) $+ fail (unwords ["generated parser", show outputFilename, "failed with", show parserResult])++runAutotype :: String+ -> [String]+ -> IO ExitCode+runAutotype source arguments = do+ stackEnvUpDir <- doesDirectoryExist "../.stack-work"+ stackEnvCurDir <- doesDirectoryExist ".stack-work"+ cabalEnv <- doesDirectoryExist "dist/build/autogen"+ maybeStack <- Env.lookupEnv "STACK_EXEC"+ maybeSandbox <- Env.lookupEnv "CABAL_SANDBOX_PACKAGE_PATH"+ maybePkgPath <- Env.lookupEnv "GHC_PACKAGE_PATH"+ let isStack = maybe False ("stack" `isInfixOf`) maybePkgPath+ || isJust maybeStack+ || stackEnvUpDir+ || stackEnvCurDir+ isCabal = maybe False ("cabal" `isInfixOf`) maybePkgPath+ || cabalEnv+ || isJust maybeSandbox+ (exec, args) | Just stackExec <- maybeStack = (stackExec, ["run", source, "--"])+ | isStack = ("stack", ["run", source, "--"])+ | isCabal = ("cabal", ["run", source, "--"])+ | otherwise = error "This test must be run either in either Stack or Cabal environment."+ putStrLn $ concat ["Running json-to-type with executable ", show exec, " and arguments ", show args]+ rawSystem exec $ args ++ arguments++verifyAesonOperators :: IO ()+verifyAesonOperators = do+ parseTest (KM.singleton (fromString "foo") (Number 1))+ parseTest (KM.singleton (fromString "foo") Null )+ parseTest (KM.singleton (fromString "bar") Null )+ parseTest KM.empty++(.:??) :: FromJSON a => Object -> Text -> Parser (Maybe a)+o .:?? val = fmap join (o .:? fromText val)++parseTest :: Object -> IO ()+parseTest o = unless (r1 == r2) (fail (show r1 ++ " /= " ++ show r2))+ where r1, r2 :: Result (Maybe Int)+ r1 = parse (.:? (fromString "foo")) o+ r2 = parse (.:?? (pack "foo")) o
+ test/colors.json view
@@ -0,0 +1,31 @@+{+ "colorsArray":[{+ "colorName":"red",+ "hexValue":"#f00"+ },+ {+ "colorName":"green",+ "hexValue":"#0f0"+ },+ {+ "colorName":"blue",+ "hexValue":"#00f"+ },+ {+ "colorName":"cyan",+ "hexValue":"#0ff"+ },+ {+ "colorName":"magenta",+ "hexValue":"#f0f"+ },+ {+ "colorName":"yellow",+ "hexValue":"#ff0"+ },+ {+ "colorName":"black",+ "hexValue":"#000"+ }+ ]+}
+ test/customerform.json view
@@ -0,0 +1,23 @@+{+ "firstName": "John",+ "lastName": "Smith",+ "age": 25,+ "address":+ {+ "streetAddress": "21 2nd Street",+ "city": "New York",+ "state": "NY",+ "postalCode": "10021"+ },+ "phoneNumber":+ [+ {+ "type": "home",+ "number": "212 555-1234"+ },+ {+ "type": "fax",+ "number": "646 555-4567"+ }+ ]+ }
+ test/events.json view
@@ -0,0 +1,1 @@+{"results":[{"utc_offset":-14400000,"venue":{"country":"us","city":"Pittsburgh","address_1":"5972 Baum Blvd","name":"The Cloakroom","lon":-79.92588,"id":23477578,"state":"PA","lat":40.460598,"repinned":false},"headcount":0,"visibility":"public","waitlist_count":0,"created":1421598902000,"fee":{"amount":5,"accepts":"cash","description":"per person","currency":"USD","label":"Price","required":"1"},"maybe_rsvp_count":0,"description":"<p><img src=\"http:\/\/photos2.meetupstatic.com\/photos\/event\/a\/1\/6\/2\/600_433361314.jpeg\" \/><\/p> <p>Take your code to the next level by learning about the Model View Controller design pattern. In this lecture, Carter Fort will present the principals of object oriented programming and then dive into making your code more organized and optimized with the MVC pattern.<\/p> <p>You'll learn<\/p> <p>- Object oriented programming<\/p> <p>- Classes<\/p> <p>- Inheritance<\/p> <p>- Object relationships<\/p> <p>- Models<\/p> <p>- Views<\/p> <p>- Controllers<\/p> <p>- Why spaghetti code is bad<\/p> <p><br\/><img src=\"http:\/\/photos1.meetupstatic.com\/photos\/event\/b\/f\/c\/3\/600_432109091.jpeg\" \/><\/p> <p><i><b>$5?!<\/b><\/i><\/p> <p>That's right. To encourage attendees to be loyal to their RSVP, we will be charging a nominal fee. <\/p> <p>If the fee is a problem and will prevent you from attending, please contact Justin privately using the Meetup messaging feature to have the fee waived.<\/p> <p>You can pay through Meetup.com or the Code & Supply website at <a href=\"http:\/\/www.codeandsupply.co\/workshops\/starterseries-reservation-fee\"><a href=\"http:\/\/www.codeandsupply.co\/workshops\/starterseries-reservation-fee\" class=\"linkified\">http:\/\/www.codeandsupply.co\/workshops\/starterseries-reservation-fee<\/a><\/a><\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219914056\/","yes_rsvp_count":26,"name":"#StarterSeries: Software Design Patterns: MVC and Object Oriented Programming","id":"219914056","time":1427562000000,"updated":1426443475000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"venue":{"country":"us","city":"Pittsburgh","address_1":"544 Miltenberger St.","name":"StartUpTown","lon":-79.9814,"id":23668599,"state":"PA","lat":40.437489,"repinned":false},"headcount":0,"visibility":"public","waitlist_count":0,"created":1419430410000,"maybe_rsvp_count":0,"description":"<p>Let's get together and build some awesome stuff with code. We'll get some food and hold an impromptu co-working space where you can work on a project, pair, learn, and mingle.<\/p> <p>You can hack on anything! Any language, framework, public\/open-source, personal, etc. You don’t have to have an idea to hack on! You’re more than welcome to come just to pair with someone. <\/p> <p>Build Night is built for all skill levels. Come with what you know. If you have something you're interested in learning, Build Night is a good place to do so because there will be experts in the room to help with just about anything. <\/p> <p><img src=\"http:\/\/photos3.meetupstatic.com\/photos\/event\/9\/7\/b\/0\/600_432098832.jpeg\" \/><\/p> <p><b>Project Inspirations<\/b><\/p> <p>As part of our Build Nights, we're going to start maintaining a list of project inspirations. Creative resources or projects that may spark an idea to build something awesome. If you'd like to get something included in this list, leave a comment or email Justin.<\/p> <p><a href=\"http:\/\/image-net.org\/index\"><a href=\"http:\/\/image-net.org\/index\" class=\"linkified\">http:\/\/image-net.org\/index<\/a><\/a><\/p> <p><a href=\"https:\/\/www.codemontage.com\/projects\"><a href=\"https:\/\/www.codemontage.com\/projects\" class=\"linkified\">https:\/\/www.codemontage.com\/projects<\/a><\/a><\/p> <p><a href=\"https:\/\/github.com\/colonizers\/colonizers\"><a href=\"https:\/\/github.com\/colonizers\/colonizers\" class=\"linkified\">https:\/\/github.com\/colonizers\/colonizers<\/a><\/a><\/p> <p>\n\n\n<b>Parking info:<\/b> When arriving at StartUpTown, street parking is free after 6:00 and there is a lot on Locust St, across the street from the big warehouse under construction. This log has a small sign in the back that says “PFEX PARKING.” Additionally, the small grassy area behind the building on the north side of Edna St is open (but DO NOT park on the south side of Edna). These lots are marked on this map. <a href=\"http:\/\/i.imgur.com\/QrAvJNZ.jpg?1\"><a href=\"http:\/\/i.imgur.com\/Qr\" class=\"linkified\">http:\/\/i.imgur.com\/Qr<\/a>...<\/a><\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219408379\/","yes_rsvp_count":25,"name":"Build Night","id":"219408379","time":1427752800000,"updated":1426693434000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"venue":{"country":"us","city":"Pittsburgh","address_1":"3710 Forbes Ave.","name":"Revv Oakland","lon":-79.957092,"id":23691216,"state":"PA","lat":40.441185,"repinned":false},"rsvp_limit":25,"headcount":0,"visibility":"public","waitlist_count":4,"created":1426018997000,"maybe_rsvp_count":0,"description":"<p>The first Pittsburgh Django Meetup under the Code & Supply Banner! We're excited to gather the Pittsburgh Django community into one place. <\/p> <p>For this first event, Andrew Somerville will be presenting a talk on <a href=\"http:\/\/django-rest-framework.org\">Django Rest Framework<\/a>. Andrew has recently started using Django Rest Framework, and the presentation will be from a new user's perspective. The following topics will be covered:<\/p> <p>• Integrating into existing site<\/p> <p>• Authentication<\/p> <p>• Django forms integration<\/p> <p>• Potential duplicate work<\/p> <p>• URL Routing<\/p> <p>• Permissions<\/p> <p>• Comparison to Tasty Pie and other frameworks<\/p> <p>• Is REST necessity for your application?<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/221062483\/","yes_rsvp_count":25,"name":"Django PGH: Django Rest Framework","id":"221062483","time":1427842800000,"updated":1426630976000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1424984497000,"maybe_rsvp_count":0,"event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220785196\/","yes_rsvp_count":3,"name":"Monthly summary happy hour","id":"220785196","time":1427929200000,"updated":1424984497000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1417653629000,"maybe_rsvp_count":0,"description":"<p>Planning and prototyping in order to clarify what your software will do.<\/p> <p>Carter Fort to present<\/p> <p><img src=\"http:\/\/photos3.meetupstatic.com\/photos\/event\/9\/7\/b\/0\/600_432098832.jpeg\" \/><\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219053254\/","yes_rsvp_count":8,"name":"Planning & Prototyping Software","id":"219053254","time":1428361200000,"updated":1417654102000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1421355947000,"maybe_rsvp_count":0,"description":"<p>Remy Porter will present an introduction to Erlang, with a focus on concurrency.<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219860617\/","yes_rsvp_count":5,"name":"Intro to Erlang","id":"219860617","time":1428534000000,"updated":1421370784000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"venue":{"zip":"15217","country":"us","city":"Pittsburgh","address_1":"1710 Murray Ave","name":"M*Modal","lon":-79.92305,"id":13020272,"state":"PA","lat":40.437515,"repinned":false},"headcount":0,"visibility":"public","waitlist_count":0,"created":1426269384000,"maybe_rsvp_count":0,"description":"<p>The process of data validation can be messy and annoying, especially in the case of composite data where there could be many sources of errors and a need to collect all the errors found rather than bail out upon finding the first one. In practice, what often happens is that thorough validation ends up not being done because it's too painful to code. Martin Fowler recently wrote an article about the problem and proposed a solution <a href=\"http:\/\/martinfowler.com\/articles\/replaceThrowWithNotification.html\"><a href=\"http:\/\/martinfowler.com\/articles\/replaceThrowWithNotification.html\" class=\"linkified\">http:\/\/martinfowler.com\/articles\/replaceThrowWithNotification.html<\/a><\/a> but it is also painful.<\/p> <p>There is a very clean solution that can be expressed in any language, so we will show the language-independent concepts so that you can use them anywhere.<\/p> <p>However, since the solution is particularly concise to express in a certain class of languages that includes Scala, Rust, Swift, and Haskell, we will present concrete code in Scala, Rust, Swift, and Haskell to illustrate the concepts.<\/p> <p>\n\n\nSpeaker => Franklin Chen<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/221130516\/","yes_rsvp_count":5,"name":"Fuss-free data validation without using exceptions: Scala, Rust, Swift, Haskell","id":"221130516","time":1428616800000,"updated":1426279643000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1424128923000,"maybe_rsvp_count":0,"event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220567396\/","yes_rsvp_count":4,"name":"Val Head on \"Motion Design for the Web\"","id":"220567396","time":1428966000000,"updated":1424711952000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1421356483000,"maybe_rsvp_count":0,"description":"<p><b>Callback-free Concurrency: Elixir vs Node.js<\/b><\/p> <p>Tired of callback hell and fighting with the event loop? Node.js is a popular choice for building real-time applications, but it comes with some serious drawbacks. Elixir, a new functional language targeting the Erlang VM, promises to combine the stability and scalability of Erlang with the expressiveness of Ruby. In this session, two implementations of the same real-time application will be compared: one written in Node.js and one written in Elixir. You will learn how Node and Elixir solve the same problems in very different ways, and see how Elixir enables massive concurrency and fault tolerance with code that is callback-free, concise, testable, and easy to reason about.<\/p> <p><img src=\"http:\/\/photos1.meetupstatic.com\/photos\/event\/a\/5\/0\/5\/600_433362245.jpeg\" \/><\/p> <p><b>About our presenter<\/b><\/p> <p><img src=\"http:\/\/photos4.meetupstatic.com\/photos\/event\/a\/4\/e\/9\/600_433362217.jpeg\" \/><\/p> <p><b>Chris Geihsler<\/b> has been writing code professionally for 12 years in the healthcare and education industries using C#, Ruby, and JavaScript. He currently works at Think Through Math where he builds a product that helps more than 3,000,000 kids get better at math. At home, he tries to fend off his four cats to find time to be dangerous with Elixir, Rust, and Go. His cats usually win.<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219860856\/","yes_rsvp_count":3,"name":"Callback-free Concurrency: Elixir vs Node.js","id":"219860856","time":1429570800000,"updated":1421356483000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1419366295000,"maybe_rsvp_count":0,"description":"<p>Taking suggestions<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219397838\/","yes_rsvp_count":4,"name":"Charity Outing","id":"219397838","time":1429966800000,"updated":1419366295000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1421356083000,"maybe_rsvp_count":0,"event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/219860684\/","yes_rsvp_count":1,"name":"Build Night","id":"219860684","time":1430172000000,"updated":1421356083000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1427374278000,"maybe_rsvp_count":0,"description":"<p>Joe Perks will provide an introduction to AWS CloudFormation and AWS OpsWorks, including deploying\/updating a CloudFormation template and an overview of how OpsWorks interfaces with Chef.<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/221414556\/","yes_rsvp_count":1,"duration":4500000,"name":"Intro to AWS CloudFormation and AWS OpsWorks","id":"221414556","time":1430262000000,"updated":1427374278000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1424192198000,"maybe_rsvp_count":0,"description":"<p>Philip Thompson will present on distributed, NoSQL databases. Come take a look at a few different solutions to scaling out past the traditional master-slave set up. Examples will include MongoDB, and Apache Cassandra. The presentation will discuss the limitations of traditional systems, and the tradeoffs made to avoid limitations such as eventually consistent architectures.\"<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220580924\/","yes_rsvp_count":6,"name":"Distributed, NoSQL databases","id":"220580924","time":1430348400000,"updated":1424192198000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"venue":{"country":"us","city":"Pittsburgh","address_1":"115 Atwood Street","name":"NoWait","lon":-79.957893,"id":21436512,"state":"PA","lat":40.441353,"repinned":false},"headcount":0,"visibility":"public","waitlist_count":0,"created":1424145047000,"maybe_rsvp_count":0,"description":"<p>Mike Riley of NoWait Presents<br\/><b>Ship Code Twice a Day. Strategies for Pushing Code and Code Reviews<\/b><\/p> <p>A talk on the process that Facebook uses to ship their code twice a day, and it's where the Phabricator tool was born. <a href=\"http:\/\/phabricator.org\/\" class=\"linkified\">http:\/\/phabricator.org\/<\/a><\/p> <p>High level:<br\/>- Everyone works directly off of master, no long running branches, actually just a branch per \"idea\"<br\/>-Control access to features which you aren't done with by using feature toggles<br\/>-No code is ever pushed until someone else has looked at it and says its ok<br\/>-At no point is your published code ever in a non-production-ready state<br\/>-Phabricator is the only vertically integrated solution that allows you to easily do this, but you can mix and match various other platforms to achieve the same end result<\/p> <p>\n\n\nEmma Trimble presents<\/p> <p><b>Ansible<\/b><\/p> <p>Emma will present on Ansible, the tool to automate apps and IT infrastructure. Application Deployment + Configuration Management + Continuous Delivery.<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220572352\/","yes_rsvp_count":8,"name":"Ship Code Twice a Day. Strategies for Pushing Code and Code Reviews","id":"220572352","time":1430780400000,"updated":1424320595000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1424721369000,"maybe_rsvp_count":0,"event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220712067\/","yes_rsvp_count":2,"name":"Jamie Forrest on an iOS subject","id":"220712067","time":1430953200000,"updated":1424721369000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1423194654000,"maybe_rsvp_count":0,"event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/220341498\/","yes_rsvp_count":1,"name":"Lin Clark - npm for Teams","id":"220341498","time":1431385200000,"updated":1423197459000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"venue":{"zip":"15217","country":"us","city":"Pittsburgh","address_1":"1710 Murray Ave","name":"M*Modal","lon":-79.92305,"id":13020272,"state":"PA","lat":40.437515,"repinned":false},"headcount":0,"visibility":"public","waitlist_count":0,"created":1426279981000,"maybe_rsvp_count":0,"description":"<p>Justin Pihony will present on Apache Spark (updated blurb in the coming weeks)<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/221133832\/","yes_rsvp_count":2,"duration":7200000,"name":"Introduction to Apache Spark using Scala","id":"221133832","time":1431640800000,"updated":1426279981000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"},{"utc_offset":-14400000,"headcount":0,"visibility":"public","waitlist_count":0,"created":1427392247000,"maybe_rsvp_count":0,"description":"<p>Design and engineering are two sides of the same coin. In this talk tailored to non-designers, we'll discuss:<\/p> <p><br\/>• What design is, compared to what people *think* it is.<\/p> <p><br\/>• Why anyone should even care about design.<\/p> <p><br\/>• How to integrate design thinking into your existing workflow. <\/p> <p>Talk by Jordan Koschei (<a href=\"https:\/\/twitter.com\/jordankoschei\">@jordankoschei<\/a>). Jordan is a designer, developer, and essayist. He's the Director of UX\/UI at <a href=\"http:\/\/fusionhome.com\/\">Fusion Media<\/a>, where he helps design internal tools for the Fortune 500. In addition to several side projects, he's also the Opinion Editor at <a href=\"http:\/\/theindustry.cc\/\">The Industry<\/a>.<\/p>","event_url":"http:\/\/www.meetup.com\/Pittsburgh-Code-Supply\/events\/221420747\/","yes_rsvp_count":3,"name":"Design for Engineers","id":"221420747","time":1432162800000,"updated":1427406645000,"group":{"join_mode":"open","created":1395326446000,"name":"Pittsburgh Code & Supply","group_lon":-79.98999786376953,"id":13452572,"urlname":"Pittsburgh-Code-Supply","group_lat":40.45000076293945,"who":"Members"},"status":"upcoming"}],"meta":{"next":"","method":"Events","total_count":18,"link":"https:\/\/api.meetup.com\/2\/events","count":18,"description":"Access Meetup events using a group, member, or event id. Events in private groups are available only to authenticated members of those groups. To search events by topic or location, see [Open Events](\/meetup_api\/docs\/2\/open_events).","lon":"","title":"Meetup Events v2","url":"https:\/\/api.meetup.com\/2\/events?offset=0&format=json&limited_events=False&sig=af3d1d433773ee222ada87767951d760d79a797c&group_id=13452572&photo-host=public&page=20&fields=&sig_id=5977224&order=time&desc=false&status=upcoming","id":"","updated":1427406645000,"lat":""}}
+ test/facebook.json view
@@ -0,0 +1,44 @@+{+ "data": [+ {+ "id": "X999_Y999",+ "from": {+ "name": "Tom Brady", "id": "X12"+ },+ "message": "Looking forward to 2010!",+ "actions": [+ {+ "name": "Comment",+ "link": "http://www.facebook.com/X999/posts/Y999"+ },+ {+ "name": "Like",+ "link": "http://www.facebook.com/X999/posts/Y999"+ }+ ],+ "type": "status",+ "created_time": "2010-08-02T21:27:44+0000",+ "updated_time": "2010-08-02T21:27:44+0000"+ },+ {+ "id": "X998_Y998",+ "from": {+ "name": "Peyton Manning", "id": "X18"+ },+ "message": "Where's my contract?",+ "actions": [+ {+ "name": "Comment",+ "link": "http://www.facebook.com/X998/posts/Y998"+ },+ {+ "name": "Like",+ "link": "http://www.facebook.com/X998/posts/Y998"+ }+ ],+ "type": "status",+ "created_time": "2010-08-02T21:27:44+0000",+ "updated_time": "2010-08-02T21:27:44+0000"+ }+ ]+}
+ test/gen/GenerateTestJSON.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Main where++import Control.Applicative+import Control.Monad.State as State+import Data.Maybe+import System.Exit+import System.IO (stdin, stderr, stdout, IOMode(..))+import System.FilePath (splitExtension, (<.>), (</>))+import System.Directory (removeFile, createDirectoryIfMissing)+import System.Process (system)+import Control.Monad (forM_, forM, when)+import Control.Exception (assert)+import qualified Data.ByteString.Lazy.Char8 as BSL+import qualified Data.HashMap.Strict as Map+import qualified Data.Set as Set+import Data.Monoid ((<>))+import Data.Aeson (Value(..), eitherDecode, encode, FromJSON(..), ToJSON(..))+import Data.Function (on)+import Data.List+import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import Data.Text (Text)+import qualified Data.Vector as V+import Data.Scientific (scientific, Scientific)+import Text.PrettyPrint.GenericPretty (pretty)+import Test.QuickCheck++import JsonToType.CodeGen(writeModule, runModule, Lang(..))+import JsonToType.Extract+import JsonToType.Format+import JsonToType.Pretty+import JsonToType.Split+import JsonToType.Test+import JsonToType.Type+import JsonToType.Util+import Options.Applicative++import CommonCLI++data Options = Options {+ tyOpts :: TypeOpts+ , keep :: Bool+ , stem :: FilePath+ , count :: Int+ , size :: Int+ }++optParser :: Parser Options+optParser =+ Options <$> tyOptParser+ <*> switch (long "keep" <> help "Also keep successful tests" )+ <*> strOption (long "stem" <> value "Test" <> help "Output filename stem" )+ <*> intOpt (long "count" <> value 100 <> help "Number of tests to perform" )+ <*> intOpt (long "size" <> value 10 <> help "size of generated test cases")+ -- <*> some (argument str (metavar "FILES..."))+ where+ intOpt = option auto++-- | Report an error to error output.+report :: Text -> IO ()+report = Text.hPutStrLn stderr++-- | Report an error and terminate the program.+fatal :: Text -> IO ()+fatal msg = do report msg+ exitFailure++-- | Read JSON and extract @Type@ information from it.+extractTypeFromJSONFile :: (String -> IO ()) -> FilePath -> IO (Maybe Type)+extractTypeFromJSONFile myTrace inputFilename =+ withFileOrHandle inputFilename ReadMode stdin $ \hIn ->+ -- First we decode JSON input into Aeson's Value type+ do bs <- BSL.hGetContents hIn+ Text.hPutStrLn stderr $ "Processing " `Text.append` Text.pack (show inputFilename)+ case eitherDecode bs of+ Left err -> do+ report $ Text.concat ["Cannot decode JSON input from "+ ,Text.pack (show inputFilename)+ ,"\n"+ , Text.pack err]+ return Nothing+ Right v -> do -- If decoding JSON was successful...+ -- We extract type structure from the JSON value.+ let t = extractType v+ --myTrace $ "Type: " ++ pretty t+ return $ Just t+++vectorWithoutDuplicates :: Ord b => Int -> Gen b -> Gen [b]+vectorWithoutDuplicates i gen = take i+ . removeDuplicates+ <$> infiniteListOf gen++removeDuplicates :: Ord a => [a] -> [a]+removeDuplicates list = filterM checkDup list `evalState` Set.empty+ where+ checkDup x = do seen <- State.get+ if x `Set.member` seen+ then+ return False+ else do+ State.put $ x `Set.insert` seen+ return True++-- | Take a set of JSON input filenames, Haskell output filename, and generate module parsing these JSON files.+generateTestJSONs :: Options -> IO ()+generateTestJSONs Options {tyOpts=TyOptions {..},+ ..}= do+ createDirectoryIfMissing True "output"+ testValues :: [Value] <- generate $+ resize size $+ vectorWithoutDuplicates 100 arbitraryTopValue+ results <- forM (zip3 inputFilenames outputFilenames testValues) $+ \(inputFilename, outputFilename, jsonValue) -> do+ BSL.writeFile inputFilename $ encode jsonValue+ -- Read type from each file+ typeForEachFile <- catMaybes <$> mapM (extractTypeFromJSONFile myTrace) [inputFilename]+ -- Unify all input types+ when (null typeForEachFile) $ do+ report "No valid JSON input file..."+ exitFailure+ let finalType = foldr1 unifyTypes typeForEachFile+ -- We split different dictionary labels to become different type trees (and thus different declarations.)+ let splitted = splitTypeByLabel toplevelName finalType+ --myTrace $ "SPLITTED: " ++ pretty splitted+ assert (not $ any hasNonTopTObj $ Map.elems splitted) $ do+ -- We compute which type labels are candidates for unification+ let uCands = unificationCandidates splitted+ myTrace $ "CANDIDATES:\n" ++ pretty uCands+ when suggest $ forM_ uCands $ \cs -> do+ putStr "-- "+ Text.putStrLn $ "=" `Text.intercalate` cs+ -- We unify the all candidates or only those that have been given as command-line flags.+ let unified = if autounify+ then unifyCandidates uCands splitted+ else splitted+ myTrace $ "UNIFIED:\n" ++ pretty unified+ -- We start by writing module header+ writeModule lang outputFilename toplevelName unified+ if test+ then do+ r <- (ExitSuccess==) <$> runModule lang outputFilename [inputFilename]+ when r $ mapM_ removeFile [inputFilename, outputFilename]+ return r+ else+ return True+ putStrLn $ "Successfully generated " ++ show (length results) +++ " JSON files, out of planned " ++ show count ++ " cases."+ where+ makeInputFilename = (<.>".json") . (stem ++) . show+ makeOutputFilename = ("output"</>) . (<.>".hs") . (stem ++) . show+ inputFilenames = map makeInputFilename [1..count]+ outputFilenames = map makeOutputFilename [1..count]+ myTrace :: String -> IO ()+ myTrace msg = debug `when` putStrLn msg+ toplevelName = capitalize $ Text.pack toplevel++main :: IO ()+main = do opts <- execParser optInfo+ generateTestJSONs opts+ where+ optInfo = info (optParser <**> helper)+ ( fullDesc+ <> progDesc "Generate a number of JSON test files, and generate type and parser for each."+ <> header "Self-test for json-to-type" )
+ test/iPhoneMenu.json view
@@ -0,0 +1,77 @@+{+ "menu": {+ "header": "xProgress SVG Viewer",+ "items": [+ {+ "id": "Open"+ },+ {+ "id": "OpenNew",+ "label": "Open New"+ },+ null,+ {+ "id": "ZoomIn",+ "label": "Zoom In"+ },+ {+ "id": "ZoomOut",+ "label": "Zoom Out"+ },+ {+ "id": "OriginalView",+ "label": "Original View"+ },+ null,+ {+ "id": "Quality"+ },+ {+ "id": "Pause"+ },+ {+ "id": "Mute"+ },+ null,+ {+ "id": "Find",+ "label": "Find..."+ },+ {+ "id": "FindAgain",+ "label": "Find Again"+ },+ {+ "id": "Copy"+ },+ {+ "id": "CopyAgain",+ "label": "Copy Again"+ },+ {+ "id": "CopySVG",+ "label": "Copy SVG"+ },+ {+ "id": "ViewSVG",+ "label": "View SVG"+ },+ {+ "id": "ViewSource",+ "label": "View Source"+ },+ {+ "id": "SaveAs",+ "label": "Save As"+ },+ null,+ {+ "id": "Help"+ },+ {+ "id": "About",+ "label": "About xProgress CVG Viewer..."+ }+ ]+ }+}
+ test/interop.json view
@@ -0,0 +1,41 @@+{+ "ResultSet": {+ "totalResultsAvailable": "1827221",+ "totalResultsReturned": 2,+ "firstResultPosition": 1,+ "Result": [+ {+ "Title": "potato jpg",+ "Summary": "Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan jerawat bintik hitam dan kemerahan pada kulit Gunakan seminggu sekali sebagai",+ "Url": "http:\/\/www.mediaindonesia.com\/spaw\/uploads\/images\/potato.jpg",+ "ClickUrl": "http:\/\/www.mediaindonesia.com\/spaw\/uploads\/images\/potato.jpg",+ "RefererUrl": "http:\/\/www.mediaindonesia.com\/mediaperempuan\/index.php?ar_id=Nzkw",+ "FileSize": 22630,+ "FileFormat": "jpeg",+ "Height": "362",+ "Width": "532",+ "Thumbnail": {+ "Url": "http:\/\/thm-a01.yimg.com\/nimage\/557094559c18f16a",+ "Height": "98",+ "Width": "145"+ }+ },+ {+ "Title": "potato jpg",+ "Summary": "Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day Preparation time 10 min",+ "Url": "http:\/\/www.infovisual.info\/01\/photo\/potato.jpg",+ "ClickUrl": "http:\/\/www.infovisual.info\/01\/photo\/potato.jpg",+ "RefererUrl": "http:\/\/sundayfood.com\/puneri-aloo-indian-%20recipe",+ "FileSize": 119398,+ "FileFormat": "jpeg",+ "Height": "685",+ "Width": "1024",+ "Thumbnail": {+ "Url": "http:\/\/thm-a01.yimg.com\/nimage\/7fa23212efe84b64",+ "Height": "107",+ "Width": "160"+ }+ }+ ]+ }+}
+ test/jenkins.json view
@@ -0,0 +1,1 @@+{"assignedLabels":[{"actions":[{}],"busyExecutors":1,"clouds":[],"description":"the master Jenkins node","idleExecutors":1,"loadStatistics":{},"name":"master","nodes":[{"nodeName":""}],"offline":false,"tiedJobs":[{"name":"infra_backend-merge-all-repo","url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/","color":"blue"},{"name":"infra_backend-plugin-report-card","url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/","color":"blue"},{"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","color":"red"},{"name":"infra_backend_jenkins_ci_cloudbess_com_filler","url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/","color":"blue"},{"name":"infra_backend_pull_request_greeter","url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/","color":"blue"},{"name":"infra_changelog_refresh","url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/","color":"blue"},{"name":"infra_checkout_stats","url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/","color":"blue"},{"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","color":"red"},{"name":"infra_drupalcron","url":"http://ci.jenkins-ci.org/job/infra_drupalcron/","color":"blue"},{"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","color":"red"},{"name":"infra_generate_monthly_json","url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/","color":"blue"},{"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","color":"red"},{"name":"infra_jenkins-ci.org_jekyll","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/","color":"blue"},{"name":"infra_jenkins-ci.org_webcontents","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/","color":"blue"},{"name":"infra_mirroring","url":"http://ci.jenkins-ci.org/job/infra_mirroring/","color":"blue"},{"name":"infra_patron_messages","url":"http://ci.jenkins-ci.org/job/infra_patron_messages/","color":"blue"},{"name":"infra_pluginmirror","url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/","color":"blue"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_pull_m2repo","url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/","color":"aborted"},{"name":"infra_release.rss","url":"http://ci.jenkins-ci.org/job/infra_release.rss/","color":"blue"},{"name":"infra_repo.jenkins-ci.org_maven_index","url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/","color":"blue"},{"name":"infra_statistics","url":"http://ci.jenkins-ci.org/job/infra_statistics/","color":"blue"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","color":"red"},{"name":"infra_update_center","url":"http://ci.jenkins-ci.org/job/infra_update_center/","color":"blue_anime"},{"name":"infra_update_center_experimental","url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/","color":"blue"},{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"},{"name":"infra_update_center_stable","url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/","color":"blue"}],"totalExecutors":2,"propertiesList":[]}],"mode":"EXCLUSIVE","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"actions":[{},{},{}],"description":"","displayName":"config-provider-model","displayNameOrNull":null,"name":"config-provider-model","url":"http://ci.jenkins-ci.org/job/config-provider-model/","buildable":true,"builds":[{"number":1366,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1366/"},{"number":1365,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1365/"},{"number":1364,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1364/"},{"number":1363,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1363/"},{"number":1362,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1362/"},{"number":1361,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1361/"},{"number":1360,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1360/"},{"number":1359,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1359/"},{"number":1358,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1358/"},{"number":1357,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1357/"},{"number":1356,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1356/"},{"number":1355,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1355/"},{"number":1354,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1354/"},{"number":1353,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1353/"},{"number":1352,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1352/"}],"color":"blue","firstBuild":{"number":1352,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1352/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1366,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1366/"},"lastCompletedBuild":{"number":1366,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1366/"},"lastFailedBuild":{"number":1353,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1353/"},"lastStableBuild":{"number":1366,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1366/"},"lastSuccessfulBuild":{"number":1366,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1366/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1353,"url":"http://ci.jenkins-ci.org/job/config-provider-model/1353/"},"nextBuildNumber":1367,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.lib:config-provider-model","url":"http://ci.jenkins-ci.org/job/config-provider-model/org.jenkins-ci.lib$config-provider-model/","color":"blue","displayName":"config-provider-model"}]},{"actions":[{},{}],"description":"Runs <a href=\"https://github.com/jenkinsci/selenium-tests\">Selenium Tests</a>.\t","displayName":"core_selenium-test","displayNameOrNull":null,"name":"core_selenium-test","url":"http://ci.jenkins-ci.org/job/core_selenium-test/","buildable":true,"builds":[{"number":18,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/18/"},{"number":17,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/17/"},{"number":16,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/16/"},{"number":15,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/15/"},{"number":14,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/14/"},{"number":13,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/13/"},{"number":12,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/12/"},{"number":11,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/11/"},{"number":10,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/10/"},{"number":9,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/9/"},{"number":8,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/8/"},{"number":7,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/7/"},{"number":6,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/1/"}],"color":"red","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/1/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":18,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/18/"},"lastCompletedBuild":{"number":18,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/18/"},"lastFailedBuild":{"number":18,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/18/"},"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":18,"url":"http://ci.jenkins-ci.org/job/core_selenium-test/18/"},"nextBuildNumber":19,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"fix-git-configuration-on-remote-slave-8","displayNameOrNull":null,"name":"fix-git-configuration-on-remote-slave-8","url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/","buildable":true,"builds":[{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"},"lastCompletedBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"},"lastFailedBuild":null,"lastStableBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"},"lastSuccessfulBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/1/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":2,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"CI Build for Gerrit Code Review \r\nhttp://code.google.com/p/gerrit","displayName":"gerrit_master","displayNameOrNull":null,"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","buildable":false,"builds":[{"number":4252,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4252/"},{"number":4251,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4251/"},{"number":4250,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4250/"},{"number":4249,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4249/"},{"number":4248,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4248/"},{"number":4247,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4247/"},{"number":4246,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4246/"},{"number":4245,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4245/"},{"number":4244,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4244/"},{"number":4243,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4243/"},{"number":4242,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4242/"},{"number":4241,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4241/"},{"number":4240,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4240/"},{"number":4239,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4239/"},{"number":4238,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4238/"},{"number":4011,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4011/"}],"color":"disabled","firstBuild":{"number":4011,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4011/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4252,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4252/"},"lastCompletedBuild":{"number":4252,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4252/"},"lastFailedBuild":{"number":4252,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4252/"},"lastStableBuild":{"number":4011,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4011/"},"lastSuccessfulBuild":{"number":4011,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4011/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":4252,"url":"http://ci.jenkins-ci.org/job/gerrit_master/4252/"},"nextBuildNumber":4253,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"com.google.gerrit:gerrit-acceptance-tests","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-acceptance-tests/","color":"blue","displayName":"Gerrit Code Review - Acceptance Tests"},{"name":"com.google.gerrit:gerrit-antlr","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-antlr/","color":"blue","displayName":"Gerrit Code Review - ANTLR"},{"name":"com.google.gerrit:gerrit-cache-h2","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-cache-h2/","color":"blue","displayName":"Gerrit Code Review - Guava + H2 caching"},{"name":"com.google.gerrit:gerrit-common","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-common/","color":"blue","displayName":"Gerrit Code Review - Common"},{"name":"com.google.gerrit:gerrit-ehcache","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-ehcache/","color":"disabled","displayName":"Gerrit Code Review - Ehcache Bindings"},{"name":"com.google.gerrit:gerrit-extension-api","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-extension-api/","color":"blue","displayName":"Gerrit Code Review - Extension API"},{"name":"com.google.gerrit:gerrit-gwtdebug","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-gwtdebug/","color":"blue","displayName":"Gerrit Code Review - GWT UI Debugging Support"},{"name":"com.google.gerrit:gerrit-gwtexpui","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-gwtexpui/","color":"blue","displayName":"Gerrit Code Review - GWT expui"},{"name":"com.google.gerrit:gerrit-gwtui","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-gwtui/","color":"blue","displayName":"Gerrit Code Review - GWT UI"},{"name":"com.google.gerrit:gerrit-httpd","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-httpd/","color":"blue","displayName":"Gerrit Code Review - HTTPd"},{"name":"com.google.gerrit:gerrit-launcher","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-launcher/","color":"blue","displayName":"Gerrit Code Review - Launcher"},{"name":"com.google.gerrit:gerrit-main","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-main/","color":"blue","displayName":"Gerrit Code Review - Main"},{"name":"com.google.gerrit:gerrit-openid","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-openid/","color":"blue","displayName":"Gerrit Code Review - OpenID servlet and RPC"},{"name":"com.google.gerrit:gerrit-parent","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-parent/","color":"blue","displayName":"Gerrit Code Review - Parent"},{"name":"com.google.gerrit:gerrit-patch-commonsnet","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-patch-commonsnet/","color":"blue","displayName":"Gerrit Code Review - Patch commons-net"},{"name":"com.google.gerrit:gerrit-patch-jgit","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-patch-jgit/","color":"blue","displayName":"Gerrit Code Review - Patch JGit"},{"name":"com.google.gerrit:gerrit-pgm","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-pgm/","color":"blue","displayName":"Gerrit Code Review - Pgm"},{"name":"com.google.gerrit:gerrit-plugin-api","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-plugin-api/","color":"blue","displayName":"Gerrit Code Review - Plugin API"},{"name":"com.google.gerrit:gerrit-plugin-archetype","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-plugin-archetype/","color":"blue","displayName":"Gerrit Code Review - Plugin Archetype"},{"name":"com.google.gerrit:gerrit-plugin-gwt-archetype","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-plugin-gwt-archetype/","color":"blue","displayName":"Gerrit Code Review - Web Ui GWT Plugin Archetype"},{"name":"com.google.gerrit:gerrit-plugin-gwtui","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-plugin-gwtui/","color":"blue","displayName":"Gerrit Code Review - Plugin GWT UI"},{"name":"com.google.gerrit:gerrit-plugin-js-archetype","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-plugin-js-archetype/","color":"blue","displayName":"Gerrit Code Review - Web UI JavaScript Plugin Archetype"},{"name":"com.google.gerrit:gerrit-prettify","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-prettify/","color":"blue","displayName":"Gerrit Code Review - Prettify"},{"name":"com.google.gerrit:gerrit-reviewdb","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-reviewdb/","color":"blue","displayName":"Gerrit Code Review - ReviewDB"},{"name":"com.google.gerrit:gerrit-server","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-server/","color":"blue","displayName":"Gerrit Code Review - Server"},{"name":"com.google.gerrit:gerrit-sshd","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-sshd/","color":"blue","displayName":"Gerrit Code Review - SSHd"},{"name":"com.google.gerrit:gerrit-util-cli","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-util-cli/","color":"blue","displayName":"Gerrit Code Review - Utility - CLI"},{"name":"com.google.gerrit:gerrit-util-ssl","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-util-ssl/","color":"blue","displayName":"Gerrit Code Review - Utility - SSL"},{"name":"com.google.gerrit:gerrit-war","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.google.gerrit$gerrit-war/","color":"blue","displayName":"Gerrit Code Review - WAR"},{"name":"com.googlesource.gerrit.plugins.replication:replication","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.googlesource.gerrit.plugins.replication$replication/","color":"blue","displayName":"replication"},{"name":"com.googlesource.gerrit.plugins.reviewnotes:reviewnotes","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.googlesource.gerrit.plugins.reviewnotes$reviewnotes/","color":"blue","displayName":"reviewnotes"},{"name":"com.googlesource.gerrit.plugins.validators:commit-message-length-validator","url":"http://ci.jenkins-ci.org/job/gerrit_master/com.googlesource.gerrit.plugins.validators$commit-message-length-validator/","color":"blue","displayName":"commit-message-length-validator"}]},{"actions":[{},{},{},{}],"description":"","displayName":"infra_backend-confluence-spam-remover","displayNameOrNull":null,"name":"infra_backend-confluence-spam-remover","url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 1 test.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/2/"},"lastFailedBuild":null,"lastStableBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/2/"},"lastSuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/2/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.backend:confluence-bulk-page-remover","url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/org.jenkins-ci.backend$confluence-bulk-page-remover/","color":"blue","displayName":"Bulk Page removal tool to clean up spams"}]},{"actions":[{},{},{}],"description":"This updates <a href=\"http://git.jenkins-ci.org/?p=all.git;a=summary\">http://git.jenkins-ci.org/all.git</a>. Also see <a href=\"https://github.com/jenkinsci/backend-merge-all-repo\">https://github.com/jenkinsci/backend-merge-all-repo</a>","displayName":"infra_backend-merge-all-repo","displayNameOrNull":null,"name":"infra_backend-merge-all-repo","url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/","buildable":true,"builds":[{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/114/"},{"number":113,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/113/"},{"number":112,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/112/"},{"number":111,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/111/"},{"number":110,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/110/"},{"number":109,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/109/"},{"number":108,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/108/"},{"number":107,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/107/"},{"number":106,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/106/"},{"number":105,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/105/"},{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/104/"},{"number":103,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/103/"},{"number":102,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/102/"},{"number":101,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/101/"},{"number":100,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/100/"},{"number":99,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/99/"},{"number":98,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/98/"},{"number":97,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/97/"},{"number":96,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/96/"},{"number":95,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/95/"},{"number":94,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/94/"},{"number":93,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/93/"},{"number":92,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/92/"},{"number":91,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/91/"},{"number":90,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/90/"},{"number":89,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/89/"},{"number":88,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/88/"},{"number":87,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/87/"},{"number":86,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/86/"},{"number":85,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/85/"},{"number":84,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/84/"},{"number":83,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/83/"},{"number":82,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/82/"},{"number":81,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/81/"},{"number":80,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/80/"},{"number":79,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/79/"},{"number":78,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/78/"},{"number":77,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/77/"},{"number":76,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/76/"},{"number":75,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/75/"},{"number":74,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/74/"},{"number":73,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/73/"},{"number":72,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/72/"},{"number":71,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/71/"},{"number":70,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/70/"},{"number":69,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/69/"},{"number":68,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/68/"},{"number":67,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/67/"},{"number":66,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/66/"},{"number":65,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/65/"},{"number":64,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/64/"},{"number":63,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/63/"},{"number":62,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/62/"},{"number":61,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/61/"},{"number":60,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/60/"},{"number":59,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/59/"},{"number":58,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/58/"},{"number":57,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/57/"},{"number":56,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/56/"},{"number":55,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/55/"},{"number":54,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/54/"},{"number":53,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/53/"},{"number":52,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/52/"},{"number":51,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/51/"},{"number":50,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/50/"},{"number":49,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/49/"},{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/48/"},{"number":47,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/47/"},{"number":46,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/46/"},{"number":45,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/45/"},{"number":44,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/44/"},{"number":43,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/43/"},{"number":42,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/42/"},{"number":41,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/41/"},{"number":40,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/40/"},{"number":39,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/39/"},{"number":38,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/38/"},{"number":37,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/37/"},{"number":36,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/36/"},{"number":35,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/35/"},{"number":34,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/34/"},{"number":33,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/33/"},{"number":32,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/32/"},{"number":31,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/31/"},{"number":30,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/30/"},{"number":29,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/29/"},{"number":28,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/28/"},{"number":27,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/27/"},{"number":26,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/26/"},{"number":25,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/25/"},{"number":24,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/24/"},{"number":23,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/23/"},{"number":22,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/22/"},{"number":21,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/21/"},{"number":20,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/20/"},{"number":19,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/19/"},{"number":18,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/18/"},{"number":17,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/17/"},{"number":16,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/16/"},{"number":15,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/15/"}],"color":"blue","firstBuild":{"number":15,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/15/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/114/"},"lastCompletedBuild":{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/114/"},"lastFailedBuild":{"number":83,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/83/"},"lastStableBuild":{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/114/"},"lastSuccessfulBuild":{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/114/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":86,"url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/86/"},"nextBuildNumber":115,"property":[{},{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},null],"description":"","displayName":"infra_backend-plugin-report-card","displayNameOrNull":null,"name":"infra_backend-plugin-report-card","url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/","buildable":true,"builds":[{"number":900,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/900/"},{"number":899,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/899/"},{"number":898,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/898/"},{"number":897,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/897/"},{"number":896,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/896/"},{"number":895,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/895/"},{"number":894,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/894/"},{"number":893,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/893/"},{"number":892,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/892/"},{"number":891,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/891/"},{"number":890,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/890/"},{"number":889,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/889/"},{"number":888,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/888/"},{"number":887,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/887/"},{"number":886,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/886/"},{"number":885,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/885/"},{"number":884,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/884/"},{"number":883,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/883/"},{"number":882,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/882/"},{"number":881,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/881/"},{"number":880,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/880/"},{"number":879,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/879/"},{"number":878,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/878/"},{"number":877,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/877/"},{"number":876,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/876/"},{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/875/"},{"number":874,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/874/"},{"number":873,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/873/"},{"number":872,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/872/"},{"number":871,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/871/"},{"number":870,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/870/"},{"number":869,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/869/"},{"number":868,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/868/"},{"number":867,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/867/"},{"number":866,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/866/"},{"number":865,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/865/"},{"number":864,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/864/"},{"number":863,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/863/"},{"number":862,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/862/"},{"number":861,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/861/"},{"number":860,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/860/"},{"number":859,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/859/"},{"number":858,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/858/"},{"number":857,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/857/"},{"number":856,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/856/"},{"number":855,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/855/"},{"number":854,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/854/"},{"number":853,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/853/"},{"number":852,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/852/"},{"number":851,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/851/"},{"number":850,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/850/"},{"number":849,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/849/"},{"number":848,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/848/"},{"number":847,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/847/"},{"number":846,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/846/"},{"number":845,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/845/"},{"number":844,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/844/"},{"number":843,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/843/"},{"number":842,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/842/"},{"number":841,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/841/"},{"number":840,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/840/"},{"number":839,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/839/"},{"number":838,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/838/"},{"number":837,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/837/"},{"number":836,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/836/"},{"number":835,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/835/"},{"number":834,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/834/"},{"number":833,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/833/"},{"number":832,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/832/"},{"number":831,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/831/"},{"number":830,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/830/"},{"number":829,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/829/"},{"number":828,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/828/"},{"number":827,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/827/"},{"number":826,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/826/"},{"number":825,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/825/"},{"number":824,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/824/"},{"number":823,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/823/"},{"number":822,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/822/"},{"number":821,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/821/"},{"number":820,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/820/"},{"number":819,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/819/"},{"number":818,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/818/"},{"number":817,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/817/"},{"number":816,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/816/"},{"number":815,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/815/"},{"number":814,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/814/"},{"number":813,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/813/"},{"number":812,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/812/"},{"number":811,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/811/"},{"number":810,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/810/"},{"number":809,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/809/"},{"number":808,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/808/"},{"number":807,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/807/"},{"number":806,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/806/"},{"number":805,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/805/"},{"number":804,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/804/"},{"number":803,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/803/"},{"number":802,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/802/"},{"number":801,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/801/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":900,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/900/"},"lastCompletedBuild":{"number":900,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/900/"},"lastFailedBuild":{"number":724,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/724/"},"lastStableBuild":{"number":900,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/900/"},"lastSuccessfulBuild":{"number":900,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/900/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":724,"url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/724/"},"nextBuildNumber":901,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins.ci.backend:backend-plugin-report-card","url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/org.jenkins.ci.backend$backend-plugin-report-card/","color":"blue","displayName":"Plugin Report Card"}]},{"actions":[{},{},null],"description":"","displayName":"infra_backend-war-size-tracker","displayNameOrNull":null,"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","buildable":true,"builds":[{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/568/"},{"number":567,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/567/"},{"number":566,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/566/"},{"number":565,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/565/"},{"number":564,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/564/"},{"number":563,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/563/"},{"number":562,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/562/"},{"number":561,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/561/"},{"number":560,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/560/"},{"number":559,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/559/"},{"number":558,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/558/"},{"number":557,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/557/"},{"number":556,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/556/"},{"number":555,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/555/"},{"number":554,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/554/"},{"number":553,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/553/"},{"number":552,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/552/"},{"number":551,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/551/"},{"number":550,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/550/"},{"number":549,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/549/"},{"number":548,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/548/"},{"number":547,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/547/"},{"number":546,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/546/"},{"number":545,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/545/"},{"number":544,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/544/"},{"number":543,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/543/"},{"number":542,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/542/"},{"number":541,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/541/"},{"number":540,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/540/"},{"number":539,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/539/"},{"number":533,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/533/"}],"color":"red","firstBuild":{"number":533,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/533/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/568/"},"lastCompletedBuild":{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/568/"},"lastFailedBuild":{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/568/"},"lastStableBuild":{"number":533,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/533/"},"lastSuccessfulBuild":{"number":533,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/533/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/568/"},"nextBuildNumber":569,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins.ci.backend:backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/org.jenkins.ci.backend$backend-war-size-tracker/","color":"red","displayName":"Jenkins WAR Size Tracker"}]},{"actions":[{},{},{},null],"description":"","displayName":"infra_backend_jenkins_ci_cloudbess_com_filler","displayNameOrNull":null,"name":"infra_backend_jenkins_ci_cloudbess_com_filler","url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/","buildable":true,"builds":[{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/875/"},{"number":874,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/874/"},{"number":873,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/873/"},{"number":872,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/872/"},{"number":871,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/871/"},{"number":870,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/870/"},{"number":869,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/869/"},{"number":868,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/868/"},{"number":867,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/867/"},{"number":866,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/866/"},{"number":865,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/865/"},{"number":864,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/864/"},{"number":863,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/863/"},{"number":862,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/862/"},{"number":861,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/861/"},{"number":860,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/860/"},{"number":859,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/859/"},{"number":858,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/858/"},{"number":857,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/857/"},{"number":856,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/856/"},{"number":855,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/855/"},{"number":854,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/854/"},{"number":853,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/853/"},{"number":852,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/852/"},{"number":851,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/851/"},{"number":850,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/850/"},{"number":849,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/849/"},{"number":848,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/848/"},{"number":847,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/847/"},{"number":846,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/846/"},{"number":845,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/845/"},{"number":844,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/844/"},{"number":843,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/843/"},{"number":842,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/842/"},{"number":841,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/841/"},{"number":840,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/840/"},{"number":839,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/839/"},{"number":838,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/838/"},{"number":837,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/837/"},{"number":836,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/836/"},{"number":835,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/835/"},{"number":834,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/834/"},{"number":833,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/833/"},{"number":832,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/832/"},{"number":831,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/831/"},{"number":830,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/830/"},{"number":829,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/829/"},{"number":828,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/828/"},{"number":827,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/827/"},{"number":826,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/826/"},{"number":825,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/825/"},{"number":824,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/824/"},{"number":823,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/823/"},{"number":822,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/822/"},{"number":821,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/821/"},{"number":820,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/820/"},{"number":819,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/819/"},{"number":818,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/818/"},{"number":817,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/817/"},{"number":816,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/816/"},{"number":815,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/815/"},{"number":814,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/814/"},{"number":813,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/813/"},{"number":812,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/812/"},{"number":811,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/811/"},{"number":810,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/810/"},{"number":809,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/809/"},{"number":808,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/808/"},{"number":807,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/807/"},{"number":806,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/806/"},{"number":805,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/805/"},{"number":804,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/804/"},{"number":803,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/803/"},{"number":802,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/802/"},{"number":801,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/801/"},{"number":800,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/800/"},{"number":799,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/799/"},{"number":798,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/798/"},{"number":797,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/797/"},{"number":796,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/796/"},{"number":795,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/795/"},{"number":794,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/794/"},{"number":793,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/793/"},{"number":792,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/792/"},{"number":791,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/791/"},{"number":790,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/790/"},{"number":789,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/789/"},{"number":788,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/788/"},{"number":787,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/787/"},{"number":786,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/786/"},{"number":785,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/785/"},{"number":784,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/784/"},{"number":783,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/783/"},{"number":782,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/782/"},{"number":781,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/781/"},{"number":780,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/780/"},{"number":779,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/779/"},{"number":778,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/778/"},{"number":777,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/777/"},{"number":776,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/776/"}],"color":"blue","firstBuild":{"number":776,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/776/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/875/"},"lastCompletedBuild":{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/875/"},"lastFailedBuild":{"number":854,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/854/"},"lastStableBuild":{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/875/"},"lastSuccessfulBuild":{"number":875,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/875/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":854,"url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/854/"},"nextBuildNumber":876,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.backend:backend-jenkins-ci-cloudbees-com-filler","url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/org.jenkins-ci.backend$backend-jenkins-ci-cloudbees-com-filler/","color":"blue","displayName":"Create Plugin CI Jobs on https://jenkins.ci.cloudbees.com/"}]},{"actions":[{},{},null],"description":"","displayName":"infra_backend_pull_request_greeter","displayNameOrNull":null,"name":"infra_backend_pull_request_greeter","url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/","buildable":true,"builds":[{"number":1185,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1185/"},{"number":1184,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1184/"},{"number":1183,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1183/"},{"number":1182,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1182/"},{"number":1181,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1181/"},{"number":1180,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1180/"},{"number":1179,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1179/"},{"number":1178,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1178/"},{"number":1177,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1177/"},{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1176/"},{"number":1175,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1175/"},{"number":1174,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1174/"},{"number":1173,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1173/"},{"number":1172,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1172/"},{"number":1171,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1171/"},{"number":1170,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1170/"},{"number":1169,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1169/"},{"number":1168,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1168/"},{"number":1167,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1167/"},{"number":1166,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1166/"},{"number":1165,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1165/"},{"number":1164,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1164/"},{"number":1163,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1163/"},{"number":1162,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1162/"},{"number":1161,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1161/"},{"number":1160,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1160/"},{"number":1159,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1159/"},{"number":1158,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1158/"},{"number":1157,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1157/"},{"number":1156,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1156/"},{"number":1155,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1155/"},{"number":1154,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1154/"},{"number":1153,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1153/"},{"number":1152,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1152/"},{"number":1151,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1151/"},{"number":1150,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1150/"},{"number":1149,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1149/"},{"number":1148,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1148/"},{"number":1147,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1147/"},{"number":1146,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1146/"},{"number":1145,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1145/"},{"number":1144,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1144/"},{"number":1143,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1143/"},{"number":1142,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1142/"},{"number":1141,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1141/"},{"number":1140,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1140/"},{"number":1139,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1139/"},{"number":1138,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1138/"},{"number":1137,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1137/"},{"number":1136,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1136/"},{"number":1135,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1135/"},{"number":1134,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1134/"},{"number":1133,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1133/"},{"number":1132,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1132/"},{"number":1131,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1131/"},{"number":1130,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1130/"},{"number":1129,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1129/"},{"number":1128,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1128/"},{"number":1127,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1127/"},{"number":1126,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1126/"},{"number":1125,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1125/"},{"number":1124,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1124/"},{"number":1123,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1123/"},{"number":1122,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1122/"},{"number":1121,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1121/"},{"number":1120,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1120/"},{"number":1119,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1119/"},{"number":1118,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1118/"},{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1117/"},{"number":1116,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1116/"},{"number":1115,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1115/"},{"number":1114,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1114/"},{"number":1113,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1113/"},{"number":1112,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1112/"},{"number":1111,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1111/"},{"number":1110,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1110/"},{"number":1109,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1109/"},{"number":1108,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1108/"},{"number":1107,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1107/"},{"number":1106,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1106/"},{"number":1105,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1105/"},{"number":1104,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1104/"},{"number":1103,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1103/"},{"number":1102,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1102/"},{"number":1101,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1101/"},{"number":1100,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1100/"},{"number":1099,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1099/"},{"number":1098,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1098/"},{"number":1097,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1097/"},{"number":1096,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1096/"},{"number":1095,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1095/"},{"number":1094,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1094/"},{"number":1093,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1093/"},{"number":1092,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1092/"},{"number":1091,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1091/"},{"number":1090,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1090/"},{"number":1089,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1089/"},{"number":1088,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1088/"},{"number":1087,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1087/"},{"number":1086,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1086/"}],"color":"blue","firstBuild":{"number":1086,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1086/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1185,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1185/"},"lastCompletedBuild":{"number":1185,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1185/"},"lastFailedBuild":null,"lastStableBuild":{"number":1185,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1185/"},"lastSuccessfulBuild":{"number":1185,"url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/1185/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":1186,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.backend:backend-pull-request-greeter","url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/org.jenkins-ci.backend$backend-pull-request-greeter/","color":"blue","displayName":"backend-pull-request-greeter"}]},{"actions":[{},{}],"description":"Update website <a href=\"http://jenkins-ci.org/changelog\">changelog</a> from master file in <a href=\"https://github.com/jenkinsci/jenkins/blob/master/changelog.html\">github</a>.","displayName":"infra_changelog_refresh","displayNameOrNull":null,"name":"infra_changelog_refresh","url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/","buildable":true,"builds":[{"number":26231,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26231/"},{"number":26230,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26230/"},{"number":26229,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26229/"},{"number":26228,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26228/"},{"number":26227,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26227/"},{"number":26226,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26226/"},{"number":26225,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26225/"},{"number":26224,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26224/"},{"number":26223,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26223/"},{"number":26222,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26222/"},{"number":26221,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26221/"},{"number":26220,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26220/"},{"number":26219,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26219/"},{"number":26218,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26218/"},{"number":26217,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26217/"},{"number":26216,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26216/"},{"number":26215,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26215/"},{"number":26214,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26214/"},{"number":26213,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26213/"},{"number":26212,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26212/"},{"number":26211,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26211/"},{"number":26210,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26210/"},{"number":26209,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26209/"},{"number":26208,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26208/"},{"number":26207,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26207/"},{"number":26206,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26206/"},{"number":26205,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26205/"},{"number":26204,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26204/"},{"number":26203,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26203/"},{"number":26202,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26202/"},{"number":26201,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26201/"},{"number":26200,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26200/"},{"number":26199,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26199/"},{"number":26198,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26198/"},{"number":26197,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26197/"},{"number":26196,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26196/"},{"number":26195,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26195/"},{"number":26194,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26194/"},{"number":26193,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26193/"},{"number":26192,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26192/"},{"number":26191,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26191/"},{"number":26190,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26190/"},{"number":26189,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26189/"},{"number":26188,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26188/"},{"number":26187,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26187/"},{"number":26186,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26186/"},{"number":26185,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26185/"},{"number":26184,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26184/"},{"number":26183,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26183/"},{"number":26182,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26182/"}],"color":"blue","firstBuild":{"number":26182,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26182/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":26231,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26231/"},"lastCompletedBuild":{"number":26231,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26231/"},"lastFailedBuild":null,"lastStableBuild":{"number":26231,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26231/"},"lastSuccessfulBuild":{"number":26231,"url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/26231/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":26232,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Checks out a copy of https://github.com/jenkinsci/infra-statistics into the server so that it can be seen from http://stats.jenkins-ci.org/jenkins-stats/","displayName":"infra_checkout_stats","displayNameOrNull":null,"name":"infra_checkout_stats","url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/","buildable":true,"builds":[{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/767/"},{"number":766,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/766/"},{"number":765,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/765/"},{"number":764,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/764/"},{"number":763,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/763/"},{"number":762,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/762/"},{"number":761,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/761/"},{"number":760,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/760/"},{"number":759,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/759/"},{"number":758,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/758/"},{"number":757,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/757/"},{"number":756,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/756/"},{"number":755,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/755/"},{"number":754,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/754/"},{"number":753,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/753/"},{"number":752,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/752/"},{"number":751,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/751/"},{"number":750,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/750/"},{"number":749,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/749/"},{"number":748,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/748/"},{"number":747,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/747/"},{"number":746,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/746/"},{"number":745,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/745/"},{"number":744,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/744/"},{"number":743,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/743/"},{"number":742,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/742/"},{"number":741,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/741/"},{"number":740,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/740/"},{"number":739,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/739/"},{"number":738,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/738/"},{"number":737,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/737/"},{"number":736,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/736/"},{"number":735,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/735/"},{"number":734,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/734/"},{"number":733,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/733/"},{"number":732,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/732/"},{"number":731,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/731/"},{"number":730,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/730/"},{"number":729,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/729/"},{"number":728,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/728/"},{"number":727,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/727/"},{"number":726,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/726/"},{"number":725,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/725/"},{"number":724,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/724/"},{"number":723,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/723/"},{"number":722,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/722/"},{"number":721,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/721/"},{"number":720,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/720/"},{"number":719,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/719/"},{"number":718,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/718/"},{"number":717,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/717/"},{"number":716,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/716/"},{"number":715,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/715/"},{"number":714,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/714/"},{"number":713,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/713/"},{"number":712,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/712/"},{"number":711,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/711/"},{"number":710,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/710/"},{"number":709,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/709/"},{"number":708,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/708/"},{"number":707,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/707/"},{"number":706,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/706/"},{"number":705,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/705/"},{"number":704,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/704/"},{"number":703,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/703/"},{"number":702,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/702/"},{"number":701,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/701/"},{"number":700,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/700/"},{"number":699,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/699/"},{"number":698,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/698/"},{"number":697,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/697/"},{"number":696,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/696/"},{"number":695,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/695/"},{"number":694,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/694/"},{"number":693,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/693/"},{"number":692,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/692/"},{"number":691,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/691/"},{"number":690,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/690/"},{"number":689,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/689/"},{"number":688,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/688/"},{"number":687,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/687/"},{"number":686,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/686/"},{"number":685,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/685/"},{"number":684,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/684/"},{"number":683,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/683/"},{"number":682,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/682/"},{"number":681,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/681/"},{"number":680,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/680/"},{"number":679,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/679/"},{"number":678,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/678/"},{"number":677,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/677/"},{"number":676,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/676/"},{"number":675,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/675/"},{"number":674,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/674/"},{"number":673,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/673/"},{"number":672,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/672/"},{"number":671,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/671/"},{"number":670,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/670/"},{"number":669,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/669/"},{"number":668,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/668/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/767/"},"lastCompletedBuild":{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/767/"},"lastFailedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/2/"},"lastStableBuild":{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/767/"},"lastSuccessfulBuild":{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/767/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/2/"},"nextBuildNumber":768,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[{"name":"infra_statistics","url":"http://ci.jenkins-ci.org/job/infra_statistics/","color":"blue"}]},{"actions":[{},{}],"description":"Runs https://github.com/jenkinsci/backend-commit-history-parser and generate release/commit histories.","displayName":"infra_commit_history_generation","displayNameOrNull":null,"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","buildable":true,"builds":[{"number":361,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/361/"},{"number":360,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/360/"},{"number":359,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/359/"},{"number":358,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/358/"},{"number":357,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/357/"},{"number":356,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/356/"},{"number":355,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/355/"},{"number":354,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/354/"},{"number":353,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/353/"},{"number":352,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/352/"},{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/351/"},{"number":350,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/350/"},{"number":349,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/349/"},{"number":348,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/348/"},{"number":347,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/347/"},{"number":346,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/346/"},{"number":345,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/345/"},{"number":344,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/344/"},{"number":343,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/343/"},{"number":342,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/342/"},{"number":341,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/341/"},{"number":340,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/340/"},{"number":339,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/339/"},{"number":338,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/338/"},{"number":337,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/337/"},{"number":336,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/336/"},{"number":335,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/335/"},{"number":334,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/334/"},{"number":333,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/333/"},{"number":332,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/332/"},{"number":331,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/331/"},{"number":330,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/330/"},{"number":329,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/329/"},{"number":328,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/328/"},{"number":327,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/327/"},{"number":326,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/326/"},{"number":325,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/325/"},{"number":324,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/324/"},{"number":323,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/323/"},{"number":322,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/322/"},{"number":321,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/321/"},{"number":320,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/320/"},{"number":319,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/319/"},{"number":318,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/318/"},{"number":317,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/317/"},{"number":316,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/316/"},{"number":315,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/315/"},{"number":314,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/314/"},{"number":313,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/313/"},{"number":312,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/312/"},{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/311/"},{"number":310,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/310/"},{"number":309,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/309/"},{"number":308,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/308/"},{"number":307,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/307/"},{"number":306,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/306/"},{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/305/"},{"number":304,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/304/"},{"number":303,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/303/"},{"number":302,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/302/"},{"number":301,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/301/"},{"number":300,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/300/"},{"number":299,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/299/"},{"number":298,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/298/"},{"number":297,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/297/"},{"number":296,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/296/"},{"number":295,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/295/"},{"number":294,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/294/"},{"number":293,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/293/"},{"number":292,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/292/"},{"number":291,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/291/"},{"number":290,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/290/"},{"number":289,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/289/"},{"number":288,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/288/"},{"number":287,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/287/"},{"number":286,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/286/"},{"number":285,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/285/"},{"number":284,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/284/"},{"number":283,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/283/"},{"number":282,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/282/"},{"number":281,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/281/"},{"number":280,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/280/"},{"number":279,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/279/"},{"number":278,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/278/"},{"number":277,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/277/"},{"number":276,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/276/"},{"number":275,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/275/"},{"number":274,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/274/"},{"number":273,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/273/"},{"number":272,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/272/"},{"number":271,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/271/"},{"number":270,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/270/"},{"number":269,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/269/"},{"number":268,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/268/"},{"number":267,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/267/"},{"number":266,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/266/"},{"number":265,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/265/"},{"number":264,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/264/"},{"number":263,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/263/"},{"number":262,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/262/"}],"color":"red","firstBuild":{"number":262,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/262/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":361,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/361/"},"lastCompletedBuild":{"number":361,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/361/"},"lastFailedBuild":{"number":361,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/361/"},"lastStableBuild":{"number":326,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/326/"},"lastSuccessfulBuild":{"number":326,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/326/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":361,"url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/361/"},"nextBuildNumber":362,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"infra_drupalcron","displayNameOrNull":null,"name":"infra_drupalcron","url":"http://ci.jenkins-ci.org/job/infra_drupalcron/","buildable":true,"builds":[{"number":131640,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131640/"},{"number":131639,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131639/"},{"number":131638,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131638/"},{"number":131637,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131637/"},{"number":131636,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131636/"},{"number":131635,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131635/"},{"number":131634,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131634/"},{"number":131633,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131633/"},{"number":131632,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131632/"},{"number":131631,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131631/"},{"number":131630,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131630/"},{"number":131629,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131629/"},{"number":131628,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131628/"},{"number":131627,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131627/"},{"number":131626,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131626/"},{"number":131625,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131625/"},{"number":131624,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131624/"},{"number":131623,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131623/"},{"number":131622,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131622/"},{"number":131621,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131621/"},{"number":131620,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131620/"},{"number":131619,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131619/"},{"number":131618,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131618/"},{"number":131617,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131617/"},{"number":131616,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131616/"},{"number":131615,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131615/"},{"number":131614,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131614/"},{"number":131613,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131613/"},{"number":131612,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131612/"},{"number":131611,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131611/"},{"number":131610,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131610/"},{"number":131609,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131609/"},{"number":131608,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131608/"},{"number":131607,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131607/"},{"number":131606,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131606/"},{"number":131605,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131605/"},{"number":131604,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131604/"},{"number":131603,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131603/"},{"number":131602,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131602/"},{"number":131601,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131601/"},{"number":131600,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131600/"},{"number":131599,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131599/"},{"number":131598,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131598/"},{"number":131597,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131597/"},{"number":131596,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131596/"},{"number":131595,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131595/"},{"number":131594,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131594/"},{"number":131593,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131593/"},{"number":131592,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131592/"},{"number":131591,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131591/"},{"number":131590,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131590/"},{"number":131589,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131589/"},{"number":131588,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131588/"},{"number":131587,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131587/"},{"number":131586,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131586/"},{"number":131585,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131585/"},{"number":131584,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131584/"},{"number":131583,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131583/"},{"number":131582,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131582/"},{"number":131581,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131581/"},{"number":131580,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131580/"},{"number":131579,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131579/"},{"number":131578,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131578/"},{"number":131577,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131577/"},{"number":131576,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131576/"},{"number":131575,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131575/"},{"number":131574,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131574/"},{"number":131573,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131573/"},{"number":131572,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131572/"},{"number":131571,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131571/"},{"number":131570,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131570/"},{"number":131569,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131569/"},{"number":131568,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131568/"},{"number":131567,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131567/"},{"number":131566,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131566/"},{"number":131565,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131565/"},{"number":131564,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131564/"},{"number":131563,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131563/"},{"number":131562,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131562/"},{"number":131561,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131561/"},{"number":131560,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131560/"},{"number":131559,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131559/"},{"number":131558,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131558/"},{"number":131557,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131557/"},{"number":131556,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131556/"},{"number":131555,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131555/"},{"number":131554,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131554/"},{"number":131553,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131553/"},{"number":131552,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131552/"},{"number":131551,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131551/"},{"number":131550,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131550/"},{"number":131549,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131549/"},{"number":131548,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131548/"},{"number":131547,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131547/"},{"number":131546,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131546/"},{"number":131545,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131545/"},{"number":131544,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131544/"},{"number":131543,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131543/"},{"number":131542,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131542/"},{"number":131541,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131541/"}],"color":"blue","firstBuild":{"number":128976,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/128976/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":131640,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131640/"},"lastCompletedBuild":{"number":131640,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131640/"},"lastFailedBuild":{"number":131355,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131355/"},"lastStableBuild":{"number":131640,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131640/"},"lastSuccessfulBuild":{"number":131640,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131640/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":131355,"url":"http://ci.jenkins-ci.org/job/infra_drupalcron/131355/"},"nextBuildNumber":131641,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"infra_extension-indexer","displayNameOrNull":null,"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","buildable":true,"builds":[{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/104/"},{"number":103,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/103/"},{"number":102,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/102/"},{"number":101,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/101/"},{"number":100,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/100/"},{"number":99,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/99/"},{"number":98,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/98/"},{"number":97,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/97/"},{"number":96,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/96/"},{"number":95,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/95/"},{"number":94,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/94/"},{"number":93,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/93/"},{"number":92,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/92/"},{"number":91,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/91/"},{"number":90,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/90/"},{"number":89,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/89/"},{"number":88,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/88/"},{"number":87,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/87/"},{"number":86,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/86/"},{"number":85,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/85/"},{"number":84,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/84/"},{"number":83,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/83/"},{"number":82,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/82/"},{"number":81,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/81/"},{"number":80,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/80/"},{"number":79,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/79/"},{"number":78,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/78/"},{"number":77,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/77/"},{"number":76,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/76/"},{"number":75,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/75/"},{"number":74,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/74/"},{"number":73,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/73/"},{"number":72,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/72/"},{"number":71,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/71/"},{"number":70,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/70/"},{"number":69,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/69/"},{"number":68,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/68/"},{"number":67,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/67/"},{"number":66,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/66/"},{"number":65,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/65/"},{"number":64,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/64/"},{"number":63,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/63/"},{"number":62,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/62/"},{"number":61,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/61/"},{"number":60,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/60/"},{"number":59,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/59/"},{"number":58,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/58/"},{"number":57,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/57/"},{"number":56,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/56/"},{"number":55,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/55/"},{"number":54,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/54/"},{"number":53,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/53/"},{"number":52,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/52/"},{"number":51,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/51/"},{"number":50,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/50/"},{"number":49,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/49/"},{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/48/"},{"number":47,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/47/"},{"number":46,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/46/"},{"number":45,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/45/"},{"number":44,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/44/"},{"number":43,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/43/"},{"number":42,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/42/"},{"number":41,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/41/"},{"number":40,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/40/"},{"number":39,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/39/"},{"number":38,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/38/"},{"number":37,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/37/"},{"number":36,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/36/"},{"number":35,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/35/"},{"number":34,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/34/"},{"number":33,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/33/"},{"number":32,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/32/"},{"number":31,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/31/"},{"number":30,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/30/"},{"number":29,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/29/"},{"number":28,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/28/"},{"number":27,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/27/"},{"number":26,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/26/"},{"number":25,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/25/"},{"number":24,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/24/"},{"number":23,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/23/"},{"number":22,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/22/"},{"number":21,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/21/"},{"number":20,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/20/"},{"number":19,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/19/"},{"number":18,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/18/"},{"number":17,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/17/"},{"number":16,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/16/"},{"number":15,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/15/"},{"number":14,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/14/"},{"number":13,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/13/"},{"number":12,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/12/"},{"number":11,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/11/"},{"number":10,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/10/"},{"number":9,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/9/"},{"number":8,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/8/"},{"number":7,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/7/"},{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/5/"}],"color":"red","firstBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/5/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/104/"},"lastCompletedBuild":{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/104/"},"lastFailedBuild":{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/104/"},"lastStableBuild":{"number":98,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/98/"},"lastSuccessfulBuild":{"number":98,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/98/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/104/"},"nextBuildNumber":105,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Run the script that generates monthly JSON data into http://jenkins-ci.org/census/","displayName":"infra_generate_monthly_json","displayNameOrNull":null,"name":"infra_generate_monthly_json","url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/","buildable":true,"builds":[{"number":461,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/461/"},{"number":460,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/460/"},{"number":459,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/459/"},{"number":458,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/458/"},{"number":457,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/457/"},{"number":456,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/456/"},{"number":455,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/455/"},{"number":454,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/454/"},{"number":453,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/453/"},{"number":452,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/452/"},{"number":451,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/451/"},{"number":450,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/450/"},{"number":449,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/449/"},{"number":448,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/448/"},{"number":447,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/447/"},{"number":446,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/446/"},{"number":445,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/445/"},{"number":444,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/444/"},{"number":443,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/443/"},{"number":442,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/442/"},{"number":441,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/441/"},{"number":440,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/440/"},{"number":439,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/439/"},{"number":438,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/438/"},{"number":437,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/437/"},{"number":436,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/436/"},{"number":435,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/435/"},{"number":434,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/434/"},{"number":433,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/433/"},{"number":432,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/432/"},{"number":431,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/431/"},{"number":430,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/430/"},{"number":429,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/429/"},{"number":428,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/428/"},{"number":427,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/427/"},{"number":426,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/426/"},{"number":425,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/425/"},{"number":424,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/424/"},{"number":423,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/423/"},{"number":422,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/422/"},{"number":421,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/421/"},{"number":420,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/420/"},{"number":419,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/419/"},{"number":418,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/418/"},{"number":417,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/417/"},{"number":416,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/416/"},{"number":415,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/415/"},{"number":414,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/414/"},{"number":413,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/413/"},{"number":412,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/412/"}],"color":"blue","firstBuild":{"number":412,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/412/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":461,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/461/"},"lastCompletedBuild":{"number":461,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/461/"},"lastFailedBuild":null,"lastStableBuild":{"number":461,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/461/"},"lastSuccessfulBuild":{"number":461,"url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/461/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":462,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"Build <a href=\"http://wiki.jenkins-ci.org/display/JENKINS/GitHub+Repositories\">wiki page</a> listing Jenkins repositories on GitHub","displayName":"infra_github_repository_list","displayNameOrNull":null,"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","buildable":true,"builds":[{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1176/"},{"number":1175,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1175/"},{"number":1174,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1174/"},{"number":1173,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1173/"},{"number":1172,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1172/"},{"number":1171,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1171/"},{"number":1170,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1170/"},{"number":1169,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1169/"},{"number":1168,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1168/"},{"number":1167,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1167/"},{"number":1166,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1166/"},{"number":1165,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1165/"},{"number":1164,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1164/"},{"number":1163,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1163/"},{"number":1162,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1162/"},{"number":1161,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1161/"},{"number":1160,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1160/"},{"number":1159,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1159/"},{"number":1158,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1158/"},{"number":1157,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1157/"},{"number":1156,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1156/"},{"number":1155,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1155/"},{"number":1154,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1154/"},{"number":1153,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1153/"},{"number":1152,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1152/"},{"number":1151,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1151/"},{"number":1150,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1150/"},{"number":1149,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1149/"},{"number":1148,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1148/"},{"number":1147,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1147/"},{"number":1141,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1141/"}],"color":"red","firstBuild":{"number":1141,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1141/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1176/"},"lastCompletedBuild":{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1176/"},"lastFailedBuild":{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1176/"},"lastStableBuild":{"number":1141,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1141/"},"lastSuccessfulBuild":{"number":1141,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1141/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1176,"url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/1176/"},"nextBuildNumber":1177,"property":[{},{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Generate contents for <a href=\"http://javadoc.jenkins-ci.org/\">http://javadoc.jenkins-ci.org/</a>","displayName":"infra_javadoc","displayNameOrNull":null,"name":"infra_javadoc","url":"http://ci.jenkins-ci.org/job/infra_javadoc/","buildable":true,"builds":[{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/1/"},"healthReport":[{"description":"Build stability: 3 out of the last 4 builds failed.","iconUrl":"health-20to39.png","score":25}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/4/"},"lastCompletedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/4/"},"lastFailedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/3/"},"lastStableBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/4/"},"lastSuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/4/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/infra_javadoc/3/"},"nextBuildNumber":5,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"Updates jenkins-ci.org Jekyll website from https://github.com/jenkinsci/jenkins-ci.org","displayName":"infra_jenkins-ci.org_jekyll","displayNameOrNull":null,"name":"infra_jenkins-ci.org_jekyll","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/","buildable":true,"builds":[{"number":6474,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6474/"},{"number":6473,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6473/"},{"number":6472,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6472/"},{"number":6471,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6471/"},{"number":6470,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6470/"},{"number":6469,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6469/"},{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6468/"},{"number":6467,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6467/"},{"number":6466,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6466/"},{"number":6465,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6465/"},{"number":6464,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6464/"},{"number":6463,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6463/"},{"number":6462,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6462/"},{"number":6461,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6461/"},{"number":6460,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6460/"},{"number":6459,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6459/"},{"number":6458,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6458/"},{"number":6457,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6457/"},{"number":6456,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6456/"},{"number":6455,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6455/"},{"number":6454,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6454/"},{"number":6453,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6453/"},{"number":6452,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6452/"},{"number":6451,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6451/"},{"number":6450,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6450/"},{"number":6449,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6449/"},{"number":6448,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6448/"},{"number":6447,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6447/"},{"number":6446,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6446/"},{"number":6445,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6445/"},{"number":6444,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6444/"},{"number":6443,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6443/"},{"number":6442,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6442/"},{"number":6441,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6441/"},{"number":6440,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6440/"},{"number":6439,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6439/"},{"number":6438,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6438/"},{"number":6437,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6437/"},{"number":6436,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6436/"},{"number":6435,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6435/"},{"number":6434,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6434/"},{"number":6433,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6433/"},{"number":6432,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6432/"},{"number":6431,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6431/"},{"number":6430,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6430/"},{"number":6429,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6429/"},{"number":6428,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6428/"},{"number":6427,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6427/"},{"number":6426,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6426/"},{"number":6425,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6425/"}],"color":"blue","firstBuild":{"number":6425,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6425/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":6474,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6474/"},"lastCompletedBuild":{"number":6474,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6474/"},"lastFailedBuild":null,"lastStableBuild":{"number":6474,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6474/"},"lastSuccessfulBuild":{"number":6474,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/6474/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":6475,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"Updates jenkins-ci.org static resources from https://github.com/jenkinsci/backend-jenkins-ci.org-webcontents","displayName":"infra_jenkins-ci.org_webcontents","displayNameOrNull":null,"name":"infra_jenkins-ci.org_webcontents","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/","buildable":true,"builds":[{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1117/"},{"number":1116,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1116/"},{"number":1115,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1115/"},{"number":1114,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1114/"},{"number":1113,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1113/"},{"number":1112,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1112/"},{"number":1111,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1111/"},{"number":1110,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1110/"},{"number":1109,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1109/"},{"number":1108,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1108/"},{"number":1107,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1107/"},{"number":1106,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1106/"},{"number":1105,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1105/"},{"number":1104,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1104/"},{"number":1103,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1103/"},{"number":1102,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1102/"},{"number":1101,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1101/"},{"number":1100,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1100/"},{"number":1099,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1099/"},{"number":1098,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1098/"},{"number":1097,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1097/"},{"number":1096,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1096/"},{"number":1095,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1095/"},{"number":1094,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1094/"},{"number":1093,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1093/"},{"number":1092,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1092/"},{"number":1091,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1091/"},{"number":1090,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1090/"},{"number":1089,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1089/"},{"number":1088,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1088/"},{"number":1087,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1087/"},{"number":1086,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1086/"},{"number":1085,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1085/"},{"number":1084,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1084/"},{"number":1083,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1083/"},{"number":1082,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1082/"},{"number":1081,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1081/"},{"number":1080,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1080/"},{"number":1079,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1079/"},{"number":1078,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1078/"},{"number":1077,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1077/"},{"number":1076,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1076/"},{"number":1075,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1075/"},{"number":1074,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1074/"},{"number":1073,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1073/"},{"number":1072,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1072/"},{"number":1071,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1071/"},{"number":1070,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1070/"},{"number":1069,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1069/"},{"number":1068,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1068/"}],"color":"blue","firstBuild":{"number":1068,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1068/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1117/"},"lastCompletedBuild":{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1117/"},"lastFailedBuild":null,"lastStableBuild":{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1117/"},"lastSuccessfulBuild":{"number":1117,"url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/1117/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":1118,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"","displayName":"infra_main_svn_to_git","displayNameOrNull":null,"name":"infra_main_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/","buildable":false,"builds":[{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/351/"},{"number":350,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/350/"},{"number":349,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/349/"},{"number":348,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/348/"},{"number":347,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/347/"},{"number":346,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/346/"},{"number":345,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/345/"},{"number":344,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/344/"},{"number":343,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/343/"},{"number":342,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/342/"},{"number":341,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/341/"},{"number":340,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/340/"},{"number":339,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/339/"},{"number":338,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/338/"},{"number":337,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/337/"},{"number":336,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/336/"},{"number":335,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/335/"},{"number":334,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/334/"},{"number":333,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/333/"},{"number":332,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/332/"},{"number":331,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/331/"},{"number":330,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/330/"},{"number":329,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/329/"},{"number":328,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/328/"},{"number":327,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/327/"},{"number":326,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/326/"},{"number":325,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/325/"},{"number":324,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/324/"},{"number":323,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/323/"},{"number":322,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/322/"},{"number":321,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/321/"},{"number":320,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/320/"},{"number":319,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/319/"},{"number":318,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/318/"},{"number":317,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/317/"},{"number":316,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/316/"},{"number":315,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/315/"},{"number":314,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/314/"},{"number":313,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/313/"},{"number":312,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/312/"},{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/311/"},{"number":310,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/310/"},{"number":309,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/309/"},{"number":308,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/308/"}],"color":"disabled","firstBuild":{"number":308,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/308/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/351/"},"lastCompletedBuild":{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/351/"},"lastFailedBuild":{"number":343,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/343/"},"lastStableBuild":{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/351/"},"lastSuccessfulBuild":{"number":351,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/351/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":343,"url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/343/"},"nextBuildNumber":352,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{"parameterDefinitions":[{"defaultParameterValue":{"value":""},"description":"Choose the release line to sync","name":"ReleaseLine","type":"ChoiceParameterDefinition","choices":["","-rc","-stable","-stable-rc"]}]},{},{}],"description":"","displayName":"infra_mirroring","displayNameOrNull":null,"name":"infra_mirroring","url":"http://ci.jenkins-ci.org/job/infra_mirroring/","buildable":true,"builds":[{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/305/"},{"number":304,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/304/"},{"number":303,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/303/"},{"number":302,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/302/"},{"number":301,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/301/"},{"number":300,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/300/"},{"number":299,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/299/"},{"number":298,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/298/"},{"number":297,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/297/"},{"number":296,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/296/"},{"number":295,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/295/"},{"number":294,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/294/"},{"number":293,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/293/"},{"number":292,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/292/"},{"number":291,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/291/"},{"number":290,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/290/"},{"number":289,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/289/"},{"number":288,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/288/"},{"number":287,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/287/"},{"number":286,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/286/"},{"number":285,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/285/"},{"number":284,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/284/"},{"number":283,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/283/"},{"number":282,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/282/"},{"number":281,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/281/"},{"number":280,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/280/"},{"number":279,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/279/"},{"number":278,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/278/"},{"number":277,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/277/"},{"number":276,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/276/"},{"number":275,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/275/"},{"number":274,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/274/"},{"number":273,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/273/"},{"number":272,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/272/"},{"number":271,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/271/"},{"number":270,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/270/"},{"number":269,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/269/"},{"number":268,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/268/"},{"number":267,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/267/"},{"number":266,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/266/"},{"number":265,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/265/"},{"number":264,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/264/"},{"number":263,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/263/"},{"number":262,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/262/"},{"number":261,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/261/"},{"number":260,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/260/"},{"number":259,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/259/"},{"number":258,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/258/"},{"number":257,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/257/"},{"number":256,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/256/"}],"color":"blue","firstBuild":{"number":256,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/256/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/305/"},"lastCompletedBuild":{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/305/"},"lastFailedBuild":null,"lastStableBuild":{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/305/"},"lastSuccessfulBuild":{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_mirroring/305/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":306,"property":[{"parameterDefinitions":[{"defaultParameterValue":{"name":"ReleaseLine","value":""},"description":"Choose the release line to sync","name":"ReleaseLine","type":"ChoiceParameterDefinition","choices":["","-rc","-stable","-stable-rc"]}]},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"","displayName":"infra_patron_messages","displayNameOrNull":null,"name":"infra_patron_messages","url":"http://ci.jenkins-ci.org/job/infra_patron_messages/","buildable":true,"builds":[{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/48/"},{"number":47,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/47/"},{"number":46,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/46/"},{"number":45,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/45/"},{"number":44,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/44/"},{"number":43,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/43/"},{"number":42,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/42/"},{"number":41,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/41/"},{"number":40,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/40/"},{"number":39,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/39/"},{"number":38,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/38/"},{"number":37,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/37/"},{"number":36,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/36/"},{"number":35,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/35/"},{"number":34,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/34/"},{"number":33,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/33/"},{"number":32,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/32/"},{"number":31,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/31/"},{"number":30,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/30/"},{"number":29,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/29/"},{"number":28,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/28/"},{"number":27,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/27/"},{"number":26,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/26/"},{"number":25,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/25/"},{"number":24,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/24/"},{"number":23,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/23/"},{"number":22,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/22/"},{"number":21,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/21/"},{"number":20,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/20/"},{"number":19,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/19/"},{"number":18,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/18/"},{"number":17,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/17/"},{"number":16,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/16/"}],"color":"blue","firstBuild":{"number":16,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/16/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/48/"},"lastCompletedBuild":{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/48/"},"lastFailedBuild":null,"lastStableBuild":{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/48/"},"lastSuccessfulBuild":{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_patron_messages/48/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":49,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{},{}],"description":"","displayName":"infra_plugin-compat-tester","displayNameOrNull":null,"name":"infra_plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/","buildable":true,"builds":[{"number":6645,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6645/"},{"number":6644,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6644/"},{"number":6643,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6643/"},{"number":6642,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6642/"},{"number":6641,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6641/"},{"number":6640,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6640/"},{"number":6639,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6639/"},{"number":6638,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6638/"},{"number":6637,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6637/"},{"number":6636,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6636/"}],"color":"blue","firstBuild":{"number":6636,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6636/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 15 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":6645,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6645/"},"lastCompletedBuild":{"number":6645,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6645/"},"lastFailedBuild":null,"lastStableBuild":{"number":6645,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6645/"},"lastSuccessfulBuild":{"number":6645,"url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/6645/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":6646,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.tests:plugins-compat-tester","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester/","color":"blue","displayName":"Plugins compatibility tester"},{"name":"org.jenkins-ci.tests:plugins-compat-tester-aggregator","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester-aggregator/","color":"blue","displayName":"Plugins compatibility tester Aggregator"},{"name":"org.jenkins-ci.tests:plugins-compat-tester-cli","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester-cli/","color":"blue","displayName":"Plugins compatibility tester CLI"},{"name":"org.jenkins-ci.tests:plugins-compat-tester-gae","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester-gae/","color":"blue","displayName":"Plugins compatibility tester for Google App Engine"},{"name":"org.jenkins-ci.tests:plugins-compat-tester-gae-client","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester-gae-client/","color":"blue","displayName":"Plugins compatibility tester for Google App Engine client side API"},{"name":"org.jenkins-ci.tests:plugins-compat-tester-model","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/org.jenkins-ci.tests$plugins-compat-tester-model/","color":"blue","displayName":"Plugins compatibility tester model layer"}]},{"actions":[{},{}],"description":"Generate report to publish on the <a href=\"https://wiki.jenkins-ci.org/display/JENKINS/Unreleased+Plugin+Changes\">wiki</a>","displayName":"infra_plugin_changes_report","displayNameOrNull":null,"name":"infra_plugin_changes_report","url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/","buildable":true,"builds":[{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/311/"},{"number":310,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/310/"},{"number":309,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/309/"},{"number":308,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/308/"},{"number":307,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/307/"},{"number":306,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/306/"},{"number":305,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/305/"},{"number":304,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/304/"},{"number":303,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/303/"},{"number":302,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/302/"},{"number":301,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/301/"},{"number":300,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/300/"},{"number":299,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/299/"},{"number":298,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/298/"},{"number":297,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/297/"},{"number":296,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/296/"},{"number":295,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/295/"},{"number":294,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/294/"},{"number":293,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/293/"},{"number":292,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/292/"},{"number":291,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/291/"},{"number":290,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/290/"},{"number":289,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/289/"},{"number":288,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/288/"},{"number":287,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/287/"},{"number":286,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/286/"},{"number":285,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/285/"},{"number":284,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/284/"},{"number":283,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/283/"},{"number":282,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/282/"},{"number":281,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/281/"},{"number":280,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/280/"},{"number":279,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/279/"},{"number":278,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/278/"},{"number":277,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/277/"},{"number":276,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/276/"},{"number":275,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/275/"},{"number":274,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/274/"},{"number":273,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/273/"},{"number":272,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/272/"},{"number":271,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/271/"},{"number":270,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/270/"},{"number":269,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/269/"},{"number":268,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/268/"},{"number":267,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/267/"},{"number":266,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/266/"},{"number":265,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/265/"},{"number":264,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/264/"},{"number":263,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/263/"},{"number":262,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/262/"},{"number":140,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/140/"}],"color":"red","firstBuild":{"number":140,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/140/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/311/"},"lastCompletedBuild":{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/311/"},"lastFailedBuild":{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/311/"},"lastStableBuild":{"number":304,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/304/"},"lastSuccessfulBuild":{"number":304,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/304/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":311,"url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/311/"},"nextBuildNumber":312,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"infra_pluginmirror","displayNameOrNull":null,"name":"infra_pluginmirror","url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/","buildable":true,"builds":[{"number":57610,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57610/"},{"number":57609,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57609/"},{"number":57608,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57608/"},{"number":57607,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57607/"},{"number":57606,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57606/"},{"number":57605,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57605/"},{"number":57604,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57604/"},{"number":57603,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57603/"},{"number":57602,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57602/"},{"number":57601,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57601/"},{"number":57600,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57600/"},{"number":57599,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57599/"},{"number":57598,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57598/"},{"number":57597,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57597/"},{"number":57596,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57596/"},{"number":57595,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57595/"},{"number":57594,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57594/"},{"number":57593,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57593/"},{"number":57592,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57592/"},{"number":57591,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57591/"},{"number":57590,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57590/"},{"number":57589,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57589/"},{"number":57588,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57588/"},{"number":57587,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57587/"},{"number":57586,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57586/"},{"number":57585,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57585/"},{"number":57584,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57584/"},{"number":57583,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57583/"},{"number":57582,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57582/"},{"number":57581,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57581/"},{"number":57580,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57580/"},{"number":57579,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57579/"},{"number":57578,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57578/"},{"number":57577,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57577/"},{"number":57576,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57576/"},{"number":57575,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57575/"},{"number":57574,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57574/"},{"number":57573,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57573/"},{"number":57572,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57572/"},{"number":57571,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57571/"},{"number":57570,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57570/"},{"number":57569,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57569/"},{"number":57568,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57568/"},{"number":57567,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57567/"},{"number":57566,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57566/"},{"number":57565,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57565/"},{"number":57564,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57564/"},{"number":57563,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57563/"},{"number":57562,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57562/"},{"number":57561,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57561/"},{"number":57560,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57560/"},{"number":57559,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57559/"},{"number":57558,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57558/"},{"number":57557,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57557/"},{"number":57556,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57556/"},{"number":57555,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57555/"},{"number":57554,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57554/"},{"number":57553,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57553/"},{"number":57552,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57552/"},{"number":57551,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57551/"},{"number":57550,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57550/"},{"number":57549,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57549/"},{"number":57548,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57548/"},{"number":57547,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57547/"},{"number":57546,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57546/"},{"number":57545,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57545/"},{"number":57544,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57544/"},{"number":57543,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57543/"},{"number":57542,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57542/"},{"number":57541,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57541/"},{"number":57540,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57540/"},{"number":57539,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57539/"},{"number":57538,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57538/"},{"number":57537,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57537/"},{"number":57536,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57536/"},{"number":57535,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57535/"},{"number":57534,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57534/"},{"number":57533,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57533/"},{"number":57532,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57532/"},{"number":57531,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57531/"},{"number":57530,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57530/"},{"number":57529,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57529/"},{"number":57528,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57528/"},{"number":57527,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57527/"},{"number":57526,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57526/"},{"number":57525,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57525/"},{"number":57524,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57524/"},{"number":57523,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57523/"},{"number":57522,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57522/"},{"number":57521,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57521/"},{"number":57520,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57520/"},{"number":57519,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57519/"},{"number":57518,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57518/"},{"number":57517,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57517/"},{"number":57516,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57516/"},{"number":57515,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57515/"},{"number":57514,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57514/"},{"number":57513,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57513/"},{"number":57512,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57512/"},{"number":57511,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57511/"}],"color":"blue","firstBuild":{"number":57511,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57511/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":57610,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57610/"},"lastCompletedBuild":{"number":57610,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57610/"},"lastFailedBuild":null,"lastStableBuild":{"number":57610,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57610/"},"lastSuccessfulBuild":{"number":57610,"url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/57610/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":57611,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"","displayName":"infra_plugins_svn_to_git","displayNameOrNull":null,"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","buildable":false,"builds":[{"number":768,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/768/"},{"number":767,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/767/"},{"number":766,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/766/"},{"number":765,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/765/"},{"number":764,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/764/"},{"number":763,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/763/"},{"number":762,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/762/"},{"number":761,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/761/"},{"number":760,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/760/"},{"number":759,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/759/"},{"number":758,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/758/"},{"number":757,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/757/"},{"number":756,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/756/"},{"number":755,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/755/"},{"number":754,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/754/"},{"number":753,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/753/"},{"number":752,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/752/"},{"number":751,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/751/"},{"number":750,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/750/"},{"number":749,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/749/"},{"number":748,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/748/"},{"number":747,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/747/"},{"number":746,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/746/"},{"number":745,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/745/"},{"number":744,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/744/"},{"number":743,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/743/"},{"number":742,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/742/"},{"number":741,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/741/"},{"number":740,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/740/"},{"number":739,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/739/"},{"number":738,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/738/"},{"number":737,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/737/"},{"number":736,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/736/"},{"number":735,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/735/"},{"number":734,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/734/"},{"number":733,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/733/"},{"number":732,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/732/"},{"number":731,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/731/"},{"number":730,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/730/"},{"number":729,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/729/"},{"number":728,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/728/"},{"number":727,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/727/"},{"number":726,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/726/"},{"number":725,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/725/"},{"number":724,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/724/"},{"number":723,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/723/"},{"number":722,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/722/"},{"number":721,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/721/"},{"number":720,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/720/"},{"number":719,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/719/"},{"number":718,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/718/"},{"number":717,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/717/"},{"number":716,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/716/"},{"number":715,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/715/"},{"number":714,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/714/"},{"number":713,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/713/"},{"number":712,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/712/"},{"number":711,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/711/"},{"number":710,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/710/"},{"number":709,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/709/"},{"number":708,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/708/"},{"number":707,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/707/"},{"number":706,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/706/"},{"number":705,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/705/"},{"number":704,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/704/"},{"number":703,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/703/"},{"number":702,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/702/"},{"number":701,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/701/"},{"number":700,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/700/"},{"number":699,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/699/"},{"number":698,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/698/"},{"number":697,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/697/"},{"number":696,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/696/"},{"number":695,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/695/"},{"number":694,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/694/"},{"number":693,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/693/"},{"number":692,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/692/"},{"number":691,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/691/"},{"number":690,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/690/"},{"number":689,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/689/"},{"number":688,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/688/"},{"number":687,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/687/"},{"number":686,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/686/"},{"number":685,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/685/"},{"number":684,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/684/"},{"number":683,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/683/"},{"number":682,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/682/"},{"number":681,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/681/"},{"number":680,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/680/"},{"number":679,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/679/"},{"number":678,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/678/"},{"number":677,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/677/"},{"number":676,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/676/"},{"number":675,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/675/"},{"number":674,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/674/"},{"number":673,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/673/"},{"number":672,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/672/"},{"number":671,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/671/"},{"number":670,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/670/"},{"number":669,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/669/"}],"color":"disabled","firstBuild":{"number":564,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/564/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":768,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/768/"},"lastCompletedBuild":{"number":768,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/768/"},"lastFailedBuild":{"number":768,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/768/"},"lastStableBuild":{"number":593,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/593/"},"lastSuccessfulBuild":{"number":593,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/593/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":768,"url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/768/"},"nextBuildNumber":769,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Updates contents from java.net maven2 repository via \"svn up\"","displayName":"infra_pull_m2repo","displayNameOrNull":null,"name":"infra_pull_m2repo","url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/","buildable":true,"builds":[{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/1/"}],"color":"aborted","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/1/"},"healthReport":[],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/1/"},"lastCompletedBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/1/"},"lastFailedBuild":null,"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/1/"},"nextBuildNumber":2,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"download.hudson-labs.org is no longer in use.","displayName":"infra_pull_releases","displayNameOrNull":null,"name":"infra_pull_releases","url":"http://ci.jenkins-ci.org/job/infra_pull_releases/","buildable":false,"builds":[{"number":5716,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5716/"},{"number":5715,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5715/"},{"number":5714,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5714/"},{"number":5713,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5713/"},{"number":5712,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5712/"},{"number":5711,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5711/"},{"number":5710,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5710/"},{"number":5709,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5709/"},{"number":5708,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5708/"},{"number":5707,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5707/"},{"number":5706,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5706/"},{"number":5705,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5705/"},{"number":5704,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5704/"},{"number":5703,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5703/"},{"number":5702,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5702/"},{"number":5701,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5701/"},{"number":5700,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5700/"},{"number":5699,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5699/"},{"number":5698,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5698/"},{"number":5697,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5697/"},{"number":5696,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5696/"},{"number":5695,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5695/"},{"number":5694,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5694/"},{"number":5693,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5693/"},{"number":5692,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5692/"},{"number":5691,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5691/"},{"number":5690,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5690/"},{"number":5689,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5689/"},{"number":5688,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5688/"},{"number":5687,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5687/"},{"number":5686,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5686/"},{"number":5685,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5685/"},{"number":5684,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5684/"},{"number":5683,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5683/"},{"number":5682,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5682/"},{"number":5681,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5681/"},{"number":5680,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5680/"},{"number":5679,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5679/"},{"number":5678,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5678/"},{"number":5677,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5677/"},{"number":5676,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5676/"},{"number":5675,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5675/"},{"number":5674,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5674/"},{"number":5673,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5673/"},{"number":5672,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5672/"},{"number":5671,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5671/"},{"number":5670,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5670/"},{"number":5669,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5669/"},{"number":5668,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5668/"},{"number":5667,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5667/"},{"number":5666,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5666/"},{"number":5665,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5665/"},{"number":5664,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5664/"},{"number":5663,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5663/"},{"number":5662,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5662/"},{"number":5661,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5661/"},{"number":5660,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5660/"},{"number":5659,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5659/"},{"number":5658,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5658/"},{"number":5657,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5657/"},{"number":5656,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5656/"},{"number":5655,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5655/"},{"number":5654,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5654/"},{"number":5653,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5653/"},{"number":5652,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5652/"},{"number":5651,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5651/"},{"number":5650,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5650/"},{"number":5649,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5649/"},{"number":5648,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5648/"},{"number":5647,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5647/"},{"number":5646,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5646/"},{"number":5645,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5645/"},{"number":5644,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5644/"},{"number":5643,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5643/"},{"number":5642,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5642/"},{"number":5641,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5641/"},{"number":5640,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5640/"},{"number":5639,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5639/"},{"number":5638,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5638/"},{"number":5637,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5637/"},{"number":5636,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5636/"},{"number":5635,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5635/"},{"number":5634,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5634/"},{"number":5633,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5633/"},{"number":5632,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5632/"},{"number":5631,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5631/"},{"number":5630,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5630/"},{"number":5629,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5629/"},{"number":5628,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5628/"},{"number":5627,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5627/"},{"number":5626,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5626/"},{"number":5625,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5625/"},{"number":5624,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5624/"},{"number":5623,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5623/"},{"number":5622,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5622/"},{"number":5621,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5621/"},{"number":5620,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5620/"},{"number":5619,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5619/"},{"number":5618,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5618/"},{"number":5617,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5617/"}],"color":"disabled","firstBuild":{"number":5513,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5513/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":5716,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5716/"},"lastCompletedBuild":{"number":5716,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5716/"},"lastFailedBuild":null,"lastStableBuild":{"number":5716,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5716/"},"lastSuccessfulBuild":{"number":5716,"url":"http://ci.jenkins-ci.org/job/infra_pull_releases/5716/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":5717,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"Generates <a href=\"http://jenkins-ci.org/releases.rss\">http://jenkins-ci.org/releases.rss</a> that eventually feeds into <a href=\"http://twitter.com/#!/jenkins_release\">the twitter bot</a>","displayName":"infra_release.rss","displayNameOrNull":null,"name":"infra_release.rss","url":"http://ci.jenkins-ci.org/job/infra_release.rss/","buildable":true,"builds":[{"number":6908,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6908/"},{"number":6907,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6907/"},{"number":6906,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6906/"},{"number":6905,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6905/"},{"number":6904,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6904/"},{"number":6903,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6903/"},{"number":6902,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6902/"},{"number":6901,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6901/"},{"number":6900,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6900/"},{"number":6899,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6899/"},{"number":6898,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6898/"},{"number":6897,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6897/"},{"number":6896,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6896/"},{"number":6895,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6895/"},{"number":6894,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6894/"},{"number":6893,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6893/"},{"number":6892,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6892/"},{"number":6891,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6891/"},{"number":6890,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6890/"},{"number":6889,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6889/"},{"number":6888,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6888/"},{"number":6887,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6887/"},{"number":6886,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6886/"},{"number":6885,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6885/"},{"number":6884,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6884/"},{"number":6883,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6883/"},{"number":6882,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6882/"},{"number":6881,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6881/"},{"number":6880,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6880/"},{"number":6879,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6879/"},{"number":6878,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6878/"},{"number":6877,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6877/"},{"number":6876,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6876/"},{"number":6875,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6875/"},{"number":6874,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6874/"},{"number":6873,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6873/"},{"number":6872,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6872/"},{"number":6871,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6871/"},{"number":6870,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6870/"},{"number":6869,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6869/"},{"number":6868,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6868/"},{"number":6867,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6867/"},{"number":6866,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6866/"},{"number":6865,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6865/"},{"number":6864,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6864/"},{"number":6863,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6863/"},{"number":6862,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6862/"},{"number":6861,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6861/"},{"number":6860,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6860/"},{"number":6859,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6859/"},{"number":6858,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6858/"},{"number":6857,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6857/"},{"number":6856,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6856/"},{"number":6855,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6855/"},{"number":6854,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6854/"},{"number":6853,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6853/"},{"number":6852,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6852/"},{"number":6851,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6851/"},{"number":6850,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6850/"},{"number":6849,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6849/"},{"number":6848,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6848/"},{"number":6847,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6847/"},{"number":6846,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6846/"},{"number":6845,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6845/"},{"number":6844,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6844/"},{"number":6843,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6843/"},{"number":6842,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6842/"},{"number":6841,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6841/"},{"number":6840,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6840/"},{"number":6839,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6839/"},{"number":6838,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6838/"},{"number":6837,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6837/"},{"number":6836,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6836/"},{"number":6835,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6835/"},{"number":6834,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6834/"},{"number":6833,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6833/"},{"number":6832,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6832/"},{"number":6831,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6831/"},{"number":6830,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6830/"},{"number":6829,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6829/"},{"number":6828,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6828/"},{"number":6827,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6827/"},{"number":6826,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6826/"},{"number":6825,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6825/"},{"number":6824,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6824/"},{"number":6823,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6823/"},{"number":6822,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6822/"},{"number":6821,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6821/"},{"number":6820,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6820/"},{"number":6819,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6819/"},{"number":6818,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6818/"},{"number":6817,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6817/"},{"number":6816,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6816/"},{"number":6815,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6815/"},{"number":6814,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6814/"},{"number":6813,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6813/"},{"number":6812,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6812/"},{"number":6811,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6811/"},{"number":6810,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6810/"},{"number":6809,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6809/"}],"color":"blue","firstBuild":{"number":6732,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6732/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":6908,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6908/"},"lastCompletedBuild":{"number":6908,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6908/"},"lastFailedBuild":{"number":6891,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6891/"},"lastStableBuild":{"number":6908,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6908/"},"lastSuccessfulBuild":{"number":6908,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6908/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":6891,"url":"http://ci.jenkins-ci.org/job/infra_release.rss/6891/"},"nextBuildNumber":6909,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Triggers the maven index regeneration on repo.jenkins-ci.org","displayName":"infra_repo.jenkins-ci.org_maven_index","displayNameOrNull":null,"name":"infra_repo.jenkins-ci.org_maven_index","url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/","buildable":true,"builds":[{"number":4688,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4688/"},{"number":4687,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4687/"},{"number":4686,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4686/"},{"number":4685,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4685/"},{"number":4684,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4684/"},{"number":4683,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4683/"},{"number":4682,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4682/"},{"number":4681,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4681/"},{"number":4680,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4680/"},{"number":4679,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4679/"},{"number":4678,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4678/"},{"number":4677,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4677/"},{"number":4676,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4676/"},{"number":4675,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4675/"},{"number":4674,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4674/"},{"number":4673,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4673/"},{"number":4672,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4672/"},{"number":4671,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4671/"},{"number":4670,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4670/"},{"number":4669,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4669/"},{"number":4668,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4668/"},{"number":4667,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4667/"},{"number":4666,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4666/"},{"number":4665,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4665/"},{"number":4664,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4664/"},{"number":4663,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4663/"},{"number":4662,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4662/"},{"number":4661,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4661/"},{"number":4660,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4660/"},{"number":4659,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4659/"},{"number":4658,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4658/"},{"number":4657,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4657/"},{"number":4656,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4656/"},{"number":4655,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4655/"},{"number":4654,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4654/"},{"number":4653,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4653/"},{"number":4652,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4652/"},{"number":4651,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4651/"},{"number":4650,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4650/"},{"number":4649,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4649/"},{"number":4648,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4648/"},{"number":4647,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4647/"},{"number":4646,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4646/"},{"number":4645,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4645/"},{"number":4644,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4644/"},{"number":4643,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4643/"},{"number":4642,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4642/"},{"number":4641,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4641/"},{"number":4640,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4640/"},{"number":4639,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4639/"},{"number":4638,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4638/"},{"number":4637,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4637/"},{"number":4636,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4636/"},{"number":4635,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4635/"},{"number":4634,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4634/"},{"number":4633,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4633/"},{"number":4632,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4632/"},{"number":4631,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4631/"},{"number":4630,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4630/"},{"number":4629,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4629/"},{"number":4628,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4628/"},{"number":4627,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4627/"},{"number":4626,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4626/"},{"number":4625,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4625/"},{"number":4624,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4624/"},{"number":4623,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4623/"},{"number":4622,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4622/"},{"number":4621,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4621/"},{"number":4620,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4620/"},{"number":4619,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4619/"},{"number":4618,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4618/"},{"number":4617,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4617/"},{"number":4616,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4616/"},{"number":4615,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4615/"},{"number":4614,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4614/"},{"number":4613,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4613/"},{"number":4612,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4612/"},{"number":4611,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4611/"},{"number":4610,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4610/"},{"number":4609,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4609/"},{"number":4608,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4608/"},{"number":4607,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4607/"},{"number":4606,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4606/"},{"number":4605,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4605/"},{"number":4604,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4604/"},{"number":4603,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4603/"},{"number":4602,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4602/"},{"number":4601,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4601/"},{"number":4600,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4600/"},{"number":4599,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4599/"},{"number":4598,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4598/"},{"number":4597,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4597/"},{"number":4596,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4596/"},{"number":4595,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4595/"},{"number":4594,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4594/"},{"number":4593,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4593/"},{"number":4592,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4592/"},{"number":4591,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4591/"},{"number":4590,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4590/"},{"number":4589,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4589/"}],"color":"blue","firstBuild":{"number":4589,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4589/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4688,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4688/"},"lastCompletedBuild":{"number":4688,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4688/"},"lastFailedBuild":null,"lastStableBuild":{"number":4688,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4688/"},"lastSuccessfulBuild":{"number":4688,"url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/4688/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":4689,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"","displayName":"infra_robobutler","displayNameOrNull":null,"name":"infra_robobutler","url":"http://ci.jenkins-ci.org/job/infra_robobutler/","buildable":true,"builds":[{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/1/"},"healthReport":[{"description":"Build stability: 3 out of the last 5 builds failed.","iconUrl":"health-20to39.png","score":40}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/6/"},"lastCompletedBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/6/"},"lastFailedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/4/"},"lastStableBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/6/"},"lastSuccessfulBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/6/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/infra_robobutler/4/"},"nextBuildNumber":7,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Executes <a href=\"https://github.com/jenkinsci/infra-statistics\">stat collection/generation</a>\r\nand <a href=\"http://stats.jenkins-ci.org/plugin-installation-trend/\">push the results to stats.jenkins-ci.org</a>","displayName":"infra_statistics","displayNameOrNull":null,"name":"infra_statistics","url":"http://ci.jenkins-ci.org/job/infra_statistics/","buildable":true,"builds":[{"number":127,"url":"http://ci.jenkins-ci.org/job/infra_statistics/127/"},{"number":126,"url":"http://ci.jenkins-ci.org/job/infra_statistics/126/"},{"number":125,"url":"http://ci.jenkins-ci.org/job/infra_statistics/125/"},{"number":124,"url":"http://ci.jenkins-ci.org/job/infra_statistics/124/"},{"number":123,"url":"http://ci.jenkins-ci.org/job/infra_statistics/123/"},{"number":122,"url":"http://ci.jenkins-ci.org/job/infra_statistics/122/"},{"number":121,"url":"http://ci.jenkins-ci.org/job/infra_statistics/121/"},{"number":120,"url":"http://ci.jenkins-ci.org/job/infra_statistics/120/"},{"number":119,"url":"http://ci.jenkins-ci.org/job/infra_statistics/119/"},{"number":118,"url":"http://ci.jenkins-ci.org/job/infra_statistics/118/"},{"number":117,"url":"http://ci.jenkins-ci.org/job/infra_statistics/117/"},{"number":116,"url":"http://ci.jenkins-ci.org/job/infra_statistics/116/"},{"number":115,"url":"http://ci.jenkins-ci.org/job/infra_statistics/115/"},{"number":114,"url":"http://ci.jenkins-ci.org/job/infra_statistics/114/"},{"number":113,"url":"http://ci.jenkins-ci.org/job/infra_statistics/113/"},{"number":112,"url":"http://ci.jenkins-ci.org/job/infra_statistics/112/"},{"number":111,"url":"http://ci.jenkins-ci.org/job/infra_statistics/111/"},{"number":110,"url":"http://ci.jenkins-ci.org/job/infra_statistics/110/"},{"number":109,"url":"http://ci.jenkins-ci.org/job/infra_statistics/109/"},{"number":108,"url":"http://ci.jenkins-ci.org/job/infra_statistics/108/"},{"number":107,"url":"http://ci.jenkins-ci.org/job/infra_statistics/107/"},{"number":106,"url":"http://ci.jenkins-ci.org/job/infra_statistics/106/"},{"number":105,"url":"http://ci.jenkins-ci.org/job/infra_statistics/105/"},{"number":104,"url":"http://ci.jenkins-ci.org/job/infra_statistics/104/"},{"number":103,"url":"http://ci.jenkins-ci.org/job/infra_statistics/103/"},{"number":102,"url":"http://ci.jenkins-ci.org/job/infra_statistics/102/"},{"number":101,"url":"http://ci.jenkins-ci.org/job/infra_statistics/101/"},{"number":100,"url":"http://ci.jenkins-ci.org/job/infra_statistics/100/"},{"number":99,"url":"http://ci.jenkins-ci.org/job/infra_statistics/99/"},{"number":98,"url":"http://ci.jenkins-ci.org/job/infra_statistics/98/"},{"number":97,"url":"http://ci.jenkins-ci.org/job/infra_statistics/97/"},{"number":96,"url":"http://ci.jenkins-ci.org/job/infra_statistics/96/"},{"number":95,"url":"http://ci.jenkins-ci.org/job/infra_statistics/95/"},{"number":94,"url":"http://ci.jenkins-ci.org/job/infra_statistics/94/"},{"number":93,"url":"http://ci.jenkins-ci.org/job/infra_statistics/93/"},{"number":92,"url":"http://ci.jenkins-ci.org/job/infra_statistics/92/"},{"number":91,"url":"http://ci.jenkins-ci.org/job/infra_statistics/91/"},{"number":90,"url":"http://ci.jenkins-ci.org/job/infra_statistics/90/"},{"number":89,"url":"http://ci.jenkins-ci.org/job/infra_statistics/89/"},{"number":88,"url":"http://ci.jenkins-ci.org/job/infra_statistics/88/"},{"number":87,"url":"http://ci.jenkins-ci.org/job/infra_statistics/87/"},{"number":86,"url":"http://ci.jenkins-ci.org/job/infra_statistics/86/"},{"number":85,"url":"http://ci.jenkins-ci.org/job/infra_statistics/85/"},{"number":84,"url":"http://ci.jenkins-ci.org/job/infra_statistics/84/"},{"number":83,"url":"http://ci.jenkins-ci.org/job/infra_statistics/83/"},{"number":82,"url":"http://ci.jenkins-ci.org/job/infra_statistics/82/"},{"number":81,"url":"http://ci.jenkins-ci.org/job/infra_statistics/81/"},{"number":80,"url":"http://ci.jenkins-ci.org/job/infra_statistics/80/"},{"number":79,"url":"http://ci.jenkins-ci.org/job/infra_statistics/79/"},{"number":78,"url":"http://ci.jenkins-ci.org/job/infra_statistics/78/"},{"number":77,"url":"http://ci.jenkins-ci.org/job/infra_statistics/77/"},{"number":76,"url":"http://ci.jenkins-ci.org/job/infra_statistics/76/"},{"number":75,"url":"http://ci.jenkins-ci.org/job/infra_statistics/75/"},{"number":74,"url":"http://ci.jenkins-ci.org/job/infra_statistics/74/"},{"number":73,"url":"http://ci.jenkins-ci.org/job/infra_statistics/73/"},{"number":72,"url":"http://ci.jenkins-ci.org/job/infra_statistics/72/"},{"number":71,"url":"http://ci.jenkins-ci.org/job/infra_statistics/71/"},{"number":70,"url":"http://ci.jenkins-ci.org/job/infra_statistics/70/"},{"number":69,"url":"http://ci.jenkins-ci.org/job/infra_statistics/69/"},{"number":68,"url":"http://ci.jenkins-ci.org/job/infra_statistics/68/"},{"number":67,"url":"http://ci.jenkins-ci.org/job/infra_statistics/67/"},{"number":66,"url":"http://ci.jenkins-ci.org/job/infra_statistics/66/"},{"number":65,"url":"http://ci.jenkins-ci.org/job/infra_statistics/65/"},{"number":64,"url":"http://ci.jenkins-ci.org/job/infra_statistics/64/"},{"number":63,"url":"http://ci.jenkins-ci.org/job/infra_statistics/63/"},{"number":62,"url":"http://ci.jenkins-ci.org/job/infra_statistics/62/"},{"number":61,"url":"http://ci.jenkins-ci.org/job/infra_statistics/61/"},{"number":60,"url":"http://ci.jenkins-ci.org/job/infra_statistics/60/"},{"number":59,"url":"http://ci.jenkins-ci.org/job/infra_statistics/59/"},{"number":58,"url":"http://ci.jenkins-ci.org/job/infra_statistics/58/"},{"number":57,"url":"http://ci.jenkins-ci.org/job/infra_statistics/57/"},{"number":56,"url":"http://ci.jenkins-ci.org/job/infra_statistics/56/"},{"number":55,"url":"http://ci.jenkins-ci.org/job/infra_statistics/55/"},{"number":54,"url":"http://ci.jenkins-ci.org/job/infra_statistics/54/"},{"number":53,"url":"http://ci.jenkins-ci.org/job/infra_statistics/53/"},{"number":52,"url":"http://ci.jenkins-ci.org/job/infra_statistics/52/"},{"number":51,"url":"http://ci.jenkins-ci.org/job/infra_statistics/51/"},{"number":50,"url":"http://ci.jenkins-ci.org/job/infra_statistics/50/"},{"number":49,"url":"http://ci.jenkins-ci.org/job/infra_statistics/49/"},{"number":48,"url":"http://ci.jenkins-ci.org/job/infra_statistics/48/"},{"number":47,"url":"http://ci.jenkins-ci.org/job/infra_statistics/47/"},{"number":46,"url":"http://ci.jenkins-ci.org/job/infra_statistics/46/"},{"number":45,"url":"http://ci.jenkins-ci.org/job/infra_statistics/45/"},{"number":44,"url":"http://ci.jenkins-ci.org/job/infra_statistics/44/"},{"number":43,"url":"http://ci.jenkins-ci.org/job/infra_statistics/43/"},{"number":42,"url":"http://ci.jenkins-ci.org/job/infra_statistics/42/"},{"number":41,"url":"http://ci.jenkins-ci.org/job/infra_statistics/41/"},{"number":40,"url":"http://ci.jenkins-ci.org/job/infra_statistics/40/"},{"number":39,"url":"http://ci.jenkins-ci.org/job/infra_statistics/39/"},{"number":38,"url":"http://ci.jenkins-ci.org/job/infra_statistics/38/"},{"number":37,"url":"http://ci.jenkins-ci.org/job/infra_statistics/37/"},{"number":36,"url":"http://ci.jenkins-ci.org/job/infra_statistics/36/"},{"number":35,"url":"http://ci.jenkins-ci.org/job/infra_statistics/35/"},{"number":34,"url":"http://ci.jenkins-ci.org/job/infra_statistics/34/"},{"number":33,"url":"http://ci.jenkins-ci.org/job/infra_statistics/33/"},{"number":32,"url":"http://ci.jenkins-ci.org/job/infra_statistics/32/"},{"number":31,"url":"http://ci.jenkins-ci.org/job/infra_statistics/31/"},{"number":30,"url":"http://ci.jenkins-ci.org/job/infra_statistics/30/"},{"number":29,"url":"http://ci.jenkins-ci.org/job/infra_statistics/29/"},{"number":28,"url":"http://ci.jenkins-ci.org/job/infra_statistics/28/"}],"color":"blue","firstBuild":{"number":28,"url":"http://ci.jenkins-ci.org/job/infra_statistics/28/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":127,"url":"http://ci.jenkins-ci.org/job/infra_statistics/127/"},"lastCompletedBuild":{"number":127,"url":"http://ci.jenkins-ci.org/job/infra_statistics/127/"},"lastFailedBuild":{"number":57,"url":"http://ci.jenkins-ci.org/job/infra_statistics/57/"},"lastStableBuild":{"number":127,"url":"http://ci.jenkins-ci.org/job/infra_statistics/127/"},"lastSuccessfulBuild":{"number":127,"url":"http://ci.jenkins-ci.org/job/infra_statistics/127/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":102,"url":"http://ci.jenkins-ci.org/job/infra_statistics/102/"},"nextBuildNumber":128,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"infra_checkout_stats","url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/","color":"blue"}],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Synchronize the local anonymous Subversion mirror","displayName":"infra_svnsync","displayNameOrNull":null,"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","buildable":false,"builds":[{"number":21243,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21243/"},{"number":21242,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21242/"},{"number":21241,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21241/"},{"number":21240,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21240/"},{"number":21239,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21239/"},{"number":21238,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21238/"},{"number":21237,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21237/"},{"number":21236,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21236/"},{"number":21235,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21235/"},{"number":21234,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21234/"},{"number":21233,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21233/"},{"number":21232,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21232/"},{"number":21231,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21231/"},{"number":21230,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21230/"},{"number":21229,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21229/"},{"number":21228,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21228/"},{"number":21227,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21227/"},{"number":21226,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21226/"},{"number":21225,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21225/"},{"number":21224,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21224/"},{"number":21223,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21223/"},{"number":21222,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21222/"},{"number":21221,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21221/"},{"number":21220,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21220/"},{"number":21219,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21219/"},{"number":21218,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21218/"},{"number":21217,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21217/"},{"number":21216,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21216/"},{"number":21215,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21215/"},{"number":21214,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21214/"},{"number":21213,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21213/"},{"number":21212,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21212/"},{"number":21211,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21211/"},{"number":21210,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21210/"},{"number":21209,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21209/"},{"number":21208,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21208/"},{"number":21207,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21207/"},{"number":21206,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21206/"},{"number":21205,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21205/"},{"number":21204,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21204/"},{"number":21203,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21203/"},{"number":21202,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21202/"},{"number":21201,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21201/"},{"number":21200,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21200/"},{"number":21199,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21199/"},{"number":21198,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21198/"},{"number":21197,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21197/"},{"number":21196,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21196/"},{"number":21195,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21195/"},{"number":21194,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21194/"}],"color":"disabled","firstBuild":{"number":21194,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21194/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":21243,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21243/"},"lastCompletedBuild":{"number":21243,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21243/"},"lastFailedBuild":{"number":21243,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21243/"},"lastStableBuild":{"number":21199,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21199/"},"lastSuccessfulBuild":{"number":21199,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21199/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":21243,"url":"http://ci.jenkins-ci.org/job/infra_svnsync/21243/"},"nextBuildNumber":21244,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"Update web server directory for http://jenkins-ci.org/maven-hpi-plugin/","displayName":"infra_sync_maven-hpi-plugin_www","displayNameOrNull":null,"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","buildable":true,"builds":[{"number":177,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/177/"},{"number":176,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/176/"},{"number":175,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/175/"},{"number":174,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/174/"},{"number":173,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/173/"},{"number":172,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/172/"},{"number":171,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/171/"},{"number":170,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/170/"},{"number":169,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/169/"},{"number":168,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/168/"},{"number":167,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/167/"},{"number":166,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/166/"},{"number":165,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/165/"},{"number":164,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/164/"},{"number":163,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/163/"},{"number":162,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/162/"},{"number":161,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/161/"},{"number":160,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/160/"},{"number":159,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/159/"},{"number":158,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/158/"},{"number":157,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/157/"},{"number":156,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/156/"},{"number":155,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/155/"},{"number":154,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/154/"},{"number":153,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/153/"},{"number":152,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/152/"},{"number":151,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/151/"},{"number":150,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/150/"},{"number":149,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/149/"},{"number":148,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/148/"}],"color":"red","firstBuild":{"number":148,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/148/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":177,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/177/"},"lastCompletedBuild":{"number":177,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/177/"},"lastFailedBuild":{"number":177,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/177/"},"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":177,"url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/177/"},"nextBuildNumber":178,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"infra_update_center","displayNameOrNull":null,"name":"infra_update_center","url":"http://ci.jenkins-ci.org/job/infra_update_center/","buildable":true,"builds":[{"number":21902,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21902/"},{"number":21901,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21901/"},{"number":21900,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21900/"},{"number":21899,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21899/"},{"number":21898,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21898/"},{"number":21897,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21897/"},{"number":21896,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21896/"},{"number":21895,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21895/"},{"number":21894,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21894/"},{"number":21893,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21893/"},{"number":21892,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21892/"},{"number":21891,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21891/"},{"number":21890,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21890/"},{"number":21889,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21889/"},{"number":21888,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21888/"},{"number":21887,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21887/"},{"number":21886,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21886/"},{"number":21885,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21885/"},{"number":21884,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21884/"},{"number":21883,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21883/"},{"number":21882,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21882/"},{"number":21881,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21881/"},{"number":21880,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21880/"},{"number":21879,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21879/"},{"number":21878,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21878/"},{"number":21877,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21877/"},{"number":21876,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21876/"},{"number":21875,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21875/"},{"number":21874,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21874/"},{"number":21873,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21873/"},{"number":21872,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21872/"},{"number":21871,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21871/"},{"number":21870,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21870/"},{"number":21869,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21869/"},{"number":21868,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21868/"},{"number":21867,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21867/"},{"number":21866,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21866/"},{"number":21865,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21865/"},{"number":21864,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21864/"},{"number":21863,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21863/"},{"number":21862,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21862/"},{"number":21861,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21861/"},{"number":21860,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21860/"},{"number":21859,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21859/"},{"number":21858,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21858/"},{"number":21857,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21857/"},{"number":21856,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21856/"},{"number":21855,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21855/"},{"number":21854,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21854/"},{"number":21853,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21853/"},{"number":21852,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21852/"}],"color":"blue_anime","firstBuild":{"number":21852,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21852/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":21902,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21902/"},"lastCompletedBuild":{"number":21901,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21901/"},"lastFailedBuild":null,"lastStableBuild":{"number":21901,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21901/"},"lastSuccessfulBuild":{"number":21901,"url":"http://ci.jenkins-ci.org/job/infra_update_center/21901/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":21903,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"}],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"","displayName":"infra_update_center_experimental","displayNameOrNull":null,"name":"infra_update_center_experimental","url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/","buildable":true,"builds":[{"number":1343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1343/"},{"number":1342,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1342/"},{"number":1341,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1341/"},{"number":1340,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1340/"},{"number":1339,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1339/"},{"number":1338,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1338/"},{"number":1337,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1337/"},{"number":1336,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1336/"},{"number":1335,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1335/"},{"number":1334,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1334/"},{"number":1333,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1333/"},{"number":1332,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1332/"},{"number":1331,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1331/"},{"number":1330,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1330/"},{"number":1329,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1329/"},{"number":1328,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1328/"},{"number":1327,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1327/"},{"number":1326,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1326/"},{"number":1325,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1325/"},{"number":1324,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1324/"},{"number":1323,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1323/"},{"number":1322,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1322/"},{"number":1321,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1321/"},{"number":1320,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1320/"},{"number":1319,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1319/"},{"number":1318,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1318/"},{"number":1317,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1317/"},{"number":1316,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1316/"},{"number":1315,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1315/"},{"number":1314,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1314/"},{"number":1313,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1313/"},{"number":1312,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1312/"},{"number":1311,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1311/"},{"number":1310,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1310/"},{"number":1309,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1309/"},{"number":1308,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1308/"},{"number":1307,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1307/"},{"number":1306,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1306/"},{"number":1305,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1305/"},{"number":1304,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1304/"},{"number":1303,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1303/"},{"number":1302,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1302/"},{"number":1301,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1301/"},{"number":1300,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1300/"},{"number":1299,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1299/"},{"number":1298,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1298/"},{"number":1297,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1297/"},{"number":1296,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1296/"},{"number":1295,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1295/"},{"number":1294,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1294/"}],"color":"blue","firstBuild":{"number":1294,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1294/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1343/"},"lastCompletedBuild":{"number":1343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1343/"},"lastFailedBuild":null,"lastStableBuild":{"number":1343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1343/"},"lastSuccessfulBuild":{"number":1343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1343/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1324,"url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/1324/"},"nextBuildNumber":1344,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"}],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Send the update center to the mirrors","displayName":"infra_update_center_mirror","displayNameOrNull":null,"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","buildable":true,"builds":[{"number":21439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21439/"},{"number":21438,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21438/"},{"number":21437,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21437/"},{"number":21436,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21436/"},{"number":21435,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21435/"},{"number":21434,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21434/"},{"number":21433,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21433/"},{"number":21432,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21432/"},{"number":21431,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21431/"},{"number":21430,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21430/"},{"number":21429,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21429/"},{"number":21428,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21428/"},{"number":21427,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21427/"},{"number":21426,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21426/"},{"number":21425,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21425/"},{"number":21424,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21424/"},{"number":21423,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21423/"},{"number":21422,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21422/"},{"number":21421,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21421/"},{"number":21420,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21420/"},{"number":21419,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21419/"},{"number":21418,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21418/"},{"number":21417,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21417/"},{"number":21416,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21416/"},{"number":21415,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21415/"},{"number":21414,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21414/"},{"number":21413,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21413/"},{"number":21412,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21412/"},{"number":21411,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21411/"},{"number":21410,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21410/"},{"number":21409,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21409/"},{"number":21408,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21408/"},{"number":21407,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21407/"},{"number":21406,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21406/"},{"number":21405,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21405/"},{"number":21404,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21404/"},{"number":21403,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21403/"},{"number":21402,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21402/"},{"number":21401,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21401/"},{"number":21400,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21400/"},{"number":21399,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21399/"},{"number":21398,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21398/"},{"number":21397,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21397/"},{"number":21396,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21396/"},{"number":21395,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21395/"},{"number":21394,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21394/"},{"number":21393,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21393/"},{"number":21392,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21392/"},{"number":21391,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21391/"},{"number":21390,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21390/"},{"number":21389,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21389/"},{"number":21388,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21388/"},{"number":21387,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21387/"},{"number":21386,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21386/"},{"number":21385,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21385/"},{"number":21384,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21384/"},{"number":21383,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21383/"},{"number":21382,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21382/"},{"number":21381,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21381/"},{"number":21380,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21380/"},{"number":21379,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21379/"},{"number":21378,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21378/"},{"number":21377,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21377/"},{"number":21376,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21376/"},{"number":21375,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21375/"},{"number":21374,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21374/"},{"number":21373,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21373/"},{"number":21372,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21372/"},{"number":21371,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21371/"},{"number":21370,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21370/"},{"number":21369,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21369/"},{"number":21368,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21368/"},{"number":21367,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21367/"},{"number":21366,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21366/"},{"number":21365,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21365/"},{"number":21364,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21364/"},{"number":21363,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21363/"},{"number":21362,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21362/"},{"number":21361,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21361/"},{"number":21360,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21360/"},{"number":21359,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21359/"},{"number":21358,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21358/"},{"number":21357,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21357/"},{"number":21356,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21356/"},{"number":21355,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21355/"},{"number":21354,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21354/"},{"number":21353,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21353/"},{"number":21352,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21352/"},{"number":21351,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21351/"},{"number":21350,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21350/"},{"number":21349,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21349/"},{"number":21348,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21348/"},{"number":21347,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21347/"},{"number":21346,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21346/"},{"number":21345,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21345/"},{"number":21344,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21344/"},{"number":21343,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21343/"},{"number":21342,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21342/"},{"number":21341,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21341/"},{"number":21340,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21340/"}],"color":"blue","firstBuild":{"number":20416,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/20416/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":21439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21439/"},"lastCompletedBuild":{"number":21439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21439/"},"lastFailedBuild":null,"lastStableBuild":{"number":21439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21439/"},"lastSuccessfulBuild":{"number":21439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/21439/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":21440,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[{"name":"infra_update_center","url":"http://ci.jenkins-ci.org/job/infra_update_center/","color":"blue_anime"},{"name":"infra_update_center_experimental","url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/","color":"blue"},{"name":"infra_update_center_stable","url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/","color":"blue"}]},{"actions":[{},{}],"description":"Generate update center metadata for the stable branch","displayName":"infra_update_center_stable","displayNameOrNull":null,"name":"infra_update_center_stable","url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/","buildable":true,"builds":[{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6468/"},{"number":6467,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6467/"},{"number":6466,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6466/"},{"number":6465,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6465/"},{"number":6464,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6464/"},{"number":6463,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6463/"},{"number":6462,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6462/"},{"number":6461,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6461/"},{"number":6460,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6460/"},{"number":6459,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6459/"},{"number":6458,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6458/"},{"number":6457,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6457/"},{"number":6456,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6456/"},{"number":6455,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6455/"},{"number":6454,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6454/"},{"number":6453,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6453/"},{"number":6452,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6452/"},{"number":6451,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6451/"},{"number":6450,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6450/"},{"number":6449,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6449/"},{"number":6448,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6448/"},{"number":6447,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6447/"},{"number":6446,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6446/"},{"number":6445,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6445/"},{"number":6444,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6444/"},{"number":6443,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6443/"},{"number":6442,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6442/"},{"number":6441,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6441/"},{"number":6440,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6440/"},{"number":6439,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6439/"},{"number":6438,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6438/"},{"number":6437,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6437/"},{"number":6436,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6436/"},{"number":6435,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6435/"},{"number":6434,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6434/"},{"number":6433,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6433/"},{"number":6432,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6432/"},{"number":6431,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6431/"},{"number":6430,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6430/"},{"number":6429,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6429/"},{"number":6428,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6428/"},{"number":6427,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6427/"},{"number":6426,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6426/"},{"number":6425,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6425/"},{"number":6424,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6424/"},{"number":6423,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6423/"},{"number":6422,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6422/"},{"number":6421,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6421/"},{"number":6420,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6420/"},{"number":6419,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6419/"},{"number":6418,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6418/"},{"number":6417,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6417/"},{"number":6416,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6416/"},{"number":6415,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6415/"},{"number":6414,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6414/"},{"number":6413,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6413/"},{"number":6412,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6412/"},{"number":6411,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6411/"},{"number":6410,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6410/"},{"number":6409,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6409/"},{"number":6408,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6408/"},{"number":6407,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6407/"},{"number":6406,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6406/"},{"number":6405,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6405/"},{"number":6404,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6404/"},{"number":6403,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6403/"},{"number":6402,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6402/"},{"number":6401,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6401/"},{"number":6400,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6400/"},{"number":6399,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6399/"},{"number":6398,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6398/"},{"number":6397,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6397/"},{"number":6396,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6396/"},{"number":6395,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6395/"},{"number":6394,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6394/"},{"number":6393,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6393/"},{"number":6392,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6392/"},{"number":6391,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6391/"},{"number":6390,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6390/"},{"number":6389,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6389/"},{"number":6388,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6388/"},{"number":6387,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6387/"},{"number":6386,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6386/"},{"number":6385,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6385/"},{"number":6384,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6384/"},{"number":6383,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6383/"},{"number":6382,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6382/"},{"number":6381,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6381/"},{"number":6380,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6380/"},{"number":6379,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6379/"},{"number":6378,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6378/"},{"number":6377,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6377/"},{"number":6376,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6376/"},{"number":6375,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6375/"},{"number":6374,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6374/"},{"number":6373,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6373/"},{"number":6372,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6372/"},{"number":6371,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6371/"},{"number":6370,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6370/"},{"number":6369,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6369/"}],"color":"blue","firstBuild":{"number":6290,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6290/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6468/"},"lastCompletedBuild":{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6468/"},"lastFailedBuild":null,"lastStableBuild":{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6468/"},"lastSuccessfulBuild":{"number":6468,"url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/6468/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":6469,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"}],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"","displayName":"infra_update_mave_site","displayNameOrNull":null,"name":"infra_update_mave_site","url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/","buildable":true,"builds":[{"number":585,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/585/"},{"number":584,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/584/"},{"number":583,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/583/"},{"number":582,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/582/"},{"number":581,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/581/"},{"number":580,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/580/"},{"number":579,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/579/"},{"number":578,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/578/"},{"number":577,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/577/"},{"number":576,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/576/"},{"number":575,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/575/"},{"number":574,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/574/"},{"number":573,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/573/"},{"number":572,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/572/"},{"number":571,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/571/"},{"number":570,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/570/"},{"number":569,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/569/"},{"number":568,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/568/"},{"number":567,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/567/"},{"number":566,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/566/"},{"number":565,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/565/"},{"number":564,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/564/"},{"number":563,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/563/"},{"number":562,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/562/"},{"number":561,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/561/"},{"number":560,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/560/"},{"number":559,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/559/"},{"number":558,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/558/"},{"number":557,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/557/"},{"number":556,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/556/"},{"number":555,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/555/"},{"number":554,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/554/"},{"number":553,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/553/"},{"number":552,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/552/"},{"number":551,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/551/"},{"number":550,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/550/"},{"number":549,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/549/"},{"number":548,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/548/"},{"number":547,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/547/"},{"number":546,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/546/"},{"number":545,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/545/"},{"number":544,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/544/"},{"number":543,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/543/"},{"number":542,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/542/"},{"number":541,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/541/"},{"number":540,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/540/"},{"number":539,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/539/"},{"number":538,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/538/"},{"number":537,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/537/"},{"number":536,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/536/"},{"number":535,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/535/"},{"number":534,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/534/"},{"number":533,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/533/"},{"number":532,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/532/"},{"number":531,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/531/"},{"number":530,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/530/"},{"number":529,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/529/"},{"number":528,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/528/"},{"number":527,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/527/"},{"number":526,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/526/"},{"number":525,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/525/"},{"number":524,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/524/"},{"number":523,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/523/"},{"number":522,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/522/"},{"number":521,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/521/"},{"number":520,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/520/"},{"number":519,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/519/"},{"number":518,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/518/"},{"number":517,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/517/"},{"number":516,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/516/"},{"number":515,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/515/"},{"number":514,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/514/"},{"number":513,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/513/"},{"number":512,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/512/"},{"number":511,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/511/"},{"number":510,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/510/"},{"number":509,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/509/"},{"number":508,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/508/"},{"number":507,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/507/"},{"number":506,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/506/"},{"number":505,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/505/"},{"number":504,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/504/"},{"number":503,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/503/"},{"number":502,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/502/"},{"number":501,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/501/"},{"number":500,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/500/"},{"number":499,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/499/"},{"number":498,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/498/"},{"number":497,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/497/"},{"number":496,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/496/"},{"number":495,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/495/"},{"number":494,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/494/"},{"number":493,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/493/"},{"number":492,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/492/"},{"number":491,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/491/"},{"number":490,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/490/"},{"number":489,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/489/"},{"number":488,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/488/"},{"number":487,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/487/"},{"number":486,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/486/"}],"color":"blue","firstBuild":{"number":486,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/486/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":585,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/585/"},"lastCompletedBuild":{"number":585,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/585/"},"lastFailedBuild":null,"lastStableBuild":{"number":585,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/585/"},"lastSuccessfulBuild":{"number":585,"url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/585/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":586,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"","displayName":"jenkins_lts_branch","displayNameOrNull":null,"name":"jenkins_lts_branch","url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/","buildable":true,"builds":[{"number":161,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/161/"},{"number":160,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/160/"},{"number":159,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/159/"},{"number":158,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/158/"},{"number":157,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/157/"},{"number":156,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/156/"},{"number":155,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/155/"},{"number":154,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/154/"},{"number":153,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/153/"},{"number":152,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/152/"},{"number":151,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/151/"},{"number":150,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/150/"},{"number":149,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/149/"},{"number":148,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/148/"},{"number":147,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/147/"},{"number":146,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/146/"},{"number":145,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/145/"},{"number":144,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/144/"},{"number":143,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/143/"},{"number":142,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/142/"},{"number":141,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/141/"},{"number":140,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/140/"},{"number":139,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/139/"},{"number":138,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/138/"},{"number":137,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/137/"},{"number":136,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/136/"},{"number":135,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/135/"},{"number":134,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/134/"},{"number":133,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/133/"},{"number":132,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/132/"},{"number":131,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/131/"},{"number":130,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/130/"},{"number":129,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/129/"},{"number":128,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/128/"},{"number":127,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/127/"},{"number":126,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/126/"},{"number":125,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/125/"},{"number":124,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/124/"},{"number":123,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/123/"},{"number":122,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/122/"},{"number":121,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/121/"},{"number":120,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/120/"},{"number":119,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/119/"},{"number":118,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/118/"},{"number":117,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/117/"},{"number":116,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/116/"},{"number":115,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/115/"},{"number":114,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/114/"},{"number":113,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/113/"},{"number":112,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/112/"},{"number":111,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/111/"},{"number":110,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/110/"},{"number":109,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/109/"},{"number":108,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/108/"},{"number":107,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/107/"},{"number":106,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/106/"},{"number":105,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/105/"},{"number":104,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/104/"},{"number":103,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/103/"},{"number":102,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/102/"},{"number":101,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/101/"},{"number":100,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/100/"},{"number":99,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/99/"},{"number":98,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/98/"},{"number":97,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/97/"},{"number":96,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/96/"},{"number":95,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/95/"},{"number":94,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/94/"},{"number":93,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/93/"},{"number":92,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/92/"},{"number":91,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/91/"},{"number":90,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/90/"},{"number":89,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/89/"},{"number":88,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/88/"},{"number":87,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/87/"},{"number":86,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/86/"},{"number":85,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/85/"},{"number":84,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/84/"},{"number":83,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/83/"},{"number":82,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/82/"},{"number":81,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/81/"},{"number":80,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/80/"},{"number":79,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/79/"},{"number":78,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/78/"},{"number":77,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/77/"},{"number":76,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/76/"},{"number":75,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/75/"},{"number":74,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/74/"},{"number":73,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/73/"},{"number":72,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/72/"},{"number":71,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/71/"},{"number":70,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/70/"},{"number":69,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/69/"},{"number":68,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/68/"},{"number":67,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/67/"},{"number":66,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/66/"},{"number":65,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/65/"},{"number":64,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/64/"},{"number":63,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/63/"},{"number":62,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/62/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 4,444 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":161,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/161/"},"lastCompletedBuild":{"number":161,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/161/"},"lastFailedBuild":{"number":152,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/152/"},"lastStableBuild":{"number":161,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/161/"},"lastSuccessfulBuild":{"number":161,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/161/"},"lastUnstableBuild":{"number":159,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/159/"},"lastUnsuccessfulBuild":{"number":159,"url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/159/"},"nextBuildNumber":162,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"","displayName":"jenkins_main_maven-3.1.0","displayNameOrNull":null,"name":"jenkins_main_maven-3.1.0","url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/","buildable":true,"builds":[{"number":7,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/7/"},{"number":6,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/1/"},"healthReport":[{"description":"Build stability: 4 out of the last 5 builds failed.","iconUrl":"health-00to19.png","score":20},{"description":"Test Result: 0 tests failing out of a total of 4,395 tests.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/7/"},"lastCompletedBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/7/"},"lastFailedBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/6/"},"lastStableBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/7/"},"lastSuccessfulBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/7/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":6,"url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/6/"},"nextBuildNumber":8,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"<font color=red>To push to to the core repository, instead of doing so directly, please go through\r\n <a href=\"https://jenkins.ci.cloudbees.com/job/core/job/jenkins_main_trunk/repo.git/\">validated merge</a> so that your\r\n changes are betted first</font>\r\n ","displayName":"jenkins_main_trunk","displayNameOrNull":null,"name":"jenkins_main_trunk","url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/","buildable":true,"builds":[{"number":3355,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3355/"},{"number":3354,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3354/"},{"number":3353,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3353/"},{"number":3352,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3352/"},{"number":3351,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3351/"},{"number":3350,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3350/"},{"number":3349,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3349/"},{"number":3348,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3348/"},{"number":3347,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3347/"},{"number":3346,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3346/"},{"number":3345,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3345/"},{"number":3344,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3344/"},{"number":3343,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3343/"},{"number":3342,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3342/"},{"number":3341,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3341/"},{"number":3340,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3340/"},{"number":3339,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3339/"},{"number":3338,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3338/"},{"number":3337,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3337/"},{"number":3336,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3336/"},{"number":3335,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3335/"},{"number":3334,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3334/"},{"number":3333,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3333/"},{"number":3332,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3332/"},{"number":3331,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3331/"},{"number":3330,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3330/"},{"number":3329,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3329/"},{"number":3328,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3328/"},{"number":3327,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3327/"},{"number":3326,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3326/"},{"number":3325,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3325/"},{"number":3324,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3324/"},{"number":3323,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3323/"},{"number":3322,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3322/"},{"number":3321,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3321/"},{"number":3320,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3320/"},{"number":3319,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3319/"},{"number":3318,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3318/"},{"number":3317,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3317/"},{"number":3316,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3316/"},{"number":3315,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3315/"},{"number":3314,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3314/"},{"number":3313,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3313/"},{"number":3312,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3312/"},{"number":3311,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3311/"},{"number":3310,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3310/"},{"number":3309,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3309/"},{"number":3308,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3308/"},{"number":3307,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3307/"},{"number":3306,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3306/"},{"number":3305,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3305/"},{"number":3304,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3304/"},{"number":3303,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3303/"},{"number":3302,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3302/"},{"number":3301,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3301/"},{"number":3300,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3300/"},{"number":3299,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3299/"},{"number":3298,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3298/"},{"number":3297,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3297/"},{"number":3296,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3296/"},{"number":3295,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3295/"},{"number":3294,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3294/"},{"number":3293,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3293/"},{"number":3292,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3292/"},{"number":3291,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3291/"},{"number":3290,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3290/"},{"number":3289,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3289/"},{"number":3288,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3288/"},{"number":3287,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3287/"},{"number":3286,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3286/"},{"number":3285,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3285/"},{"number":3284,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3284/"},{"number":3283,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3283/"},{"number":3282,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3282/"},{"number":3281,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3281/"},{"number":3280,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3280/"},{"number":3279,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3279/"},{"number":3278,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3278/"},{"number":3277,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3277/"},{"number":3276,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3276/"},{"number":3275,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3275/"},{"number":3274,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3274/"},{"number":3273,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3273/"},{"number":3272,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3272/"},{"number":3271,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3271/"},{"number":3270,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3270/"},{"number":1623,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/1623/"}],"color":"blue","firstBuild":{"number":1623,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/1623/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 4,419 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":3355,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3355/"},"lastCompletedBuild":{"number":3355,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3355/"},"lastFailedBuild":{"number":3345,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3345/"},"lastStableBuild":{"number":3355,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3355/"},"lastSuccessfulBuild":{"number":3355,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3355/"},"lastUnstableBuild":{"number":3313,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3313/"},"lastUnsuccessfulBuild":{"number":3354,"url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/3354/"},"nextBuildNumber":3356,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{}],"description":"<p>The purpose of this job is to build the canonically named \"corporate POM\" (see below) and check for maven plugin updates.</p>\r\n<p>The corporate POM serves as the base POM for the entire Jenkins' project hierarchy. Aside from setting up some basic project configuration, this POM also sets base versions for all maven plugins.</p>","displayName":"jenkins_pom","displayNameOrNull":null,"name":"jenkins_pom","url":"http://ci.jenkins-ci.org/job/jenkins_pom/","buildable":true,"builds":[{"number":239,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/239/"},{"number":238,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/238/"},{"number":237,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/237/"},{"number":236,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/236/"},{"number":235,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/235/"}],"color":"blue","firstBuild":{"number":235,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/235/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":239,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/239/"},"lastCompletedBuild":{"number":239,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/239/"},"lastFailedBuild":null,"lastStableBuild":{"number":239,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/239/"},"lastSuccessfulBuild":{"number":239,"url":"http://ci.jenkins-ci.org/job/jenkins_pom/239/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":240,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"","displayName":"jenkins_rc_branch","displayNameOrNull":null,"name":"jenkins_rc_branch","url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/","buildable":true,"builds":[{"number":418,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/418/"},{"number":417,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/417/"},{"number":416,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/416/"},{"number":415,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/415/"},{"number":414,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/414/"},{"number":413,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/413/"},{"number":412,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/412/"},{"number":411,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/411/"},{"number":410,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/410/"},{"number":409,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/409/"},{"number":408,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/408/"},{"number":407,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/407/"},{"number":406,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/406/"},{"number":405,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/405/"},{"number":404,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/404/"},{"number":403,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/403/"},{"number":402,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/402/"},{"number":401,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/401/"},{"number":400,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/400/"},{"number":399,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/399/"},{"number":398,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/398/"},{"number":397,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/397/"},{"number":396,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/396/"},{"number":395,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/395/"},{"number":394,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/394/"},{"number":393,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/393/"},{"number":392,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/392/"},{"number":391,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/391/"},{"number":390,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/390/"},{"number":389,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/389/"},{"number":388,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/388/"},{"number":387,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/387/"},{"number":386,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/386/"},{"number":385,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/385/"},{"number":384,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/384/"},{"number":383,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/383/"},{"number":382,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/382/"},{"number":381,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/381/"},{"number":380,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/380/"},{"number":379,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/379/"},{"number":378,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/378/"},{"number":377,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/377/"},{"number":376,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/376/"},{"number":375,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/375/"},{"number":374,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/374/"},{"number":373,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/373/"},{"number":372,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/372/"},{"number":371,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/371/"},{"number":370,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/370/"},{"number":369,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/369/"},{"number":368,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/368/"},{"number":367,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/367/"},{"number":366,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/366/"},{"number":365,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/365/"},{"number":364,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/364/"},{"number":363,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/363/"},{"number":362,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/362/"},{"number":361,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/361/"},{"number":360,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/360/"},{"number":359,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/359/"},{"number":358,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/358/"},{"number":357,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/357/"},{"number":356,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/356/"},{"number":355,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/355/"},{"number":354,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/354/"},{"number":353,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/353/"},{"number":352,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/352/"},{"number":351,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/351/"},{"number":350,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/350/"},{"number":349,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/349/"},{"number":348,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/348/"},{"number":347,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/347/"},{"number":346,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/346/"},{"number":345,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/345/"},{"number":344,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/344/"},{"number":343,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/343/"},{"number":342,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/342/"},{"number":341,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/341/"},{"number":340,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/340/"},{"number":339,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/339/"},{"number":338,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/338/"},{"number":337,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/337/"},{"number":336,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/336/"},{"number":335,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/335/"},{"number":334,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/334/"},{"number":333,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/333/"},{"number":332,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/332/"},{"number":331,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/331/"},{"number":330,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/330/"},{"number":329,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/329/"},{"number":328,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/328/"},{"number":327,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/327/"},{"number":326,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/326/"},{"number":325,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/325/"},{"number":324,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/324/"},{"number":323,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/323/"},{"number":322,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/322/"},{"number":321,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/321/"},{"number":320,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/320/"},{"number":319,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/319/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 4,419 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":418,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/418/"},"lastCompletedBuild":{"number":418,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/418/"},"lastFailedBuild":{"number":373,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/373/"},"lastStableBuild":{"number":418,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/418/"},"lastSuccessfulBuild":{"number":418,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/418/"},"lastUnstableBuild":{"number":417,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/417/"},"lastUnsuccessfulBuild":{"number":417,"url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/417/"},"nextBuildNumber":419,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{},{}],"description":"","displayName":"jenkins_ui-changes_branch","displayNameOrNull":null,"name":"jenkins_ui-changes_branch","url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/","buildable":true,"builds":[{"number":33,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/33/"},{"number":32,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/32/"}],"color":"red","firstBuild":{"number":32,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/32/"},"healthReport":[{"description":"Build stability: 1 out of the last 2 builds failed.","iconUrl":"health-40to59.png","score":50}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":33,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/33/"},"lastCompletedBuild":{"number":33,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/33/"},"lastFailedBuild":{"number":33,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/33/"},"lastStableBuild":{"number":32,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/32/"},"lastSuccessfulBuild":{"number":32,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/32/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":33,"url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/33/"},"nextBuildNumber":34,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},null,{}],"description":"","displayName":"kohsuke_github-api","displayNameOrNull":null,"name":"kohsuke_github-api","url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/","buildable":true,"builds":[{"number":5419,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5419/"},{"number":5418,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5418/"},{"number":5417,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5417/"},{"number":5416,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5416/"},{"number":5415,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5415/"},{"number":5414,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5414/"},{"number":5413,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5413/"},{"number":5412,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5412/"},{"number":5411,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5411/"},{"number":5410,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5410/"},{"number":5409,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5409/"},{"number":5408,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5408/"},{"number":5407,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5407/"},{"number":5406,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5406/"},{"number":5405,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5405/"},{"number":5404,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5404/"},{"number":5403,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5403/"},{"number":5402,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5402/"},{"number":5401,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5401/"},{"number":5400,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5400/"},{"number":5399,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5399/"},{"number":5398,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5398/"},{"number":5397,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5397/"},{"number":5396,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5396/"},{"number":5395,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5395/"},{"number":5394,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5394/"},{"number":5393,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5393/"},{"number":5392,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5392/"},{"number":5391,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5391/"},{"number":5390,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5390/"},{"number":5389,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5389/"},{"number":5388,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5388/"},{"number":5387,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5387/"},{"number":5386,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5386/"},{"number":5385,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5385/"},{"number":5384,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5384/"},{"number":5383,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5383/"},{"number":5382,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5382/"},{"number":5381,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5381/"},{"number":5380,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5380/"},{"number":5379,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5379/"},{"number":5378,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5378/"},{"number":5377,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5377/"},{"number":5376,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5376/"},{"number":5375,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5375/"},{"number":5374,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5374/"},{"number":5373,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5373/"},{"number":5372,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5372/"},{"number":5371,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5371/"},{"number":5370,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5370/"},{"number":5369,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5369/"},{"number":5368,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5368/"},{"number":5367,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5367/"},{"number":5366,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5366/"},{"number":5365,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5365/"},{"number":5364,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5364/"},{"number":5363,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5363/"},{"number":5362,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5362/"},{"number":5361,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5361/"},{"number":5360,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5360/"},{"number":5359,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5359/"},{"number":5358,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5358/"},{"number":5357,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5357/"},{"number":5356,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5356/"},{"number":5355,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5355/"},{"number":5354,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5354/"},{"number":5353,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5353/"},{"number":5352,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5352/"},{"number":5351,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5351/"},{"number":5350,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5350/"},{"number":5349,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5349/"},{"number":5348,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5348/"},{"number":5347,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5347/"},{"number":5346,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5346/"},{"number":5345,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5345/"},{"number":5344,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5344/"},{"number":5343,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5343/"},{"number":5342,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5342/"},{"number":5341,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5341/"},{"number":5340,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5340/"},{"number":5339,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5339/"},{"number":5338,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5338/"},{"number":5337,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5337/"},{"number":5336,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5336/"},{"number":5335,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5335/"},{"number":5334,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5334/"},{"number":5333,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5333/"},{"number":5332,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5332/"},{"number":5331,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5331/"},{"number":5330,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5330/"},{"number":5329,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5329/"},{"number":5328,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5328/"},{"number":5327,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5327/"},{"number":5326,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5326/"},{"number":5325,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5325/"},{"number":5324,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5324/"},{"number":5323,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5323/"},{"number":5322,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5322/"},{"number":5321,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5321/"},{"number":5320,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5320/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":5419,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5419/"},"lastCompletedBuild":{"number":5419,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5419/"},"lastFailedBuild":{"number":5366,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5366/"},"lastStableBuild":{"number":5419,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5419/"},"lastSuccessfulBuild":{"number":5419,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5419/"},"lastUnstableBuild":{"number":18,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/18/"},"lastUnsuccessfulBuild":{"number":5366,"url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/5366/"},"nextBuildNumber":5420,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.kohsuke:github-api","url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/org.kohsuke$github-api/","color":"blue","displayName":"GitHub API for Java"}]},{"actions":[{},{},{},{}],"description":"","displayName":"lib-jenkins-maven-artifact-manager","displayNameOrNull":null,"name":"lib-jenkins-maven-artifact-manager","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/","buildable":true,"builds":[{"number":1359,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1359/"},{"number":1358,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1358/"},{"number":1357,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1357/"},{"number":1356,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1356/"},{"number":1355,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1355/"},{"number":1354,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1354/"},{"number":1353,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1353/"},{"number":1352,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1352/"},{"number":1351,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1351/"},{"number":1350,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1350/"},{"number":1349,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1349/"},{"number":1348,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1348/"},{"number":1347,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1347/"},{"number":1346,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1346/"},{"number":1345,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1345/"}],"color":"blue","firstBuild":{"number":1345,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1345/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 1 test.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1359,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1359/"},"lastCompletedBuild":{"number":1359,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1359/"},"lastFailedBuild":{"number":1352,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1352/"},"lastStableBuild":{"number":1359,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1359/"},"lastSuccessfulBuild":{"number":1359,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1359/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1352,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/1352/"},"nextBuildNumber":1360,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.lib:lib-jenkins-maven-artifact-manager","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/org.jenkins-ci.lib$lib-jenkins-maven-artifact-manager/","color":"blue","displayName":"Hudson Maven Artifact Manager"}]},{"actions":[{},{},{},{}],"description":"","displayName":"lib-jenkins-maven-embedder","displayNameOrNull":null,"name":"lib-jenkins-maven-embedder","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/","buildable":true,"builds":[{"number":1383,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1383/"},{"number":1382,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1382/"},{"number":1381,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1381/"},{"number":1380,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1380/"},{"number":1379,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1379/"},{"number":1378,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1378/"},{"number":1377,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1377/"},{"number":1376,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1376/"},{"number":1375,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1375/"},{"number":1374,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1374/"},{"number":1373,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1373/"},{"number":1372,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1372/"},{"number":1371,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1371/"},{"number":1370,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1370/"},{"number":1369,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1369/"}],"color":"blue","firstBuild":{"number":1369,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1369/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 15 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1383,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1383/"},"lastCompletedBuild":{"number":1383,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1383/"},"lastFailedBuild":{"number":1370,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1370/"},"lastStableBuild":{"number":1383,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1383/"},"lastSuccessfulBuild":{"number":1383,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1383/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1370,"url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/1370/"},"nextBuildNumber":1384,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.lib:lib-jenkins-maven-embedder","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/org.jenkins-ci.lib$lib-jenkins-maven-embedder/","color":"blue","displayName":"Jenkins Maven Embedder"}]},{"actions":[{},{},{}],"description":"","displayName":"lib-jira-api","displayNameOrNull":null,"name":"lib-jira-api","url":"http://ci.jenkins-ci.org/job/lib-jira-api/","buildable":true,"builds":[{"number":5354,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5354/"},{"number":5353,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5353/"},{"number":5352,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5352/"},{"number":5351,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5351/"},{"number":5350,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5350/"},{"number":5349,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5349/"},{"number":5348,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5348/"},{"number":5347,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5347/"},{"number":5346,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5346/"},{"number":5345,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5345/"},{"number":5344,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5344/"},{"number":5343,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5343/"},{"number":5342,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5342/"},{"number":5341,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5341/"},{"number":5340,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5340/"},{"number":5339,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5339/"},{"number":5338,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5338/"},{"number":5337,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5337/"},{"number":5336,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5336/"},{"number":5335,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5335/"},{"number":5334,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5334/"},{"number":5333,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5333/"},{"number":5332,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5332/"},{"number":5331,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5331/"},{"number":5330,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5330/"},{"number":5329,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5329/"},{"number":5328,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5328/"},{"number":5327,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5327/"},{"number":5326,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5326/"},{"number":5325,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5325/"},{"number":5324,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5324/"},{"number":5323,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5323/"},{"number":5322,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5322/"},{"number":5321,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5321/"},{"number":5320,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5320/"},{"number":5319,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5319/"},{"number":5318,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5318/"},{"number":5317,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5317/"},{"number":5316,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5316/"},{"number":5315,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5315/"},{"number":5314,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5314/"},{"number":5313,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5313/"},{"number":5312,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5312/"},{"number":5311,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5311/"},{"number":5310,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5310/"},{"number":5309,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5309/"},{"number":5308,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5308/"},{"number":5307,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5307/"},{"number":5306,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5306/"},{"number":5305,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5305/"},{"number":5304,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5304/"},{"number":5303,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5303/"},{"number":5302,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5302/"},{"number":5301,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5301/"},{"number":5300,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5300/"},{"number":5299,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5299/"},{"number":5298,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5298/"},{"number":5297,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5297/"},{"number":5296,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5296/"},{"number":5295,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5295/"},{"number":5294,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5294/"},{"number":5293,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5293/"},{"number":5292,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5292/"},{"number":5291,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5291/"},{"number":5290,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5290/"},{"number":5289,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5289/"},{"number":5288,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5288/"},{"number":5287,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5287/"},{"number":5286,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5286/"},{"number":5285,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5285/"},{"number":5284,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5284/"},{"number":5283,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5283/"},{"number":5282,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5282/"},{"number":5281,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5281/"},{"number":5280,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5280/"},{"number":5279,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5279/"},{"number":5278,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5278/"},{"number":5277,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5277/"},{"number":5276,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5276/"},{"number":5275,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5275/"},{"number":5274,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5274/"},{"number":5273,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5273/"},{"number":5272,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5272/"},{"number":5271,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5271/"},{"number":5270,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5270/"},{"number":5269,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5269/"},{"number":5268,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5268/"},{"number":5267,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5267/"},{"number":5266,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5266/"},{"number":5265,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5265/"},{"number":5264,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5264/"},{"number":5263,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5263/"},{"number":5262,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5262/"},{"number":5261,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5261/"},{"number":5260,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5260/"},{"number":5259,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5259/"},{"number":5258,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5258/"},{"number":5257,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5257/"},{"number":5256,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5256/"},{"number":5255,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5255/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":5354,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5354/"},"lastCompletedBuild":{"number":5354,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5354/"},"lastFailedBuild":{"number":5346,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5346/"},"lastStableBuild":{"number":5354,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5354/"},"lastSuccessfulBuild":{"number":5354,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5354/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":5346,"url":"http://ci.jenkins-ci.org/job/lib-jira-api/5346/"},"nextBuildNumber":5355,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci:jira-api","url":"http://ci.jenkins-ci.org/job/lib-jira-api/org.jenkins-ci$jira-api/","color":"blue","displayName":"JIRA API"}]},{"actions":[{},{},null],"description":"","displayName":"libs_core-js","displayNameOrNull":null,"name":"libs_core-js","url":"http://ci.jenkins-ci.org/job/libs_core-js/","buildable":true,"builds":[{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_core-js/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_core-js/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_core-js/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_core-js/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_core-js/3/"},"lastCompletedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_core-js/3/"},"lastFailedBuild":null,"lastStableBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_core-js/3/"},"lastSuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_core-js/3/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":4,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jvnet.hudson:htmlunit-core-js","url":"http://ci.jenkins-ci.org/job/libs_core-js/org.jvnet.hudson$htmlunit-core-js/","color":"blue","displayName":"HtmlUnit Core JS"}]},{"actions":[{},{},null],"description":"","displayName":"libs_dom4j","displayNameOrNull":null,"name":"libs_dom4j","url":"http://ci.jenkins-ci.org/job/libs_dom4j/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/2/"},"lastFailedBuild":null,"lastStableBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/2/"},"lastSuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_dom4j/2/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jvnet.hudson.dom4j:dom4j","url":"http://ci.jenkins-ci.org/job/libs_dom4j/org.jvnet.hudson.dom4j$dom4j/","color":"blue","displayName":"dom4j"}]},{"actions":[{},{}],"description":"","displayName":"libs_htmlunit","displayNameOrNull":null,"name":"libs_htmlunit","url":"http://ci.jenkins-ci.org/job/libs_htmlunit/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/1/"}],"color":"aborted","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/1/"},"healthReport":[],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/2/"},"lastFailedBuild":null,"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_htmlunit/2/"},"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jvnet.hudson:htmlunit","url":"http://ci.jenkins-ci.org/job/libs_htmlunit/org.jvnet.hudson$htmlunit/","color":"red","displayName":"HtmlUnit"}]},{"actions":[{},{},null],"description":"","displayName":"libs_jelly","displayNameOrNull":null,"name":"libs_jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/","buildable":true,"builds":[{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_jelly/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jelly/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jelly/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jelly/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jelly/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_jelly/4/"},"lastCompletedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_jelly/4/"},"lastFailedBuild":null,"lastStableBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_jelly/4/"},"lastSuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_jelly/4/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":5,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[{"name":"libs_jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/","color":"blue"}],"modules":[{"name":"org.jenkins-ci:commons-jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/org.jenkins-ci$commons-jelly/","color":"blue","displayName":"commons-jelly"},{"name":"org.jvnet.hudson:commons-jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/org.jvnet.hudson$commons-jelly/","color":"disabled","displayName":"commons-jelly"}]},{"actions":[{},{},{},null],"description":"","displayName":"libs_jexl","displayNameOrNull":null,"name":"libs_jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/","buildable":true,"builds":[{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jexl/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jexl/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jexl/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jexl/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 126 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jexl/3/"},"lastCompletedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jexl/3/"},"lastFailedBuild":null,"lastStableBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jexl/3/"},"lastSuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_jexl/3/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":4,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"libs_jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/","color":"blue"}],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci:commons-jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/org.jenkins-ci$commons-jexl/","color":"blue","displayName":"Commons JEXL"},{"name":"org.jvnet.hudson:commons-jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/org.jvnet.hudson$commons-jexl/","color":"disabled","displayName":"Commons JEXL"}]},{"actions":[{},{},{},null],"description":"","displayName":"libs_jmdns","displayNameOrNull":null,"name":"libs_jmdns","url":"http://ci.jenkins-ci.org/job/libs_jmdns/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 34 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/2/"},"lastFailedBuild":null,"lastStableBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/2/"},"lastSuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_jmdns/2/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci:jmdns","url":"http://ci.jenkins-ci.org/job/libs_jmdns/org.jenkins-ci$jmdns/","color":"blue","displayName":"JmDNS"},{"name":"org.jvnet.hudson:jmdns","url":"http://ci.jenkins-ci.org/job/libs_jmdns/org.jvnet.hudson$jmdns/","color":"disabled","displayName":"JmDNS"}]},{"actions":[{},{},{},null],"description":"","displayName":"libs_json-lib","displayNameOrNull":null,"name":"libs_json-lib","url":"http://ci.jenkins-ci.org/job/libs_json-lib/","buildable":true,"builds":[{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/3/"}],"color":"blue","firstBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/3/"},"healthReport":[{"description":"Build stability: 2 out of the last 3 builds failed.","iconUrl":"health-20to39.png","score":33},{"description":"Test Result: 0 tests failing out of a total of 680 tests.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/5/"},"lastCompletedBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/5/"},"lastFailedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/4/"},"lastStableBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/5/"},"lastSuccessfulBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/5/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_json-lib/4/"},"nextBuildNumber":6,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.kohsuke.stapler:json-lib","url":"http://ci.jenkins-ci.org/job/libs_json-lib/org.kohsuke.stapler$json-lib/","color":"blue","displayName":"json-lib"}]},{"actions":[{},{},null,{}],"description":"","displayName":"libs_maven-jetty-plugin","displayNameOrNull":null,"name":"libs_maven-jetty-plugin","url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/","buildable":true,"builds":[{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/1/"},"healthReport":[{"description":"Build stability: 2 out of the last 4 builds failed.","iconUrl":"health-40to59.png","score":50}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/4/"},"lastCompletedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/4/"},"lastFailedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/3/"},"lastStableBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/4/"},"lastSuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/4/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/3/"},"nextBuildNumber":5,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.tools:maven-jenkins-dev-plugin","url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/org.jenkins-ci.tools$maven-jenkins-dev-plugin/","color":"blue","displayName":"Maven Jetty Plugin"},{"name":"org.jvnet.hudson.tools:maven-hudson-dev-plugin","url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/org.jvnet.hudson.tools$maven-hudson-dev-plugin/","color":"disabled","displayName":"Maven Jetty Plugin"}]},{"actions":[{},{},null],"description":"","displayName":"libs_netx","displayNameOrNull":null,"name":"libs_netx","url":"http://ci.jenkins-ci.org/job/libs_netx/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_netx/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_netx/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_netx/1/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_netx/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_netx/2/"},"lastFailedBuild":null,"lastStableBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_netx/2/"},"lastSuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_netx/2/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jvnet.hudson:netx","url":"http://ci.jenkins-ci.org/job/libs_netx/org.jvnet.hudson$netx/","color":"blue","displayName":"JNLP launcher"}]},{"actions":[{},{},null],"description":"","displayName":"libs_svnkit","displayNameOrNull":null,"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","buildable":true,"builds":[{"number":11,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/11/"},{"number":10,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/10/"}],"color":"red","firstBuild":{"number":10,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/10/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/11/"},"lastCompletedBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/11/"},"lastFailedBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/11/"},"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/libs_svnkit/11/"},"nextBuildNumber":12,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[{"name":"libs_trilead-ssh2","url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/","color":"blue"}],"modules":[{"name":"org.jenkins-ci.svnkit:svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/org.jenkins-ci.svnkit$svnkit/","color":"red","displayName":"SVNKit"},{"name":"org.jvnet.hudson.svnkit:svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/org.jvnet.hudson.svnkit$svnkit/","color":"disabled","displayName":"SVNKit"}]},{"actions":[{},{},null],"description":"","displayName":"libs_trilead-ssh2","displayNameOrNull":null,"name":"libs_trilead-ssh2","url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/","buildable":true,"builds":[{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/1/"},"healthReport":[{"description":"Build stability: 3 out of the last 5 builds failed.","iconUrl":"health-20to39.png","score":40}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/5/"},"lastCompletedBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/5/"},"lastFailedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/4/"},"lastStableBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/5/"},"lastSuccessfulBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/5/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/4/"},"nextBuildNumber":6,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[{"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","color":"red"}],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jvnet.hudson:trilead-ssh2","url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/org.jvnet.hudson$trilead-ssh2/","color":"blue","displayName":"Ganymed SSH2 for Java"}]},{"actions":[{},{},{},null],"description":"","displayName":"libs_winstone","displayNameOrNull":null,"name":"libs_winstone","url":"http://ci.jenkins-ci.org/job/libs_winstone/","buildable":true,"builds":[{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"}],"color":"blue","firstBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 17 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"},"lastCompletedBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"},"lastFailedBuild":null,"lastStableBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"},"lastSuccessfulBuild":{"number":7,"url":"http://ci.jenkins-ci.org/job/libs_winstone/7/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":8,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci:winstone","url":"http://ci.jenkins-ci.org/job/libs_winstone/org.jenkins-ci$winstone/","color":"blue","displayName":"Winstone"}]},{"actions":[{},{},null,{}],"description":"","displayName":"libs_xstream","displayNameOrNull":null,"name":"libs_xstream","url":"http://ci.jenkins-ci.org/job/libs_xstream/","buildable":true,"builds":[{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_xstream/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_xstream/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_xstream/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 1,030 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_xstream/2/"},"lastCompletedBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_xstream/2/"},"lastFailedBuild":null,"lastStableBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_xstream/2/"},"lastSuccessfulBuild":{"number":2,"url":"http://ci.jenkins-ci.org/job/libs_xstream/2/"},"lastUnstableBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_xstream/1/"},"lastUnsuccessfulBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/libs_xstream/1/"},"nextBuildNumber":3,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"com.thoughtworks.xstream:xstream-benchmark","url":"http://ci.jenkins-ci.org/job/libs_xstream/com.thoughtworks.xstream$xstream-benchmark/","color":"blue","displayName":"XStream Benchmark"},{"name":"com.thoughtworks.xstream:xstream-distribution","url":"http://ci.jenkins-ci.org/job/libs_xstream/com.thoughtworks.xstream$xstream-distribution/","color":"blue","displayName":"XStream Distribution"},{"name":"com.thoughtworks.xstream:xstream-parent","url":"http://ci.jenkins-ci.org/job/libs_xstream/com.thoughtworks.xstream$xstream-parent/","color":"blue","displayName":"XStream Parent"},{"name":"org.jvnet.hudson:xstream","url":"http://ci.jenkins-ci.org/job/libs_xstream/org.jvnet.hudson$xstream/","color":"blue","displayName":"XStream Core"}]},{"actions":[{},{},null,{},{}],"description":"","displayName":"maven-interceptors","displayNameOrNull":null,"name":"maven-interceptors","url":"http://ci.jenkins-ci.org/job/maven-interceptors/","buildable":true,"builds":[{"number":1372,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1372/"},{"number":1371,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1371/"},{"number":1370,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1370/"},{"number":1369,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1369/"},{"number":1368,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1368/"},{"number":1367,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1367/"},{"number":1366,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1366/"},{"number":1365,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1365/"},{"number":1364,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1364/"},{"number":1363,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1363/"},{"number":1362,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1362/"},{"number":1361,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1361/"},{"number":1360,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1360/"},{"number":1359,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1359/"},{"number":1358,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1358/"}],"color":"blue","firstBuild":{"number":1358,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1358/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 1 test.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1372,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1372/"},"lastCompletedBuild":{"number":1372,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1372/"},"lastFailedBuild":{"number":1364,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1364/"},"lastStableBuild":{"number":1372,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1372/"},"lastSuccessfulBuild":{"number":1372,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1372/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1364,"url":"http://ci.jenkins-ci.org/job/maven-interceptors/1364/"},"nextBuildNumber":1373,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.main.maven:maven-agent","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven-agent/","color":"blue","displayName":"Jenkins Maven2 CLI agent"},{"name":"org.jenkins-ci.main.maven:maven-interceptor","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven-interceptor/","color":"blue","displayName":"Jenkins Maven 2 PluginManager interceptor"},{"name":"org.jenkins-ci.main.maven:maven-modules","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven-modules/","color":"blue","displayName":"Jenkins Maven Agents and Interceptors"},{"name":"org.jenkins-ci.main.maven:maven3-agent","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven3-agent/","color":"blue","displayName":"Jenkins Maven3 CLI Agent"},{"name":"org.jenkins-ci.main.maven:maven3-interceptor","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven3-interceptor/","color":"blue","displayName":"Jenkins Maven3 Interceptor"},{"name":"org.jenkins-ci.main.maven:maven3-interceptor-commons","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven3-interceptor-commons/","color":"blue","displayName":"Jenkins Maven3 Interceptor Commons"},{"name":"org.jenkins-ci.main.maven:maven31-agent","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven31-agent/","color":"blue","displayName":"Jenkins Maven3.1.x CLI Agent"},{"name":"org.jenkins-ci.main.maven:maven31-interceptor","url":"http://ci.jenkins-ci.org/job/maven-interceptors/org.jenkins-ci.main.maven$maven31-interceptor/","color":"blue","displayName":"Jenkins Maven3.1.x Interceptor"}]},{"actions":[{},{},{},{}],"description":"This is a demonstration of how a simple Ant project can be built on Jenkins.","displayName":"model-ant-project","displayNameOrNull":null,"name":"model-ant-project","url":"http://ci.jenkins-ci.org/job/model-ant-project/","buildable":true,"builds":[{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ant-project/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/model-ant-project/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/model-ant-project/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/model-ant-project/1/"},"healthReport":[{"description":"Test Result: 0 tests failing out of a total of 2 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ant-project/3/"},"lastCompletedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ant-project/3/"},"lastFailedBuild":null,"lastStableBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ant-project/3/"},"lastSuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ant-project/3/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":4,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{}],"description":"","displayName":"model-ruby-project","displayNameOrNull":null,"name":"model-ruby-project","url":"http://ci.jenkins-ci.org/job/model-ruby-project/","buildable":true,"builds":[{"number":9,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/9/"},{"number":8,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/8/"},{"number":7,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/7/"},{"number":6,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/1/"},"healthReport":[{"description":"Build stability: 1 out of the last 5 builds failed.","iconUrl":"health-60to79.png","score":80},{"description":"Test Result: 0 tests failing out of a total of 2 tests.","iconUrl":"health-80plus.png","score":100},{"description":"Rcov coverage: Code coverage 85.71%(85.71)","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":9,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/9/"},"lastCompletedBuild":{"number":9,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/9/"},"lastFailedBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/5/"},"lastStableBuild":{"number":9,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/9/"},"lastSuccessfulBuild":{"number":9,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/9/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":5,"url":"http://ci.jenkins-ci.org/job/model-ruby-project/5/"},"nextBuildNumber":10,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":"Hit the app periodically to prevent them from deactivated.","displayName":"peripheral apps deactivation prevention","displayNameOrNull":null,"name":"peripheral apps deactivation prevention","url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/","buildable":true,"builds":[{"number":11528,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11528/"},{"number":11527,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11527/"},{"number":11526,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11526/"},{"number":11525,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11525/"},{"number":11524,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11524/"},{"number":11523,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11523/"},{"number":11522,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11522/"},{"number":11521,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11521/"},{"number":11520,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11520/"},{"number":11519,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11519/"},{"number":11518,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11518/"},{"number":11517,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11517/"},{"number":11516,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11516/"},{"number":11515,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11515/"},{"number":11514,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11514/"},{"number":11513,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11513/"},{"number":11512,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11512/"},{"number":11511,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11511/"},{"number":11510,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11510/"},{"number":11509,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11509/"},{"number":11508,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11508/"},{"number":11507,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11507/"},{"number":11506,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11506/"},{"number":11505,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11505/"},{"number":11504,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11504/"},{"number":11503,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11503/"},{"number":11502,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11502/"},{"number":11501,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11501/"},{"number":11500,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11500/"},{"number":11499,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11499/"},{"number":11498,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11498/"},{"number":11497,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11497/"},{"number":11496,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11496/"},{"number":11495,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11495/"},{"number":11494,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11494/"},{"number":11493,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11493/"},{"number":11492,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11492/"},{"number":11491,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11491/"},{"number":11490,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11490/"},{"number":11489,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11489/"},{"number":11488,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11488/"},{"number":11487,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11487/"},{"number":11486,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11486/"},{"number":11485,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11485/"},{"number":11484,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11484/"},{"number":11483,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11483/"},{"number":11482,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11482/"},{"number":11481,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11481/"},{"number":11480,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11480/"},{"number":11479,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11479/"},{"number":11478,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11478/"},{"number":11477,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11477/"},{"number":11476,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11476/"},{"number":11475,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11475/"},{"number":11474,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11474/"},{"number":11473,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11473/"},{"number":11472,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11472/"},{"number":11471,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11471/"},{"number":11470,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11470/"},{"number":11469,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11469/"},{"number":11468,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11468/"},{"number":11467,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11467/"},{"number":11466,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11466/"},{"number":11465,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11465/"},{"number":11464,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11464/"},{"number":11463,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11463/"},{"number":11462,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11462/"},{"number":11461,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11461/"},{"number":11460,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11460/"},{"number":11459,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11459/"},{"number":11458,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11458/"},{"number":11457,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11457/"},{"number":11456,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11456/"},{"number":11455,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11455/"},{"number":11454,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11454/"},{"number":11453,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11453/"},{"number":11452,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11452/"},{"number":11451,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11451/"},{"number":11450,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11450/"},{"number":11449,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11449/"},{"number":11448,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11448/"},{"number":11447,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11447/"},{"number":11446,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11446/"},{"number":11445,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11445/"},{"number":11444,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11444/"},{"number":11443,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11443/"},{"number":11442,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11442/"},{"number":11441,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11441/"},{"number":11440,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11440/"},{"number":11439,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11439/"},{"number":11438,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11438/"},{"number":11437,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11437/"},{"number":11436,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11436/"},{"number":11435,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11435/"},{"number":11434,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11434/"},{"number":11433,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11433/"},{"number":11432,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11432/"},{"number":11431,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11431/"},{"number":11430,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11430/"},{"number":11429,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11429/"}],"color":"blue","firstBuild":{"number":11429,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11429/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":11528,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11528/"},"lastCompletedBuild":{"number":11528,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11528/"},"lastFailedBuild":null,"lastStableBuild":{"number":11528,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11528/"},"lastSuccessfulBuild":{"number":11528,"url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/11528/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":11529,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{"parameterDefinitions":[{"defaultParameterValue":{"value":"http://updates.jenkins-ci.org/update-center.json?version=build"},"description":"Update center url used for the test","name":"updateCenterUrl","type":"StringParameterDefinition"},{"defaultParameterValue":{"value":"org.jenkins-ci.plugins:plugin:"},"description":"groupId/artifactId for the parent pom which will be used.<br/>\n<u>Note</u> : If you let this field empty, every, a test on every already tested core versions (in report XML file) will be made.","name":"parentCoordinates","type":"ChoiceParameterDefinition","choices":["org.jenkins-ci.plugins:plugin:","org.jvnet.hudson.plugins:plugin:"]},{"defaultParameterValue":{"value":""},"description":"You can fix a version in there, if you don't want to rely on \"the latest core version retrieved in update center\"<br/>\nIf you selected the blank parentCoordinates, let this field empty please.","name":"parentVersion","type":"StringParameterDefinition"},{"defaultParameterValue":{"value":""},"description":"Comma separated plugin names you want to test.<br/>\n<u>Note</u> : If you let this field empty, every plugins residing in update center will be tested","name":"includePlugins","type":"StringParameterDefinition"},{"defaultParameterValue":{"value":""},"description":"Comma separated plugin names you DON'T want to test.<br/>\n<u>Note</u> : If you let this field empty, the includePlugins policy defined below will be applied \"as is\"<br/>\nList of default excluded plugins (and reason why excluded) :<br/>\n<ul>\n<li>ci-game : Seems like on old hudsons, it doesn't work</li>\n</ul>","name":"excludePlugins","type":"StringParameterDefinition"},{"defaultParameterValue":{"value":true},"description":"Allow to skip plugin-compat-tester unit tests","name":"maven.test.skip","type":"BooleanParameterDefinition"},{"defaultParameterValue":{"value":false},"description":"Allows to skip test cache. For example when you want to force testing of some plugins","name":"skipTestCache","type":"BooleanParameterDefinition"},{"defaultParameterValue":{"value":"TEST_FAILURES"},"description":"Allows to define a minimal cache threshold for test status.<br/>\nThat is to say, every results lower than this threshold won't be considered as part of the cache.<br/>\nSelecting INTERNAL_ERROR here is the same as checking the skipTestCache checkbox.","name":"cacheThresholdStatus","type":"ChoiceParameterDefinition","choices":["TEST_FAILURES","SUCCESS","COMPILATION_ERROR","INTERNAL_ERROR "]},{"defaultParameterValue":{"value":"1728000000"},"description":"Test cache timeout allows to not perform compatibility test over some plugins if compatibility test was performed recently.<br/>\nCache timeout is given in milliseconds.","name":"testCacheTimeout","type":"StringParameterDefinition"}]},{},{}],"description":"Disabled due to failures for unknown reasons, fcamblor or jglick should sign off on re-enabling it in the future","displayName":"plugin-compat-tester","displayNameOrNull":null,"name":"plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/","buildable":false,"builds":[{"number":10232,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10232/"},{"number":10231,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10231/"},{"number":10230,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10230/"},{"number":10229,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10229/"},{"number":10228,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10228/"},{"number":10227,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10227/"},{"number":10226,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10226/"},{"number":10225,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10225/"},{"number":10224,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10224/"},{"number":10223,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10223/"},{"number":10222,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10222/"},{"number":10221,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10221/"},{"number":10220,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10220/"},{"number":10219,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10219/"},{"number":10218,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10218/"},{"number":10217,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10217/"},{"number":10216,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10216/"},{"number":10215,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10215/"},{"number":10214,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10214/"},{"number":10213,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10213/"},{"number":10212,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10212/"},{"number":10211,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10211/"},{"number":10210,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10210/"},{"number":10209,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10209/"},{"number":10208,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10208/"},{"number":10207,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10207/"},{"number":10206,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10206/"},{"number":10205,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10205/"},{"number":10204,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10204/"},{"number":10203,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10203/"},{"number":10202,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10202/"},{"number":10201,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10201/"},{"number":10200,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10200/"},{"number":10199,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10199/"},{"number":10198,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10198/"},{"number":10197,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10197/"},{"number":10196,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10196/"},{"number":10195,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10195/"},{"number":10194,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10194/"},{"number":10193,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10193/"},{"number":10192,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10192/"},{"number":10191,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10191/"},{"number":10190,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10190/"},{"number":10189,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10189/"},{"number":10188,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10188/"},{"number":10187,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10187/"},{"number":10186,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10186/"},{"number":10185,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10185/"},{"number":10184,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10184/"},{"number":10183,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10183/"},{"number":10182,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10182/"},{"number":10181,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10181/"},{"number":10180,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10180/"},{"number":10179,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10179/"},{"number":10178,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10178/"},{"number":10177,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10177/"},{"number":10176,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10176/"},{"number":10175,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10175/"},{"number":10174,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10174/"},{"number":10173,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10173/"},{"number":10172,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10172/"},{"number":10171,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10171/"},{"number":10170,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10170/"},{"number":10169,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10169/"},{"number":10168,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10168/"},{"number":10167,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10167/"},{"number":10166,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10166/"},{"number":10165,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10165/"},{"number":10164,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10164/"},{"number":10163,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10163/"},{"number":10162,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10162/"},{"number":10161,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10161/"},{"number":10160,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10160/"},{"number":10159,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10159/"},{"number":10158,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10158/"},{"number":10157,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10157/"},{"number":10156,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10156/"},{"number":10155,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10155/"},{"number":10154,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10154/"},{"number":10153,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10153/"},{"number":10152,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10152/"},{"number":10151,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10151/"},{"number":10150,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10150/"},{"number":10149,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10149/"},{"number":10148,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10148/"},{"number":10147,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10147/"},{"number":10146,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10146/"},{"number":10145,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10145/"},{"number":10144,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10144/"},{"number":10143,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10143/"},{"number":10142,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10142/"},{"number":10141,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10141/"},{"number":10140,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10140/"},{"number":10139,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10139/"},{"number":10138,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10138/"},{"number":10137,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10137/"},{"number":10136,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10136/"},{"number":10135,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10135/"},{"number":10134,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10134/"},{"number":10133,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10133/"}],"color":"disabled","firstBuild":{"number":8777,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/8777/"},"healthReport":[{"description":"Build stability: 1 out of the last 5 builds failed.","iconUrl":"health-60to79.png","score":80}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":10232,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10232/"},"lastCompletedBuild":{"number":10232,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10232/"},"lastFailedBuild":{"number":10176,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10176/"},"lastStableBuild":{"number":10008,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10008/"},"lastSuccessfulBuild":{"number":10008,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10008/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":10232,"url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/10232/"},"nextBuildNumber":10233,"property":[{},{},{"parameterDefinitions":[{"defaultParameterValue":{"name":"updateCenterUrl","value":"http://updates.jenkins-ci.org/update-center.json?version=build"},"description":"Update center url used for the test","name":"updateCenterUrl","type":"StringParameterDefinition"},{"defaultParameterValue":{"name":"parentCoordinates","value":"org.jenkins-ci.plugins:plugin:"},"description":"groupId/artifactId for the parent pom which will be used.<br/>\n<u>Note</u> : If you let this field empty, every, a test on every already tested core versions (in report XML file) will be made.","name":"parentCoordinates","type":"ChoiceParameterDefinition","choices":["org.jenkins-ci.plugins:plugin:","org.jvnet.hudson.plugins:plugin:"]},{"defaultParameterValue":{"name":"parentVersion","value":""},"description":"You can fix a version in there, if you don't want to rely on \"the latest core version retrieved in update center\"<br/>\nIf you selected the blank parentCoordinates, let this field empty please.","name":"parentVersion","type":"StringParameterDefinition"},{"defaultParameterValue":{"name":"includePlugins","value":""},"description":"Comma separated plugin names you want to test.<br/>\n<u>Note</u> : If you let this field empty, every plugins residing in update center will be tested","name":"includePlugins","type":"StringParameterDefinition"},{"defaultParameterValue":{"name":"excludePlugins","value":""},"description":"Comma separated plugin names you DON'T want to test.<br/>\n<u>Note</u> : If you let this field empty, the includePlugins policy defined below will be applied \"as is\"<br/>\nList of default excluded plugins (and reason why excluded) :<br/>\n<ul>\n<li>ci-game : Seems like on old hudsons, it doesn't work</li>\n</ul>","name":"excludePlugins","type":"StringParameterDefinition"},{"defaultParameterValue":{"name":"maven.test.skip","value":true},"description":"Allow to skip plugin-compat-tester unit tests","name":"maven.test.skip","type":"BooleanParameterDefinition"},{"defaultParameterValue":{"name":"skipTestCache","value":false},"description":"Allows to skip test cache. For example when you want to force testing of some plugins","name":"skipTestCache","type":"BooleanParameterDefinition"},{"defaultParameterValue":{"name":"cacheThresholdStatus","value":"TEST_FAILURES"},"description":"Allows to define a minimal cache threshold for test status.<br/>\nThat is to say, every results lower than this threshold won't be considered as part of the cache.<br/>\nSelecting INTERNAL_ERROR here is the same as checking the skipTestCache checkbox.","name":"cacheThresholdStatus","type":"ChoiceParameterDefinition","choices":["TEST_FAILURES","SUCCESS","COMPILATION_ERROR","INTERNAL_ERROR "]},{"defaultParameterValue":{"name":"testCacheTimeout","value":"1728000000"},"description":"Test cache timeout allows to not perform compatibility test over some plugins if compatibility test was performed recently.<br/>\nCache timeout is given in milliseconds.","name":"testCacheTimeout","type":"StringParameterDefinition"}]},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{},{},{},{}],"description":"","displayName":"remoting","displayNameOrNull":null,"name":"remoting","url":"http://ci.jenkins-ci.org/job/remoting/","buildable":true,"builds":[{"number":4,"url":"http://ci.jenkins-ci.org/job/remoting/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/remoting/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/remoting/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/remoting/1/"}],"color":"blue","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/remoting/1/"},"healthReport":[{"description":"Build stability: 2 out of the last 3 builds failed.","iconUrl":"health-20to39.png","score":33},{"description":"Test Result: 0 tests failing out of a total of 93 tests.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/remoting/4/"},"lastCompletedBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/remoting/4/"},"lastFailedBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/remoting/3/"},"lastStableBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/remoting/4/"},"lastSuccessfulBuild":{"number":4,"url":"http://ci.jenkins-ci.org/job/remoting/4/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":3,"url":"http://ci.jenkins-ci.org/job/remoting/3/"},"nextBuildNumber":5,"property":[{},{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.main:remoting","url":"http://ci.jenkins-ci.org/job/remoting/org.jenkins-ci.main$remoting/","color":"blue","displayName":"Jenkins remoting layer"}]},{"actions":[{},{}],"description":"Runs selenium-tests on the trunk","displayName":"selenium-tests","displayNameOrNull":null,"name":"selenium-tests","url":"http://ci.jenkins-ci.org/job/selenium-tests/","buildable":true,"builds":[{"number":11,"url":"http://ci.jenkins-ci.org/job/selenium-tests/11/"},{"number":10,"url":"http://ci.jenkins-ci.org/job/selenium-tests/10/"},{"number":9,"url":"http://ci.jenkins-ci.org/job/selenium-tests/9/"},{"number":8,"url":"http://ci.jenkins-ci.org/job/selenium-tests/8/"},{"number":7,"url":"http://ci.jenkins-ci.org/job/selenium-tests/7/"},{"number":6,"url":"http://ci.jenkins-ci.org/job/selenium-tests/6/"},{"number":5,"url":"http://ci.jenkins-ci.org/job/selenium-tests/5/"},{"number":4,"url":"http://ci.jenkins-ci.org/job/selenium-tests/4/"},{"number":3,"url":"http://ci.jenkins-ci.org/job/selenium-tests/3/"},{"number":2,"url":"http://ci.jenkins-ci.org/job/selenium-tests/2/"},{"number":1,"url":"http://ci.jenkins-ci.org/job/selenium-tests/1/"}],"color":"red","firstBuild":{"number":1,"url":"http://ci.jenkins-ci.org/job/selenium-tests/1/"},"healthReport":[{"description":"Build stability: All recent builds failed.","iconUrl":"health-00to19.png","score":0}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/selenium-tests/11/"},"lastCompletedBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/selenium-tests/11/"},"lastFailedBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/selenium-tests/11/"},"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":11,"url":"http://ci.jenkins-ci.org/job/selenium-tests/11/"},"nextBuildNumber":12,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[]},{"actions":[{},{}],"description":null,"displayName":"test-matrix","displayNameOrNull":null,"name":"test-matrix","url":"http://ci.jenkins-ci.org/job/test-matrix/","buildable":true,"builds":[],"color":"notbuilt","firstBuild":null,"healthReport":[],"inQueue":false,"keepDependencies":false,"lastBuild":null,"lastCompletedBuild":null,"lastFailedBuild":null,"lastStableBuild":null,"lastSuccessfulBuild":null,"lastUnstableBuild":null,"lastUnsuccessfulBuild":null,"nextBuildNumber":1,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"activeConfigurations":[{"name":"default","url":"http://ci.jenkins-ci.org/job/test-matrix/default/","color":"notbuilt"}]},{"actions":[{},{},null,{}],"description":"","displayName":"tools_maven-hpi-plugin","displayNameOrNull":null,"name":"tools_maven-hpi-plugin","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/","buildable":true,"builds":[{"number":1454,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1454/"},{"number":1453,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1453/"},{"number":1452,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1452/"},{"number":1451,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1451/"},{"number":1450,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1450/"},{"number":1449,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1449/"},{"number":1448,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1448/"},{"number":1447,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1447/"},{"number":1446,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1446/"},{"number":1445,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1445/"},{"number":1444,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1444/"},{"number":1443,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1443/"},{"number":1442,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1442/"},{"number":1441,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1441/"},{"number":1440,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1440/"},{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1439/"},{"number":1438,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1438/"},{"number":1437,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1437/"},{"number":1436,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1436/"},{"number":1435,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1435/"},{"number":1434,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1434/"},{"number":1433,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1433/"},{"number":1432,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1432/"},{"number":1431,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1431/"},{"number":1430,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1430/"},{"number":1429,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1429/"},{"number":1428,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1428/"},{"number":1427,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1427/"},{"number":1426,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1426/"},{"number":1425,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1425/"},{"number":1424,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1424/"},{"number":1423,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1423/"},{"number":1422,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1422/"},{"number":1421,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1421/"},{"number":1420,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1420/"},{"number":1419,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1419/"},{"number":1418,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1418/"},{"number":1417,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1417/"},{"number":1416,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1416/"},{"number":1415,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1415/"},{"number":1414,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1414/"},{"number":1413,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1413/"},{"number":1412,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1412/"},{"number":1411,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1411/"},{"number":1410,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1410/"},{"number":1409,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1409/"},{"number":1408,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1408/"},{"number":1407,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1407/"},{"number":1406,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1406/"},{"number":1405,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1405/"},{"number":1404,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1404/"},{"number":1403,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1403/"},{"number":1402,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1402/"},{"number":1401,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1401/"},{"number":1400,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1400/"},{"number":1399,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1399/"},{"number":1398,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1398/"},{"number":1397,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1397/"},{"number":1396,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1396/"},{"number":1395,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1395/"},{"number":1394,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1394/"},{"number":1393,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1393/"},{"number":1392,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1392/"},{"number":1391,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1391/"},{"number":1390,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1390/"},{"number":1389,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1389/"},{"number":1388,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1388/"},{"number":1387,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1387/"},{"number":1386,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1386/"},{"number":1385,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1385/"},{"number":1384,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1384/"},{"number":1383,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1383/"},{"number":1382,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1382/"},{"number":1381,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1381/"},{"number":1380,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1380/"},{"number":1379,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1379/"},{"number":1378,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1378/"},{"number":1377,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1377/"},{"number":1376,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1376/"},{"number":1375,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1375/"},{"number":1374,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1374/"},{"number":1373,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1373/"},{"number":1372,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1372/"},{"number":1371,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1371/"},{"number":1370,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1370/"},{"number":1369,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1369/"},{"number":1368,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1368/"},{"number":1367,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1367/"},{"number":1366,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1366/"},{"number":1365,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1365/"},{"number":1364,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1364/"},{"number":1363,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1363/"},{"number":1362,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1362/"},{"number":1361,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1361/"},{"number":1360,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1360/"},{"number":1359,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1359/"},{"number":1358,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1358/"},{"number":1357,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1357/"},{"number":1356,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1356/"},{"number":1355,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1355/"}],"color":"blue","firstBuild":{"number":19,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/19/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1454,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1454/"},"lastCompletedBuild":{"number":1454,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1454/"},"lastFailedBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1439/"},"lastStableBuild":{"number":1454,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1454/"},"lastSuccessfulBuild":{"number":1454,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1454/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/1439/"},"nextBuildNumber":1455,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.tools:maven-hpi-plugin","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/org.jenkins-ci.tools$maven-hpi-plugin/","color":"blue","displayName":"Maven Jenkins Plugin"}]},{"actions":[{},{},null,{}],"description":"","displayName":"tools_maven-hpi-plugin-maven-2.x","displayNameOrNull":null,"name":"tools_maven-hpi-plugin-maven-2.x","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/","buildable":true,"builds":[{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1439/"},{"number":1438,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1438/"},{"number":1437,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1437/"},{"number":1436,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1436/"},{"number":1435,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1435/"},{"number":1434,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1434/"},{"number":1433,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1433/"},{"number":1432,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1432/"},{"number":1431,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1431/"},{"number":1430,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1430/"},{"number":1429,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1429/"},{"number":1428,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1428/"},{"number":1427,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1427/"},{"number":1426,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1426/"},{"number":1425,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1425/"},{"number":1424,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1424/"},{"number":1423,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1423/"},{"number":1422,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1422/"},{"number":1421,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1421/"},{"number":1420,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1420/"},{"number":1419,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1419/"},{"number":1418,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1418/"},{"number":1417,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1417/"},{"number":1416,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1416/"},{"number":1415,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1415/"},{"number":1414,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1414/"},{"number":1413,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1413/"},{"number":1412,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1412/"},{"number":1411,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1411/"},{"number":1410,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1410/"},{"number":1409,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1409/"},{"number":1408,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1408/"},{"number":1407,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1407/"},{"number":1406,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1406/"},{"number":1405,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1405/"},{"number":1404,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1404/"},{"number":1403,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1403/"},{"number":1402,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1402/"},{"number":1401,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1401/"},{"number":1400,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1400/"},{"number":1399,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1399/"},{"number":1398,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1398/"},{"number":1397,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1397/"},{"number":1396,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1396/"},{"number":1395,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1395/"},{"number":1394,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1394/"},{"number":1393,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1393/"},{"number":1392,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1392/"},{"number":1391,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1391/"},{"number":1390,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1390/"},{"number":1389,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1389/"},{"number":1388,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1388/"},{"number":1387,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1387/"},{"number":1386,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1386/"},{"number":1385,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1385/"},{"number":1384,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1384/"},{"number":1383,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1383/"},{"number":1382,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1382/"},{"number":1381,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1381/"},{"number":1380,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1380/"},{"number":1379,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1379/"},{"number":1378,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1378/"},{"number":1377,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1377/"},{"number":1376,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1376/"},{"number":1375,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1375/"},{"number":1374,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1374/"},{"number":1373,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1373/"},{"number":1372,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1372/"},{"number":1371,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1371/"},{"number":1370,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1370/"},{"number":1369,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1369/"},{"number":1368,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1368/"},{"number":1367,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1367/"},{"number":1366,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1366/"},{"number":1365,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1365/"},{"number":1364,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1364/"},{"number":1363,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1363/"},{"number":1362,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1362/"},{"number":1361,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1361/"},{"number":1360,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1360/"},{"number":1359,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1359/"},{"number":1358,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1358/"},{"number":1357,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1357/"},{"number":1356,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1356/"},{"number":1355,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1355/"},{"number":1354,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1354/"},{"number":1353,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1353/"},{"number":1352,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1352/"},{"number":1351,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1351/"},{"number":1350,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1350/"},{"number":1349,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1349/"},{"number":1348,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1348/"},{"number":1347,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1347/"},{"number":1346,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1346/"},{"number":1345,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1345/"},{"number":1344,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1344/"},{"number":1343,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1343/"},{"number":1342,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1342/"},{"number":1341,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1341/"},{"number":1340,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1340/"}],"color":"blue","firstBuild":{"number":13,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/13/"},"healthReport":[{"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}],"inQueue":false,"keepDependencies":false,"lastBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1439/"},"lastCompletedBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1439/"},"lastFailedBuild":{"number":1421,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1421/"},"lastStableBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1439/"},"lastSuccessfulBuild":{"number":1439,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1439/"},"lastUnstableBuild":null,"lastUnsuccessfulBuild":{"number":1421,"url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/1421/"},"nextBuildNumber":1440,"property":[{}],"queueItem":null,"concurrentBuild":false,"downstreamProjects":[],"scm":{},"upstreamProjects":[],"modules":[{"name":"org.jenkins-ci.tools:maven-hpi-plugin","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/org.jenkins-ci.tools$maven-hpi-plugin/","color":"blue","displayName":"Maven Jenkins Plugin"}]}],"overallLoad":{"busyExecutors":{},"queueLength":{},"totalExecutors":{},"totalQueueLength":{}},"primaryView":{"description":null,"jobs":[{"name":"core_selenium-test","url":"http://ci.jenkins-ci.org/job/core_selenium-test/","color":"red"},{"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","color":"disabled"},{"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","color":"red"},{"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","color":"red"},{"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","color":"red"},{"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","color":"red"},{"name":"infra_plugin_changes_report","url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/","color":"red"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","color":"red"},{"name":"jenkins_ui-changes_branch","url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/","color":"red"},{"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","color":"red"},{"name":"selenium-tests","url":"http://ci.jenkins-ci.org/job/selenium-tests/","color":"red"}],"name":"All Failed","property":[],"url":"http://ci.jenkins-ci.org/"},"quietingDown":false,"slaveAgentPort":47278,"unlabeledLoad":{"busyExecutors":{},"queueLength":{},"totalExecutors":{}},"useCrumbs":false,"useSecurity":true,"views":[{"description":null,"jobs":[{"name":"config-provider-model","url":"http://ci.jenkins-ci.org/job/config-provider-model/","color":"blue"},{"name":"core_selenium-test","url":"http://ci.jenkins-ci.org/job/core_selenium-test/","color":"red"},{"name":"fix-git-configuration-on-remote-slave-8","url":"http://ci.jenkins-ci.org/job/fix-git-configuration-on-remote-slave-8/","color":"blue"},{"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","color":"disabled"},{"name":"infra_backend-confluence-spam-remover","url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/","color":"blue"},{"name":"infra_backend-merge-all-repo","url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/","color":"blue"},{"name":"infra_backend-plugin-report-card","url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/","color":"blue"},{"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","color":"red"},{"name":"infra_backend_jenkins_ci_cloudbess_com_filler","url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/","color":"blue"},{"name":"infra_backend_pull_request_greeter","url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/","color":"blue"},{"name":"infra_changelog_refresh","url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/","color":"blue"},{"name":"infra_checkout_stats","url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/","color":"blue"},{"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","color":"red"},{"name":"infra_drupalcron","url":"http://ci.jenkins-ci.org/job/infra_drupalcron/","color":"blue"},{"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","color":"red"},{"name":"infra_generate_monthly_json","url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/","color":"blue"},{"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","color":"red"},{"name":"infra_javadoc","url":"http://ci.jenkins-ci.org/job/infra_javadoc/","color":"blue"},{"name":"infra_jenkins-ci.org_jekyll","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/","color":"blue"},{"name":"infra_jenkins-ci.org_webcontents","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/","color":"blue"},{"name":"infra_main_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/","color":"disabled"},{"name":"infra_mirroring","url":"http://ci.jenkins-ci.org/job/infra_mirroring/","color":"blue"},{"name":"infra_patron_messages","url":"http://ci.jenkins-ci.org/job/infra_patron_messages/","color":"blue"},{"name":"infra_plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/","color":"blue"},{"name":"infra_plugin_changes_report","url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/","color":"red"},{"name":"infra_pluginmirror","url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/","color":"blue"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_pull_m2repo","url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/","color":"aborted"},{"name":"infra_pull_releases","url":"http://ci.jenkins-ci.org/job/infra_pull_releases/","color":"disabled"},{"name":"infra_release.rss","url":"http://ci.jenkins-ci.org/job/infra_release.rss/","color":"blue"},{"name":"infra_repo.jenkins-ci.org_maven_index","url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/","color":"blue"},{"name":"infra_robobutler","url":"http://ci.jenkins-ci.org/job/infra_robobutler/","color":"blue"},{"name":"infra_statistics","url":"http://ci.jenkins-ci.org/job/infra_statistics/","color":"blue"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","color":"red"},{"name":"infra_update_center","url":"http://ci.jenkins-ci.org/job/infra_update_center/","color":"blue_anime"},{"name":"infra_update_center_experimental","url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/","color":"blue"},{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"},{"name":"infra_update_center_stable","url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/","color":"blue"},{"name":"infra_update_mave_site","url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/","color":"blue"},{"name":"jenkins_lts_branch","url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/","color":"blue"},{"name":"jenkins_main_maven-3.1.0","url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/","color":"blue"},{"name":"jenkins_main_trunk","url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/","color":"blue"},{"name":"jenkins_pom","url":"http://ci.jenkins-ci.org/job/jenkins_pom/","color":"blue"},{"name":"jenkins_rc_branch","url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/","color":"blue"},{"name":"jenkins_ui-changes_branch","url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/","color":"red"},{"name":"kohsuke_github-api","url":"http://ci.jenkins-ci.org/job/kohsuke_github-api/","color":"blue"},{"name":"lib-jenkins-maven-artifact-manager","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/","color":"blue"},{"name":"lib-jenkins-maven-embedder","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/","color":"blue"},{"name":"lib-jira-api","url":"http://ci.jenkins-ci.org/job/lib-jira-api/","color":"blue"},{"name":"libs_core-js","url":"http://ci.jenkins-ci.org/job/libs_core-js/","color":"blue"},{"name":"libs_dom4j","url":"http://ci.jenkins-ci.org/job/libs_dom4j/","color":"blue"},{"name":"libs_htmlunit","url":"http://ci.jenkins-ci.org/job/libs_htmlunit/","color":"aborted"},{"name":"libs_jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/","color":"blue"},{"name":"libs_jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/","color":"blue"},{"name":"libs_jmdns","url":"http://ci.jenkins-ci.org/job/libs_jmdns/","color":"blue"},{"name":"libs_json-lib","url":"http://ci.jenkins-ci.org/job/libs_json-lib/","color":"blue"},{"name":"libs_maven-jetty-plugin","url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/","color":"blue"},{"name":"libs_netx","url":"http://ci.jenkins-ci.org/job/libs_netx/","color":"blue"},{"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","color":"red"},{"name":"libs_trilead-ssh2","url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/","color":"blue"},{"name":"libs_winstone","url":"http://ci.jenkins-ci.org/job/libs_winstone/","color":"blue"},{"name":"libs_xstream","url":"http://ci.jenkins-ci.org/job/libs_xstream/","color":"blue"},{"name":"maven-interceptors","url":"http://ci.jenkins-ci.org/job/maven-interceptors/","color":"blue"},{"name":"model-ant-project","url":"http://ci.jenkins-ci.org/job/model-ant-project/","color":"blue"},{"name":"model-ruby-project","url":"http://ci.jenkins-ci.org/job/model-ruby-project/","color":"blue"},{"name":"peripheral apps deactivation prevention","url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/","color":"blue"},{"name":"plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/","color":"disabled"},{"name":"remoting","url":"http://ci.jenkins-ci.org/job/remoting/","color":"blue"},{"name":"selenium-tests","url":"http://ci.jenkins-ci.org/job/selenium-tests/","color":"red"},{"name":"test-matrix","url":"http://ci.jenkins-ci.org/job/test-matrix/","color":"notbuilt"},{"name":"tools_maven-hpi-plugin","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/","color":"blue"},{"name":"tools_maven-hpi-plugin-maven-2.x","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/","color":"blue"}],"name":"All","property":[],"url":"http://ci.jenkins-ci.org/view/All/"},{"description":null,"jobs":[{"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","color":"disabled"},{"name":"infra_main_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/","color":"disabled"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_pull_releases","url":"http://ci.jenkins-ci.org/job/infra_pull_releases/","color":"disabled"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/plugin-compat-tester/","color":"disabled"}],"name":"All Disabled","property":[],"url":"http://ci.jenkins-ci.org/view/All%20Disabled/"},{"description":null,"jobs":[{"name":"core_selenium-test","url":"http://ci.jenkins-ci.org/job/core_selenium-test/","color":"red"},{"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","color":"disabled"},{"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","color":"red"},{"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","color":"red"},{"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","color":"red"},{"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","color":"red"},{"name":"infra_plugin_changes_report","url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/","color":"red"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","color":"red"},{"name":"jenkins_ui-changes_branch","url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/","color":"red"},{"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","color":"red"},{"name":"selenium-tests","url":"http://ci.jenkins-ci.org/job/selenium-tests/","color":"red"}],"name":"All Failed","property":[],"url":"http://ci.jenkins-ci.org/"},{"description":"<big>Jenkins project infrastructure jobs</big>","jobs":[{"name":"infra_backend-confluence-spam-remover","url":"http://ci.jenkins-ci.org/job/infra_backend-confluence-spam-remover/","color":"blue"},{"name":"infra_backend-merge-all-repo","url":"http://ci.jenkins-ci.org/job/infra_backend-merge-all-repo/","color":"blue"},{"name":"infra_backend-plugin-report-card","url":"http://ci.jenkins-ci.org/job/infra_backend-plugin-report-card/","color":"blue"},{"name":"infra_backend-war-size-tracker","url":"http://ci.jenkins-ci.org/job/infra_backend-war-size-tracker/","color":"red"},{"name":"infra_backend_jenkins_ci_cloudbess_com_filler","url":"http://ci.jenkins-ci.org/job/infra_backend_jenkins_ci_cloudbess_com_filler/","color":"blue"},{"name":"infra_backend_pull_request_greeter","url":"http://ci.jenkins-ci.org/job/infra_backend_pull_request_greeter/","color":"blue"},{"name":"infra_changelog_refresh","url":"http://ci.jenkins-ci.org/job/infra_changelog_refresh/","color":"blue"},{"name":"infra_checkout_stats","url":"http://ci.jenkins-ci.org/job/infra_checkout_stats/","color":"blue"},{"name":"infra_commit_history_generation","url":"http://ci.jenkins-ci.org/job/infra_commit_history_generation/","color":"red"},{"name":"infra_drupalcron","url":"http://ci.jenkins-ci.org/job/infra_drupalcron/","color":"blue"},{"name":"infra_extension-indexer","url":"http://ci.jenkins-ci.org/job/infra_extension-indexer/","color":"red"},{"name":"infra_generate_monthly_json","url":"http://ci.jenkins-ci.org/job/infra_generate_monthly_json/","color":"blue"},{"name":"infra_github_repository_list","url":"http://ci.jenkins-ci.org/job/infra_github_repository_list/","color":"red"},{"name":"infra_javadoc","url":"http://ci.jenkins-ci.org/job/infra_javadoc/","color":"blue"},{"name":"infra_jenkins-ci.org_jekyll","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_jekyll/","color":"blue"},{"name":"infra_jenkins-ci.org_webcontents","url":"http://ci.jenkins-ci.org/job/infra_jenkins-ci.org_webcontents/","color":"blue"},{"name":"infra_main_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_main_svn_to_git/","color":"disabled"},{"name":"infra_mirroring","url":"http://ci.jenkins-ci.org/job/infra_mirroring/","color":"blue"},{"name":"infra_patron_messages","url":"http://ci.jenkins-ci.org/job/infra_patron_messages/","color":"blue"},{"name":"infra_plugin-compat-tester","url":"http://ci.jenkins-ci.org/job/infra_plugin-compat-tester/","color":"blue"},{"name":"infra_plugin_changes_report","url":"http://ci.jenkins-ci.org/job/infra_plugin_changes_report/","color":"red"},{"name":"infra_pluginmirror","url":"http://ci.jenkins-ci.org/job/infra_pluginmirror/","color":"blue"},{"name":"infra_plugins_svn_to_git","url":"http://ci.jenkins-ci.org/job/infra_plugins_svn_to_git/","color":"disabled"},{"name":"infra_pull_m2repo","url":"http://ci.jenkins-ci.org/job/infra_pull_m2repo/","color":"aborted"},{"name":"infra_pull_releases","url":"http://ci.jenkins-ci.org/job/infra_pull_releases/","color":"disabled"},{"name":"infra_release.rss","url":"http://ci.jenkins-ci.org/job/infra_release.rss/","color":"blue"},{"name":"infra_repo.jenkins-ci.org_maven_index","url":"http://ci.jenkins-ci.org/job/infra_repo.jenkins-ci.org_maven_index/","color":"blue"},{"name":"infra_robobutler","url":"http://ci.jenkins-ci.org/job/infra_robobutler/","color":"blue"},{"name":"infra_statistics","url":"http://ci.jenkins-ci.org/job/infra_statistics/","color":"blue"},{"name":"infra_svnsync","url":"http://ci.jenkins-ci.org/job/infra_svnsync/","color":"disabled"},{"name":"infra_sync_maven-hpi-plugin_www","url":"http://ci.jenkins-ci.org/job/infra_sync_maven-hpi-plugin_www/","color":"red"},{"name":"infra_update_center","url":"http://ci.jenkins-ci.org/job/infra_update_center/","color":"blue_anime"},{"name":"infra_update_center_experimental","url":"http://ci.jenkins-ci.org/job/infra_update_center_experimental/","color":"blue"},{"name":"infra_update_center_mirror","url":"http://ci.jenkins-ci.org/job/infra_update_center_mirror/","color":"blue"},{"name":"infra_update_center_stable","url":"http://ci.jenkins-ci.org/job/infra_update_center_stable/","color":"blue"},{"name":"infra_update_mave_site","url":"http://ci.jenkins-ci.org/job/infra_update_mave_site/","color":"blue"},{"name":"peripheral apps deactivation prevention","url":"http://ci.jenkins-ci.org/job/peripheral%20apps%20deactivation%20prevention/","color":"blue"}],"name":"Infrastructure","property":[],"url":"http://ci.jenkins-ci.org/view/Infrastructure/"},{"description":null,"jobs":[{"name":"core_selenium-test","url":"http://ci.jenkins-ci.org/job/core_selenium-test/","color":"red"},{"name":"jenkins_lts_branch","url":"http://ci.jenkins-ci.org/job/jenkins_lts_branch/","color":"blue"},{"name":"jenkins_main_maven-3.1.0","url":"http://ci.jenkins-ci.org/job/jenkins_main_maven-3.1.0/","color":"blue"},{"name":"jenkins_main_trunk","url":"http://ci.jenkins-ci.org/job/jenkins_main_trunk/","color":"blue"},{"name":"jenkins_pom","url":"http://ci.jenkins-ci.org/job/jenkins_pom/","color":"blue"},{"name":"jenkins_rc_branch","url":"http://ci.jenkins-ci.org/job/jenkins_rc_branch/","color":"blue"},{"name":"jenkins_ui-changes_branch","url":"http://ci.jenkins-ci.org/job/jenkins_ui-changes_branch/","color":"red"},{"name":"remoting","url":"http://ci.jenkins-ci.org/job/remoting/","color":"blue"},{"name":"selenium-tests","url":"http://ci.jenkins-ci.org/job/selenium-tests/","color":"red"}],"name":"Jenkins core","property":[],"url":"http://ci.jenkins-ci.org/view/Jenkins%20core/"},{"description":"<big>Jenkins libraries - both patched third-party libraries and our own</big>","jobs":[{"name":"config-provider-model","url":"http://ci.jenkins-ci.org/job/config-provider-model/","color":"blue"},{"name":"lib-jenkins-maven-artifact-manager","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/","color":"blue"},{"name":"lib-jenkins-maven-embedder","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/","color":"blue"},{"name":"lib-jira-api","url":"http://ci.jenkins-ci.org/job/lib-jira-api/","color":"blue"},{"name":"libs_core-js","url":"http://ci.jenkins-ci.org/job/libs_core-js/","color":"blue"},{"name":"libs_dom4j","url":"http://ci.jenkins-ci.org/job/libs_dom4j/","color":"blue"},{"name":"libs_htmlunit","url":"http://ci.jenkins-ci.org/job/libs_htmlunit/","color":"aborted"},{"name":"libs_jelly","url":"http://ci.jenkins-ci.org/job/libs_jelly/","color":"blue"},{"name":"libs_jexl","url":"http://ci.jenkins-ci.org/job/libs_jexl/","color":"blue"},{"name":"libs_jmdns","url":"http://ci.jenkins-ci.org/job/libs_jmdns/","color":"blue"},{"name":"libs_json-lib","url":"http://ci.jenkins-ci.org/job/libs_json-lib/","color":"blue"},{"name":"libs_maven-jetty-plugin","url":"http://ci.jenkins-ci.org/job/libs_maven-jetty-plugin/","color":"blue"},{"name":"libs_netx","url":"http://ci.jenkins-ci.org/job/libs_netx/","color":"blue"},{"name":"libs_svnkit","url":"http://ci.jenkins-ci.org/job/libs_svnkit/","color":"red"},{"name":"libs_trilead-ssh2","url":"http://ci.jenkins-ci.org/job/libs_trilead-ssh2/","color":"blue"},{"name":"libs_winstone","url":"http://ci.jenkins-ci.org/job/libs_winstone/","color":"blue"},{"name":"libs_xstream","url":"http://ci.jenkins-ci.org/job/libs_xstream/","color":"blue"},{"name":"maven-interceptors","url":"http://ci.jenkins-ci.org/job/maven-interceptors/","color":"blue"},{"name":"tools_maven-hpi-plugin","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin/","color":"blue"},{"name":"tools_maven-hpi-plugin-maven-2.x","url":"http://ci.jenkins-ci.org/job/tools_maven-hpi-plugin-maven-2.x/","color":"blue"}],"name":"Libraries","property":[],"url":"http://ci.jenkins-ci.org/view/Libraries/"},{"description":null,"jobs":[{"name":"gerrit_master","url":"http://ci.jenkins-ci.org/job/gerrit_master/","color":"disabled"},{"name":"lib-jenkins-maven-artifact-manager","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-artifact-manager/","color":"blue"},{"name":"lib-jenkins-maven-embedder","url":"http://ci.jenkins-ci.org/job/lib-jenkins-maven-embedder/","color":"blue"},{"name":"lib-jira-api","url":"http://ci.jenkins-ci.org/job/lib-jira-api/","color":"blue"},{"name":"model-ant-project","url":"http://ci.jenkins-ci.org/job/model-ant-project/","color":"blue"},{"name":"model-ruby-project","url":"http://ci.jenkins-ci.org/job/model-ruby-project/","color":"blue"}],"name":"Other Projects","property":[],"url":"http://ci.jenkins-ci.org/view/Other%20Projects/"}]}
+ test/productsdb.json view
@@ -0,0 +1,32 @@+ {+ "name":"Product",+ "properties":+ {+ "id":+ {+ "type":"number",+ "description":"Product identifier",+ "required":true+ },+ "name":+ {+ "description":"Name of the product",+ "type":"string",+ "required":true+ },+ "price":+ {+ "type":"number",+ "minimum":0,+ "required":true+ },+ "tags":+ {+ "type":"array",+ "items":+ {+ "type":"string"+ }+ }+ }+}
+ test/qc/TestQC.hs view
@@ -0,0 +1,29 @@+-- | QuickCheck instances for automatically generating JSON inputs,+-- and checking that json-to-type works correctly on these.+module Main(+ main+ ) where++import Control.Monad+import Data.Aeson+import JsonToType.Extract+import JsonToType.Test() -- Arbitrary instance for Value++import Test.QuickCheck+--import Test.QuickCheck.Parallel+import Test.SmallCheck+--import Test.QuickCheck.Arbitrary++prop_typeCheck :: Value -> Bool+prop_typeCheck v = v `typeCheck` extractType v++-- | Maximum reasonable depth for quick exhaustive testing+depth = 5++main :: IO ()+main = do smallCheck depth prop_typeCheck+ quickCheckWith myArgs prop_typeCheck+ where+ -- 17 - reasonable size for runghc+ --myArgs i = stdArgs { maxSize=i }+ myArgs = stdArgs { maxSize=17, maxSuccess=1000 }
+ test/youtube.json view
@@ -0,0 +1,53 @@+{"apiVersion":"2.0",+ "data":{+ "updated":"2010-01-07T19:58:42.949Z",+ "totalItems":800,+ "startIndex":1,+ "itemsPerPage":1,+ "items":[+ {"id":"hYB0mn5zh2c",+ "uploaded":"2007-06-05T22:07:03.000Z",+ "updated":"2010-01-07T13:26:50.000Z",+ "uploader":"GoogleDeveloperDay",+ "category":"News",+ "title":"Google Developers Day US - Maps API Introduction",+ "description":"Google Maps API Introduction ...",+ "tags":[+ "GDD07","GDD07US","Maps"+ ],+ "thumbnail":{+ "default":"http://i.ytimg.com/vi/hYB0mn5zh2c/default.jpg",+ "hqDefault":"http://i.ytimg.com/vi/hYB0mn5zh2c/hqdefault.jpg"+ },+ "player":{+ "default":"http://www.youtube.com/watch?v\u003dhYB0mn5zh2c"+ },+ "content":{+ "1":"rtsp://v5.cache3.c.youtube.com/CiILENy.../0/0/0/video.3gp",+ "5":"http://www.youtube.com/v/hYB0mn5zh2c?f...",+ "6":"rtsp://v1.cache1.c.youtube.com/CiILENy.../0/0/0/video.3gp"+ },+ "duration":2840,+ "aspectRatio":"widescreen",+ "rating":4.63,+ "ratingCount":68,+ "viewCount":220101,+ "favoriteCount":201,+ "commentCount":22,+ "status":{+ "value":"restricted",+ "reason":"limitedSyndication"+ },+ "accessControl":{+ "syndicate":"allowed",+ "commentVote":"allowed",+ "rate":"allowed",+ "list":"allowed",+ "comment":"allowed",+ "embed":"allowed",+ "videoRespond":"moderated"+ }+ }+ ]+ }+}