ce7cb702218693d08ea6d83464d2457c9250027c
This commit is contained in:
commit
34c5f8963c
1 changed files with 145336 additions and 0 deletions
|
|
@ -0,0 +1,52 @@
|
|||
#r "/opt/fsi/packages/Oci.dll"
|
||||
#load "contract.fsx"
|
||||
|
||||
open System
|
||||
open System.IO
|
||||
open System.Text.Json
|
||||
open Contract
|
||||
open Quorate.Oci
|
||||
|
||||
let revision = Environment.GetEnvironmentVariable "SOURCE_REVISION"
|
||||
let targets = Environment.GetEnvironmentVariable "TARGETS" |> decode<Target array>
|
||||
let repository = "quorate/project-delivery-controller"
|
||||
let layout = "/handoff/layout"
|
||||
let digest = File.ReadAllText("/handoff/image-digest").Trim()
|
||||
|
||||
require (validRevision revision) "invalid source revision"
|
||||
require (validDigest digest) "invalid image digest"
|
||||
|
||||
require
|
||||
(targets.Length = 1
|
||||
&& targets[0].Kind = "QuayOCI"
|
||||
&& targets[0].Repository = repository)
|
||||
"invalid delivery target"
|
||||
|
||||
let publish () =
|
||||
let auth = RegistryAuth.Load("/auth/.dockerconfigjson", "registry.quorate.internal")
|
||||
use root = Registry.LoadRoot "/registry-ca/ca.crt"
|
||||
use registry = new Registry(Uri("https://registry.quorate.internal"), auth, root)
|
||||
|
||||
registry
|
||||
.PushAsync(repository, layout, "delivery", $"delivery-{revision}", cancellationToken)
|
||||
.GetAwaiter()
|
||||
.GetResult()
|
||||
|
||||
let published = publish ()
|
||||
|
||||
require (published = digest) "published digest mismatch"
|
||||
directory "/result" |> ignore
|
||||
|
||||
File.WriteAllText(
|
||||
"/result/delivery-result",
|
||||
JsonSerializer.Serialize(
|
||||
{ SourceRevision = revision
|
||||
Targets =
|
||||
[| { Kind = "QuayOCI"
|
||||
Repository = repository
|
||||
Reference = $"registry.quorate.internal/{repository}@{digest}" } |] },
|
||||
json
|
||||
)
|
||||
)
|
||||
|
||||
printfn "publish=%s digest=%s" repository digest
|
||||
Loading…
Reference in a new issue