Esempio n. 1
0
        protected async Task <T> SafeCall <T>(IActivityMonitor m, Func <SourceRepository, MetadataResource, NuGetLoggerAdapter, Task <T> > f)
        {
            bool retry  = false;
            var  logger = new NuGetLoggerAdapter(m);

            if (_sourceRepository == null)
            {
                _sourceRepository = new SourceRepository(PackageSource, NuGetClient.StaticProviders);
            }
again:
            MetadataResource meta = null;

            try
            {
                meta = await _sourceRepository.GetResourceAsync <MetadataResource>();

                return(await f(_sourceRepository, meta, logger));
            }
            catch (MissingRequiredSecretException)
            {
                throw; //It's useless to retry in this case
            }
            catch (Exception ex)
            {
                if (meta != null && !retry)
                {
                    retry = true;
                    if (CanRetry(meta, logger, ex))
                    {
                        goto again;
                    }
                }
                throw;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Implements Package promotion in @CI, @Exploratory, @Preview, @Latest and @Stable views.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="skipped">The set of packages skipped because they already exist in the feed.</param>
        /// <param name="pushed">The set of packages pushed.</param>
        /// <returns>The awaitable.</returns>
        protected override Task OnAllPackagesPushed(NuGetLoggerAdapter logger, IReadOnlyList <LocalNuGetPackageFile> skipped, IReadOnlyList <LocalNuGetPackageFile> pushed)
        {
            string personalAccessToken = ResolveSecret(logger.Monitor);
            var    packages            = skipped.Concat(pushed).Select(i => i.Instance);

            return(AzureDevOpsAPIHelper.PromotePackagesAync(logger.Monitor, Client.HttpClient, ProjectName, Organization, FeedName, personalAccessToken, packages, false));
        }
Esempio n. 3
0
 internal static bool Initalize(NuGetLoggerAdapter logger, out bool mustRefresh)
 {
     mustRefresh = false;
     lock ( _secretKeysLock )
     {
         if (!_initialized)
         {
             using (logger.Monitor.OpenInfo("Installing the Azure Artifact Credential provider (https://github.com/Microsoft/artifacts-credprovider)."))
             {
                 var a = System.Reflection.Assembly.GetExecutingAssembly();
                 using (var r = new StreamReader(a.GetManifestResourceStream("CK.Env.Artifact.NuGet.Res.InstallCredentialProvider.ps1.txt")))
                 {
                     var tempPath      = Path.GetTempPath();
                     var installer     = Guid.NewGuid().ToString() + ".ps1";
                     var installerPath = Path.Combine(tempPath, installer);
                     File.WriteAllText(installerPath, r.ReadToEnd());
                     ProcessRunner.RunPowerShell(
                         logger.Monitor,
                         tempPath,
                         installer,
                         new[] { "-AddNetfx" },
                         Core.LogLevel.Error,
                         new[] { ("PSExecutionPolicyPreference", "Bypass") });
Esempio n. 4
0
            async Task <ArtifactAvailableInstances> GetAvailable(MetadataResource meta, NuGetLoggerAdapter logger, string name)
            {
                var v      = new ArtifactAvailableInstances(this, name);
                var latest = await meta.GetVersions(name, true, false, _feed.Client.SourceCache, logger, CancellationToken.None);

                foreach (var nugetVersion in latest)
                {
                    var vText = nugetVersion.ToNormalizedString();
                    var sV    = SVersion.TryParse(vText);
                    if (!sV.IsValid)
                    {
                        logger.Monitor.Warn($"Unable to parse version '{vText}' for '{name}': {sV.ErrorMessage}");
                    }
                    else
                    {
                        v = v.WithVersion(sV);
                    }
                }
                return(v);
            }
Esempio n. 5
0
 private protected abstract bool CanRetry(MetadataResource meta, NuGetLoggerAdapter logger, Exception ex);