@@ -8,6 +8,7 @@ module Stackage.CompleteBuild
88 , completeBuild
99 , justCheck
1010 , justUploadNightly
11+ , getStackageAuthToken
1112 ) where
1213
1314import Control.Concurrent (threadDelay)
@@ -39,6 +40,7 @@ data BuildFlags = BuildFlags
3940 , bfEnableExecDyn :: !Bool
4041 , bfVerbose :: !Bool
4142 , bfSkipCheck :: !Bool
43+ , bfUploadV2 :: !Bool
4244 } deriving (Show)
4345
4446data BuildType = Nightly | LTS BumpType
@@ -251,7 +253,7 @@ completeBuild buildType buildFlags = withManager tlsManagerSettings $ \man -> do
251253 }
252254
253255 when (bfDoUpload buildFlags) $
254− finallyUpload settings man
256+ finallyUpload (bfUploadV2 buildFlags) settings man
255257
256258justUploadNightly
257259 :: Text -- ^ nightly date
@@ -259,40 +261,62 @@ justUploadNightly
259261justUploadNightly day = do
260262 plan <- decodeFileEither (fpToString $ nightlyPlanFile day)
261263 >>= either throwM return
262− withManager tlsManagerSettings $ finallyUpload $ nightlySettings day plan
264+ withManager tlsManagerSettings $ finallyUpload False $ nightlySettings day plan
265+
266+getStackageAuthToken :: IO Text
267+getStackageAuthToken = do
268+ mtoken <- lookupEnv "STACKAGE_AUTH_TOKEN"
269+ case mtoken of
270+ Nothing -> decodeUtf8 <$> readFile "/auth-token"
271+ Just token -> return $ pack token
263272
264273-- | The final part of the complete build process: uploading a bundle,
265274-- docs and a distro to hackage.
266−finallyUpload :: Settings -> Manager -> IO ()
267−finallyUpload settings@Settings{..} man = do
275+finallyUpload :: Bool -- ^ use v2 upload
276+ -> Settings -> Manager -> IO ()
277+finallyUpload useV2 settings@Settings{..} man = do
268278 putStrLn "Uploading bundle to Stackage Server"
269279
270− mtoken <- lookupEnv "STACKAGE_AUTH_TOKEN"
271− token <-
272− case mtoken of
273− Nothing -> decodeUtf8 <$> readFile "/auth-token"
274− Just token -> return $ pack token
275−
276− now <- epochTime
277− let ghcVer = display $ siGhcVersion $ bpSystemInfo plan
278− (ident, mloc) <- flip uploadBundle man $ setArgs ghcVer def
279− { ubContents = serverBundle now (title ghcVer) slug plan
280− , ubAuthToken = token
281− }
282− putStrLn $ "New ident: " ++ unSnapshotIdent ident
283− forM_ mloc $ \loc ->
284− putStrLn $ "Track progress at: " ++ loc
280+ token <- getStackageAuthToken
285281
286− postBuild `catchAny` print
282+ if useV2
283+ then do
284+ res <- flip uploadBundleV2 man UploadBundleV2
285+ { ub2Server = def
286+ , ub2AuthToken = token
287+ , ub2Bundle = bundleDest
288+ }
289+ putStrLn $ "New snapshot available at: " ++ res
290+ else do
291+ now <- epochTime
292+ let ghcVer = display $ siGhcVersion $ bpSystemInfo plan
293+ (ident, mloc) <- flip uploadBundle man $ setArgs ghcVer def
294+ { ubContents = serverBundle now (title ghcVer) slug plan
295+ , ubAuthToken = token
296+ }
297+ putStrLn $ "New ident: " ++ unSnapshotIdent ident
298+ forM_ mloc $ \loc ->
299+ putStrLn $ "Track progress at: " ++ loc
300+
301+ putStrLn "Uploading docs to Stackage Server"
302+ res1 <- tryAny $ uploadDocs UploadDocs
303+ { udServer = def
304+ , udAuthToken = token
305+ , udDocs = pbDocDir pb
306+ , udSnapshot = ident
307+ } man
308+ putStrLn $ "Doc upload response: " ++ tshow res1
309+
310+ putStrLn "Uploading doc map"
311+ tryAny (uploadDocMap UploadDocMap
312+ { udmServer = def
313+ , udmAuthToken = token
314+ , udmSnapshot = ident
315+ , udmDocDir = pbDocDir pb
316+ , udmPlan = plan
317+ } man) >>= print
287318
288− putStrLn "Uploading docs to Stackage Server"
289− res1 <- uploadDocs UploadDocs
290− { udServer = def
291− , udAuthToken = token
292− , udDocs = pbDocDir pb
293− , udSnapshot = ident
294− } man
295− putStrLn $ "Doc upload response: " ++ tshow res1
319+ postBuild `catchAny` print
296320
297321 ecreds <- tryIO $ readFile "/hackage-creds"
298322 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
@@ -301,14 +325,5 @@ finallyUpload settings@Settings{..} man = do
301325 res2 <- uploadHackageDistroNamed distroName plan username password man
302326 putStrLn $ "Distro upload response: " ++ tshow res2
303327 _ -> putStrLn "No creds found, skipping Hackage distro upload"
304−
305− putStrLn "Uploading doc map"
306− uploadDocMap UploadDocMap
307− { udmServer = def
308− , udmAuthToken = token
309− , udmSnapshot = ident
310− , udmDocDir = pbDocDir pb
311− , udmPlan = plan
312− } man >>= print
313328 where
314329 pb = getPerformBuild (error "finallyUpload.buildFlags") settings