コード例 #1
0
        private void ApplyGithubNotification(ServerBuildSession session, ProjectGithubSource source, GithubCommit commit)
        {
            var su = new CommitStatusUpdater {
                Username  = source.Username,
                Password  = source.Password,
                StatusUrl = commit.StatusesUrl,
                Sha       = commit.Sha,
            };

            session.PreBuildEvent += (o, e) => {
                var status = new CommitStatus {
                    State       = CommitStates.Pending,
                    Context     = "Photon",
                    Description = "Build in progress..."
                };

                su.Post(status).GetAwaiter().GetResult();
            };

            session.PostBuildEvent += (o, e) => {
                var status = new CommitStatus {
                    Context = "Photon",
                };

                if (session.Result.Cancelled)
                {
                    status.State       = CommitStates.Error;
                    status.Description = "The build was cancelled.";
                }
                else if (session.Result.Successful)
                {
                    status.State       = CommitStates.Success;
                    status.Description = $"Build Successful. {session.Result.Message}";
                }
                else
                {
                    status.State       = CommitStates.Failure;
                    status.Description = $"Build Failed! {session.Result.Message}";
                }

                su.Post(status).GetAwaiter().GetResult();
            };
        }
コード例 #2
0
ファイル: AgentBuildSession.cs プロジェクト: brhoten/Photon
        public override async Task RunTaskAsync(string taskName, string taskSessionId)
        {
            var context = new AgentBuildContext {
                Project          = Project,
                AssemblyFilename = AssemblyFilename,
                GitRefspec       = GitRefspec,
                TaskName         = taskName,
                WorkDirectory    = WorkDirectory,
                ContentDirectory = ContentDirectory,
                BinDirectory     = BinDirectory,
                BuildNumber      = BuildNumber,
                Output           = Output.Writer,
                Packages         = PackageClient,
                ServerVariables  = ServerVariables,
                AgentVariables   = PhotonAgent.Instance.Variables,
            };

            var githubSource       = Project?.Source as ProjectGithubSource;
            var notifyGithub       = githubSource != null && githubSource.NotifyOrigin == NotifyOrigin.Agent && Commit != null;
            CommitStatusUpdater su = null;

            if (notifyGithub)
            {
                su = new CommitStatusUpdater {
                    Username  = githubSource.Username,
                    Password  = githubSource.Password,
                    StatusUrl = Commit.StatusesUrl,
                    Sha       = Commit.Sha,
                };

                var status = new CommitStatus {
                    State       = CommitStates.Pending,
                    Context     = "Photon",
                    Description = "Build in progress..."
                };

                await su.Post(status);
            }

            var success = false;

            try {
                await Domain.RunBuildTask(context);

                success = true;
            }
            finally {
                if (notifyGithub)
                {
                    var status = new CommitStatus {
                        Context = "Photon",
                    };

                    if (success)
                    {
                        status.State       = CommitStates.Success;
                        status.Description = "Build Successful.";
                    }
                    else
                    {
                        status.State       = CommitStates.Failure;
                        status.Description = "Build Failed!";
                    }

                    await su.Post(status);
                }
            }
        }
コード例 #3
0
ファイル: AgentBuildSession.cs プロジェクト: lulzzz/Photon
        public override async Task RunTaskAsync(string taskName, string taskSessionId)
        {
            using (var contextOutput = new DomainOutput()) {
                contextOutput.OnWrite     += (text, color) => Output.Write(text, color);
                contextOutput.OnWriteLine += (text, color) => Output.WriteLine(text, color);
                contextOutput.OnWriteRaw  += (text) => Output.WriteRaw(text);

                var context = new AgentBuildContext {
                    Project          = Project,
                    Agent            = Agent,
                    AssemblyFilename = AssemblyFilename,
                    GitRefspec       = GitRefspec,
                    TaskName         = taskName,
                    WorkDirectory    = WorkDirectory,
                    ContentDirectory = ContentDirectory,
                    BinDirectory     = BinDirectory,
                    BuildNumber      = BuildNumber,
                    Output           = contextOutput,
                    Packages         = PackageClient,
                    ServerVariables  = ServerVariables,
                    AgentVariables   = AgentVariables,
                };

                var githubSource       = Project?.Source as ProjectGithubSource;
                var notifyGithub       = githubSource != null && githubSource.NotifyOrigin == NotifyOrigin.Agent && Commit != null;
                CommitStatusUpdater su = null;
                CommitStatus        status;

                if (notifyGithub)
                {
                    su = new CommitStatusUpdater {
                        Username  = githubSource.Username,
                        Password  = githubSource.Password,
                        StatusUrl = Commit.StatusesUrl,
                        Sha       = Commit.Sha,
                    };

                    status = new CommitStatus {
                        State       = CommitStates.Pending,
                        Context     = "Photon",
                        Description = "Build in progress..."
                    };

                    await su.Post(status);
                }

                status = new CommitStatus {
                    Context = "Photon",
                };

                try {
                    await Domain.RunBuildTask(context, TokenSource.Token);

                    if (notifyGithub)
                    {
                        status.State       = CommitStates.Success;
                        status.Description = "Build Successful.";
                        await su.Post(status);
                    }
                }
                catch (Exception error) {
                    Exception = error;

                    if (notifyGithub)
                    {
                        status.State       = CommitStates.Failure;
                        status.Description = "Build Failed!";
                        await su.Post(status);
                    }

                    throw;
                }
            }
        }