Пример #1
0
        private List <MavenCoordinates> Verify(MavenCoordinates coordinates, OverwriteOption overwrite)
        {
            if (overwrite == OverwriteOption.Replace)
            {
                return(new List <MavenCoordinates> {
                    coordinates
                });
            }

            var artifact = new Model.Artifact(coordinates);
            var search   = Artifactory.Search()
                           .ArtifactsByGavc()
                           .GroupId(coordinates.GroupId)
                           .ArtifactId(coordinates.ArtifactId)
                           .Version(coordinates.Version);
            var run = search.Run();

            if (run.Artifacts != null && run.Artifacts.Count > 0)
            {
                if (overwrite == OverwriteOption.Abort)
                {
                    throw new ArgumentException(artifact + " already exists");
                }
                else if (overwrite == OverwriteOption.AddNew)
                {
                    Logger.Info(coordinates + " already exist. Skipping upload.");
                    return(new List <MavenCoordinates>());
                }
            }

            return(new List <MavenCoordinates> {
                coordinates
            });;
        }
Пример #2
0
        public Model.Artifact ResolveLatestVariable(Model.Project coordinates)
        {
            var artifact = new Model.Artifact(coordinates.GroupId, coordinates.ArtifactId, coordinates.Version);

            if (artifact.Version != "latest")
            {
                return(artifact);
            }

            var search = Artifactory.Search()
                         .ArtifactsByGavc()
                         .GroupId(coordinates.GroupId)
                         .ArtifactId(coordinates.ArtifactId);

            var run        = search.Run();
            var maxVersion = run.Artifacts
                             .Select(a => Model.Artifact.ParseArtifactoryPath(a.Uri.ToString()))
                             .Select(a => new Version(a.Version))
                             .Max();

            if (maxVersion == null)
            {
                throw new ArgumentException("There is no project matching " + coordinates);
            }

            return(new Model.Artifact(coordinates.GroupId, coordinates.ArtifactId, maxVersion.ToString()));
        }
Пример #3
0
        public async Task <HookResponse> Hook([FromBody] HookRequest request)
        {
            var words = request.Text.Trim().Split(' ');

            if (words.Length != 2)
            {
                return(new HookResponse
                {
                    Text = $"You must specify packages version. Example: \"{request.TriggerWord} 2.6.4\""
                });
            }

            var packageVersion = words.Last();

            var options = _configuration.GetSection("artifactory").Get <ArtifactoryOptions>();

            var artifactory = new Artifactory(options.Host, options.User, options.Password);

            var searchQueryBuilds = options.Packages.Select(p =>
            {
                Action <ISearchQueryBuilder> action = (ISearchQueryBuilder q) =>
                                                      q.WhereName().Match($"{p}*{packageVersion}*");

                return(action);
            }).ToArray();

            var artifactsList = await artifactory.Search()
                                .Or(searchQueryBuilds)
                                .Build()
                                .Execute();

            var artifacts = artifactsList.Results.Select(a =>
                                                         new ArtifactModel(a, options.PackageNamePattern, ":white_check_mark:"))
                            .GroupBy(a => a.Name)
                            .Select(gr => gr.OrderByDescending(it => it.Version).First())
                            .ToList();

            foreach (var notFoundPackage in options.Packages.Where(p => !artifacts.Any(a => a.Name == p)))
            {
                artifacts.Add(new ArtifactModel(notFoundPackage, ":x:"));
            }

            return(new HookResponse
            {
                Text = GetTable(artifacts)
            });
        }
Пример #4
0
        public List <Model.Artifact> ListProjects()
        {
            var search = Artifactory.Search()
                         .ArtifactsByGavc()
                         .GroupId("com.forcam.lib.project.*");
            var run = search.Run();

            if (run.Artifacts == null)
            {
                Logger.Error(run.Response.ErrorMessage);
                return(new List <Model.Artifact>());
            }

            return(run.Artifacts
                   .Select(a => Model.Artifact.ParseArtifactoryPath(a.Uri.ToString()))
                   .ToList());
        }