Exemple #1
0
        internal static async Task CreateRelease()
        {
            try
            {
                string version    = BuildConfig.GetAppVersionString();
                var    newRelease = new NewRelease(version);
                newRelease.Name       = $"New Update {version}";
                newRelease.Body       = $"Update for version {version}";
                newRelease.Draft      = false;
                newRelease.Prerelease = false;

                var gitHub = new GitHubClient(new ProductHeaderValue(BuildConfig.GetGitAppName()));
                gitHub.Credentials = new Credentials(BuildConfig.GetGitToken());
                bool    success  = false;
                int     maxTries = 2;
                int     current  = 0;
                Release release  = null;
                while (!success && current++ < maxTries)
                {
                    release = await gitHub.Repository.Release.Create("clauderoy790", BuildConfig.GetGitAppName(), newRelease);

                    success = release != null && !string.IsNullOrEmpty(release.UploadUrl);
                }

                if (!success)
                {
                    throw new Exception($"Failed to create new releaes, tried {current} times.");
                }

                var files = Directory.GetFiles(BuildConfig.GetGitRepoLocalPath());
                foreach (var file in files)
                {
                    if (!BuildConfig.ShouldIncludeFileInReleaseAsset(file))
                    {
                        continue;
                    }

                    using (var fs = File.OpenRead(file))
                    {
                        FileInfo info        = new FileInfo(file);
                        var      assetUpload = new ReleaseAssetUpload()
                        {
                            FileName    = info.Name,
                            ContentType = MimeMapping.GetMimeMapping(info.Name),
                            RawData     = fs
                        };
                        var asset = await gitHub.Repository.Release.UploadAsset(release, assetUpload);

                        Console.WriteLine($"Uploaded asset {info.Name} to release {version} successfully");
                    };
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Failed to create release: {ex.Message}");
            }
            Console.WriteLine("Release creation done");
        }