Automated local docker build is working.
This commit is contained in:
parent
0f12bcd086
commit
b0f72cf453
|
@ -13,7 +13,10 @@
|
||||||
.Replace("]", "-")
|
.Replace("]", "-")
|
||||||
.Replace(",", "-");
|
.Replace(",", "-");
|
||||||
|
|
||||||
return result.Trim('-');
|
result = result.Trim('-');
|
||||||
|
if (result.Length > 62) result = result.Substring(0, 62);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,21 +70,34 @@ namespace CodexNetDeployer
|
||||||
{
|
{
|
||||||
var dockerPassword = Environment.GetEnvironmentVariable("DOCKERPASSWORD");
|
var dockerPassword = Environment.GetEnvironmentVariable("DOCKERPASSWORD");
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(dockerUsername) || string.IsNullOrEmpty(dockerPassword))
|
try
|
||||||
{
|
{
|
||||||
Log("Environment variable 'DOCKERPASSWORD' not provided.");
|
if (string.IsNullOrEmpty(dockerUsername) || string.IsNullOrEmpty(dockerPassword))
|
||||||
Log("Trying system default...");
|
{
|
||||||
Docker("login");
|
Log("Environment variable 'DOCKERPASSWORD' not provided.");
|
||||||
|
Log("Trying system default...");
|
||||||
|
Docker("login");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Docker("login", "-u", dockerUsername, "-p", dockerPassword);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
catch
|
||||||
{
|
{
|
||||||
Docker("login", "-u", dockerUsername, "-p", dockerPassword);
|
Log("Docker login failed.");
|
||||||
|
Log("Please check the docker username and password provided by the constructor arguments and/or");
|
||||||
|
Log("set by 'DOCKERUSERNAME' and 'DOCKERPASSWORD' environment variables.");
|
||||||
|
Log("Note: You can use a docker access token as DOCKERPASSWORD.");
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GenerateImageName()
|
private string GenerateImageName()
|
||||||
{
|
{
|
||||||
return $"{dockerUsername!}/nim-codex-autoimage:{Guid.NewGuid().ToString().ToLowerInvariant()}";
|
var tag = Environment.GetEnvironmentVariable("DOCKERTAG");
|
||||||
|
if (string.IsNullOrEmpty(tag)) return $"{dockerUsername!}/nim-codex-autoimage:{Guid.NewGuid().ToString().ToLowerInvariant()}";
|
||||||
|
return $"{dockerUsername}/nim-codex-autoimage:{tag}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Docker(params string[] args)
|
private void Docker(params string[] args)
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
using CodexContractsPlugin;
|
using CodexContractsPlugin;
|
||||||
|
using CodexNetDeployer;
|
||||||
using CodexPlugin;
|
using CodexPlugin;
|
||||||
using Core;
|
using Core;
|
||||||
using DistTestCore;
|
using DistTestCore;
|
||||||
using DistTestCore.Helpers;
|
using DistTestCore.Helpers;
|
||||||
|
using DistTestCore.Logs;
|
||||||
using GethPlugin;
|
using GethPlugin;
|
||||||
using NUnit.Framework.Constraints;
|
using NUnit.Framework.Constraints;
|
||||||
|
|
||||||
|
@ -20,6 +22,13 @@ namespace Tests
|
||||||
ProjectPlugin.Load<MetricsPlugin.MetricsPlugin>();
|
ProjectPlugin.Load<MetricsPlugin.MetricsPlugin>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Initialize(FixtureLog fixtureLog)
|
||||||
|
{
|
||||||
|
var localBuilder = new LocalCodexBuilder(fixtureLog);
|
||||||
|
localBuilder.Intialize();
|
||||||
|
localBuilder.Build();
|
||||||
|
}
|
||||||
|
|
||||||
public ICodexNode AddCodex()
|
public ICodexNode AddCodex()
|
||||||
{
|
{
|
||||||
return AddCodex(s => { });
|
return AddCodex(s => { });
|
||||||
|
|
|
@ -32,6 +32,8 @@ namespace DistTestCore
|
||||||
statusLog = new StatusLog(logConfig, startTime);
|
statusLog = new StatusLog(logConfig, startTime);
|
||||||
|
|
||||||
globalEntryPoint = new EntryPoint(fixtureLog, configuration.GetK8sConfiguration(new DefaultTimeSet(), TestNamespacePrefix), configuration.GetFileManagerFolder());
|
globalEntryPoint = new EntryPoint(fixtureLog, configuration.GetK8sConfiguration(new DefaultTimeSet(), TestNamespacePrefix), configuration.GetFileManagerFolder());
|
||||||
|
|
||||||
|
Initialize(fixtureLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
|
@ -140,6 +142,10 @@ namespace DistTestCore
|
||||||
Stopwatch.Measure(Get().Log, name, action);
|
Stopwatch.Measure(Get().Log, name, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void Initialize(FixtureLog fixtureLog)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
protected TestLifecycle Get()
|
protected TestLifecycle Get()
|
||||||
{
|
{
|
||||||
lock (lifecycleLock)
|
lock (lifecycleLock)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using ArgsUniform;
|
using ArgsUniform;
|
||||||
using CodexPlugin;
|
using CodexPlugin;
|
||||||
using static Org.BouncyCastle.Math.EC.ECCurve;
|
|
||||||
|
|
||||||
namespace CodexNetDeployer
|
namespace CodexNetDeployer
|
||||||
{
|
{
|
||||||
|
@ -16,7 +15,8 @@ namespace CodexNetDeployer
|
||||||
public string KubeNamespace { get; set; } = string.Empty;
|
public string KubeNamespace { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Uniform("codex-local-repo", "cr", "CODEXLOCALREPOPATH", false, "If set, instead of using the default Codex docker image, the local repository will be used to build an image. " +
|
[Uniform("codex-local-repo", "cr", "CODEXLOCALREPOPATH", false, "If set, instead of using the default Codex docker image, the local repository will be used to build an image. " +
|
||||||
"This requires the 'DOCKERUSERNAME' and 'DOCKERPASSWORD' environment variables to be set.")]
|
"This requires the 'DOCKERUSERNAME' and 'DOCKERPASSWORD' environment variables to be set. (You can omit the password to use your system default, or use a docker access token as DOCKERPASSWORD.) You can set " +
|
||||||
|
"'DOCKERTAG' to define the image tag. If not set, one will be generated.")]
|
||||||
public string CodexLocalRepoPath { get; set; } = string.Empty;
|
public string CodexLocalRepoPath { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Uniform("nodes", "n", "NODES", true, "Number of Codex nodes to be created.")]
|
[Uniform("nodes", "n", "NODES", true, "Number of Codex nodes to be created.")]
|
||||||
|
@ -65,35 +65,7 @@ namespace CodexNetDeployer
|
||||||
[Uniform("check-connect", "cc", "CHECKCONNECT", false, "If true, deployer check ensure peer-connectivity between all deployed nodes after deployment. Default is false.")]
|
[Uniform("check-connect", "cc", "CHECKCONNECT", false, "If true, deployer check ensure peer-connectivity between all deployed nodes after deployment. Default is false.")]
|
||||||
public bool CheckPeerConnection { get; set; } = false;
|
public bool CheckPeerConnection { get; set; } = false;
|
||||||
|
|
||||||
public Configuration()
|
public List<string> Validate()
|
||||||
{
|
|
||||||
// dotnet run \
|
|
||||||
//--kube - config =/ opt / kubeconfig.yaml \
|
|
||||||
//--kube -namespace=codex-continuous-tests \
|
|
||||||
//--nodes=5 \
|
|
||||||
//--validators=3 \
|
|
||||||
//--log-level=Trace \
|
|
||||||
//--storage-quota=2048 \
|
|
||||||
//--storage-sell=1024 \
|
|
||||||
//--min-price=1024 \
|
|
||||||
//--max-collateral=1024 \
|
|
||||||
//--max-duration=3600000 \
|
|
||||||
//--block-ttl=180 \
|
|
||||||
//--block-mi=120 \
|
|
||||||
//--block-mn=10000 \
|
|
||||||
//--metrics=1 \
|
|
||||||
//--check-connect=1
|
|
||||||
|
|
||||||
KubeNamespace = "autodockertest";
|
|
||||||
NumberOfCodexNodes = 3;
|
|
||||||
NumberOfValidators = 1;
|
|
||||||
StorageQuota = 2048;
|
|
||||||
StorageSell = 1024;
|
|
||||||
|
|
||||||
CodexLocalRepoPath = "D:/Projects/nim-codex";
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<string> Validate()
|
|
||||||
{
|
{
|
||||||
var errors = new List<string>();
|
var errors = new List<string>();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue