@@ -8,6 +8,7 @@ module Stackage.CompleteBuild
8 , completeBuild
8 , completeBuild
9 , justCheck
9 , justCheck
10 , justUploadNightly
10 , justUploadNightly
11+ , getStackageAuthToken
13import Control.Concurrent (threadDelay)
14import Control.Concurrent (threadDelay)
@@ -39,6 +40,7 @@ data BuildFlags = BuildFlags
39 , bfEnableExecDyn :: !Bool
40 , bfEnableExecDyn :: !Bool
40 , bfVerbose :: !Bool
41 , bfVerbose :: !Bool
41 , bfSkipCheck :: !Bool
42 , bfSkipCheck :: !Bool
43+ , bfUploadV2 :: !Bool
42 } deriving (Show)
44 } deriving (Show)
44data BuildType = Nightly | LTS BumpType
46data BuildType = Nightly | LTS BumpType
@@ -251,7 +253,7 @@ completeBuild buildType buildFlags = withManager tlsManagerSettings $ \man -> do
253 when (bfDoUpload buildFlags) $
255 when (bfDoUpload buildFlags) $
254− finallyUpload settings man
256+ finallyUpload (bfUploadV2 buildFlags) settings man
256justUploadNightly
258justUploadNightly
257 :: Text -- ^ nightly date
259 :: Text -- ^ nightly date
@@ -259,40 +261,62 @@ justUploadNightly
259justUploadNightly day = do
261justUploadNightly day = do
260 plan <- decodeFileEither (fpToString $ nightlyPlanFile day)
262 plan <- decodeFileEither (fpToString $ nightlyPlanFile day)
261 >>= either throwM return
263 >>= either throwM return
262− withManager tlsManagerSettings $ finallyUpload $ nightlySettings day plan
264+ withManager tlsManagerSettings $ finallyUpload False $ nightlySettings day plan
266+getStackageAuthToken :: IO Text
267+getStackageAuthToken = do
268+ mtoken <- lookupEnv "STACKAGE_AUTH_TOKEN"
270+ Nothing -> decodeUtf8 <$> readFile "/auth-token"
271+ Just token -> return $ pack token
264-- | The final part of the complete build process: uploading a bundle,
273-- | The final part of the complete build process: uploading a bundle,
265-- docs and a distro to hackage.
274-- docs and a distro to hackage.
275+finallyUpload :: Bool -- ^ use v2 upload
266−finallyUpload :: Settings -> Manager -> IO ()
276+ -> Settings -> Manager -> IO ()
267−finallyUpload settings@Settings{..} man = do
277+finallyUpload useV2 settings@Settings{..} man = do
268 putStrLn "Uploading bundle to Stackage Server"
278 putStrLn "Uploading bundle to Stackage Server"
270− mtoken <- lookupEnv "STACKAGE_AUTH_TOKEN"
280+ token <- getStackageAuthToken
273− Nothing -> decodeUtf8 <$> readFile "/auth-token"
274− Just token -> return $ pack token
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
282− putStrLn $ "New ident: " ++ unSnapshotIdent ident
283− forM_ mloc $ \loc ->
284− putStrLn $ "Track progress at: " ++ loc
286− postBuild `catchAny` print
282+ if useV2
284+ res <- flip uploadBundleV2 man UploadBundleV2
286+ , ub2AuthToken = token
287+ , ub2Bundle = bundleDest
289+ putStrLn $ "New snapshot available at: " ++ res
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
297+ putStrLn $ "New ident: " ++ unSnapshotIdent ident
298+ forM_ mloc $ \loc ->
299+ putStrLn $ "Track progress at: " ++ loc
301+ putStrLn "Uploading docs to Stackage Server"
302+ res1 <- tryAny $ uploadDocs UploadDocs
304+ , udAuthToken = token
305+ , udDocs = pbDocDir pb
306+ , udSnapshot = ident
308+ putStrLn $ "Doc upload response: " ++ tshow res1
310+ putStrLn "Uploading doc map"
311+ tryAny (uploadDocMap UploadDocMap
313+ , udmAuthToken = token
314+ , udmSnapshot = ident
315+ , udmDocDir = pbDocDir pb
288− putStrLn "Uploading docs to Stackage Server"
319+ postBuild `catchAny` print
289− res1 <- uploadDocs UploadDocs
291− , udAuthToken = token
292− , udDocs = pbDocDir pb
293− , udSnapshot = ident
295− putStrLn $ "Doc upload response: " ++ tshow res1
297 ecreds <- tryIO $ readFile "/hackage-creds"
321 ecreds <- tryIO $ readFile "/hackage-creds"
298 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
322 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
@@ -301,14 +325,5 @@ finallyUpload settings@Settings{..} man = do
301 res2 <- uploadHackageDistroNamed distroName plan username password man
325 res2 <- uploadHackageDistroNamed distroName plan username password man
302 putStrLn $ "Distro upload response: " ++ tshow res2
326 putStrLn $ "Distro upload response: " ++ tshow res2
303 _ -> putStrLn "No creds found, skipping Hackage distro upload"
327 _ -> putStrLn "No creds found, skipping Hackage distro upload"
305− putStrLn "Uploading doc map"
306− uploadDocMap UploadDocMap
308− , udmAuthToken = token
309− , udmSnapshot = ident
310− , udmDocDir = pbDocDir pb
314 pb = getPerformBuild (error "finallyUpload.buildFlags") settings
329 pb = getPerformBuild (error "finallyUpload.buildFlags") settings