-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathbuild.fsx
executable file
·63 lines (50 loc) · 2.4 KB
/
build.fsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#r "paket:
version 7.0.2
framework: net6.0
source https://api.nuget.org/v3/index.json
nuget Be.Vlaanderen.Basisregisters.Build.Pipeline 6.0.5 //"
#load "packages/Be.Vlaanderen.Basisregisters.Build.Pipeline/Content/build-generic.fsx"
open System
open System.IO
open Fake.Core
open Fake.Core.TargetOperators
open Fake.DotNet
open Fake.IO
open Fake.IO.FileSystemOperators
open Fake.JavaScript
open ``Build-generic``
let product = "Basisregisters Vlaanderen"
let copyright = "Copyright (c) Vlaamse overheid"
let company = "Vlaamse overheid"
let dockerRepository = "basisregisters"
let assemblyVersionNumber = (sprintf "2.%s")
let buildNumber = Environment.environVarOrDefault "CI_BUILD_NUMBER" "0.0.0"
let containerizeWithCustomBuildArgs dockerRepository project containerName buildargs dockerfile =
let result1 =
$"build . --no-cache --tag {dockerRegistry}/{dockerRepository}/{containerName}:{buildNumber} {buildargs} -f {dockerfile}".Split [|' '|]
|> CreateProcess.fromRawCommand "docker"
|> CreateProcess.withWorkingDirectory (buildDir @@ project @@ "linux")
|> CreateProcess.withTimeout (TimeSpan.FromMinutes 20.)
|> Proc.run
if result1.ExitCode <> 0 then failwith "Failed result from Docker Build"
let result2 =
[ "tag"; sprintf "%s/%s/%s:%s" dockerRegistry dockerRepository containerName buildNumber; sprintf "%s/%s/%s:latest" dockerRegistry dockerRepository containerName]
|> CreateProcess.fromRawCommand "docker"
|> CreateProcess.withTimeout (TimeSpan.FromMinutes 5.)
|> Proc.run
if result2.ExitCode <> 0 then failwith "Failed result from Docker Tag"
Target.create "BuildContainer" (fun _ ->
let npmtoken = Environment.environVarOrDefault "NPM_TOKEN" ""
if System.String.IsNullOrWhiteSpace npmtoken then failwith "NPM_TOKEN missing"
let filterAllFiles = (fun _ -> true)
Shell.copyDir (buildDir @@ "BaseRegistries" @@ "linux") "site" filterAllFiles
containerizeWithCustomBuildArgs dockerRepository "BaseRegistries" "site" $"--build-arg build_number={buildNumber} --build-arg NPM_TOKEN={npmtoken}" "Dockerfile"
)
Target.create "PreBuildContainer" (fun _ ->
let filterAllFiles = (fun _ -> true)
Shell.copyDir (buildDir @@ "BaseRegistries" @@ "linux") "site" filterAllFiles
containerizeWithCustomBuildArgs dockerRepository "BaseRegistries" "site" $"--build-arg build_number={buildNumber}" "prebuild.Dockerfile"
)
"NpmInstall"
==> "BuildContainer"
Target.runOrDefault "BuildContainer"