コード例 #1
0
        protected override async Task ExecuteCore()
        {
            if (Directory.Exists(ArtifactPath))
            {
                Log.Warning("{Pack} was already downloaded. Skipping download.", repository);
                return;
            }

            var branch = await gitHubClient.Repository.Branch.Get(repoInfo.Owner, repoInfo.Repository, branchName);

            var commit      = branch.Commit;
            var downloadUrl = GitHubMixin.GetCommitDownloadUrl(repositoryUrl, commit.Sha);

            var downloadeOn = DateTimeOffset.Now;

            using (var stream = await downloader.GetStream(downloadUrl, progressObserver))
            {
                await zipExtractor.ExtractFirstChildToFolder(stream, ArtifactPath, progressObserver);
            }

            SaveMetadata(new
            {
                Repository   = repoInfo,
                Commit       = commit.Sha,
                Branch       = branch.Name,
                DownloadedOn = downloadeOn,
            });
        }
コード例 #2
0
        protected override async Task ExecuteCore()
        {
            if (Directory.Exists(ArtifactPath))
            {
                Log.Warning("{Pack} was already downloaded. Skipping download.", ArtifactPath);
                return;
            }

            var repoInf  = GitHubMixin.GetRepoInfo(repoUrl);
            var releases = await gitHubClient.Repository.Release.GetAll(repoInf.Owner, repoInf.Repository);

            var latestRelease = releases.OrderByDescending(x => x.CreatedAt).First();
            var asset         = latestRelease.Assets.First(x => string.Equals(x.Name, assetName, StringComparison.OrdinalIgnoreCase));

            using (var stream = await downloader.GetStream(asset.BrowserDownloadUrl, progressObserver))
            {
                await extractor.ExtractFirstChildToFolder(stream, ArtifactPath, progressObserver);
            }

            SaveMetadata(new
            {
                asset.Name,
                asset.Id,
                asset.Size,
                asset.UpdatedAt,
                asset.Label,
                asset.Url,
            });
        }
コード例 #3
0
        public async Task Execute()
        {
            if (Directory.Exists(folderPath))
            {
                Log.Warning("{Pack} was already downloaded. Skipping download.", artifactName);
                return;
            }

            var artifact = await buildClient.LatestBuildArtifact(org, project, definitionId, artifactName);

            var url    = artifact.Resource.DownloadUrl;
            var stream = await downloader.GetStream(url, progressObserver);

            await extractor.ExtractFirstChildToFolder(stream, folderPath, progressObserver);
        }
コード例 #4
0
        public async Task Execute()
        {
            if (Directory.Exists(folderPath))
            {
                Log.Warning("{Pack} was already downloaded. Skipping download.", repository);
                return;
            }

            var openZipStream = await GitHubMixin.GetBranchZippedStream(downloader, repoBaseUrl, branch, progressObserver);

            using (var stream = openZipStream)
            {
                await extractor.ExtractFirstChildToFolder(stream, folderPath, progressObserver);
            }
        }
コード例 #5
0
        public async Task Execute()
        {
            if (Directory.Exists(folderPath))
            {
                Log.Warning("{Pack} was already downloaded. Skipping download.", folderPath);
                return;
            }

            var repoInf = GitHubMixin.GetRepoInfo(repoUrl);
            var latest  = await gitHubClient.Repository.Release.GetLatest(repoInf.Owner, repoInf.Repository);

            var asset = latest.Assets.First(x => string.Equals(x.Name, assetName, StringComparison.OrdinalIgnoreCase));

            using (var stream = await downloader.GetStream(asset.BrowserDownloadUrl, progressObserver))
            {
                await extractor.ExtractFirstChildToFolder(stream, folderPath, progressObserver);
            }
        }