public async Task <VstsRelease> CreateRelease(int releaseDefinitionId, Dictionary <string, string> overrideParameters)
        {
            ReleaseHttpClient releaseClient = _vssConnection.GetClient <ReleaseHttpClient>();

            Dictionary <string, ConfigurationVariableValue> overRideReleaseLevelVariables = new Dictionary <string, ConfigurationVariableValue>();

            foreach (var overrideParameter in overrideParameters)
            {
                ConfigurationVariableValue overrideVaraible = new ConfigurationVariableValue();
                overrideVaraible.Value    = overrideParameter.Value;
                overrideVaraible.IsSecret = false;
                overRideReleaseLevelVariables.Add(overrideParameter.Key, overrideVaraible);
            }

            return(await CreateRelease(releaseClient, releaseDefinitionId, _configuration.Value.ProjectName, overRideReleaseLevelVariables));
        }
        public WebApiRelease CreateRelease()
        {
            string projectName = ClientSampleHelpers.FindAnyProject(this.Context).Name;

            // Get a release client instance
            VssConnection     connection    = Context.Connection;
            ReleaseHttpClient releaseClient = connection.GetClient <ReleaseHttpClient>();

            // Override release level varaible. You can override environment level varaible also.
            Dictionary <string, ConfigurationVariableValue> overrideReleaseLevelVariables = new Dictionary <string, ConfigurationVariableValue>();
            ConfigurationVariableValue nonSecretReleaseLevelVaraible = new ConfigurationVariableValue();

            nonSecretReleaseLevelVaraible.Value    = "NonSecretValueChanged";
            nonSecretReleaseLevelVaraible.IsSecret = false;
            overrideReleaseLevelVariables.Add(NonSecretReleaseLevelVaraible, nonSecretReleaseLevelVaraible);

            // Create release
            WebApiRelease release = CreateRelease(releaseClient, newlyCreatedReleaseDefinitionId, projectName, overrideReleaseLevelVariables);

            Context.Log("{0} {1}", release.Id.ToString().PadLeft(6), release.Name);

            return(release);
        }
Beispiel #3
0
        public ReleaseDefinition UpdateReleaseDefinition()
        {
            string projectName = ClientSampleHelpers.FindAnyProject(this.Context).Name;

            // Get a release client instance
            VssConnection     connection    = Context.Connection;
            ReleaseHttpClient releaseClient = connection.GetClient <ReleaseHttpClient>();

            ReleaseDefinition releaseDefinition = releaseClient.GetReleaseDefinitionAsync(project: projectName, definitionId: newlyCreatedReleaseDefinitionId).Result;

            // add a non secret variable to definition
            ConfigurationVariableValue variable = new ConfigurationVariableValue();

            variable.Value    = "NonSecretValue";
            variable.IsSecret = false;
            releaseDefinition.Variables.Add("NonSecretVariable", variable);

            // update release definition
            ReleaseDefinition updatedReleaseDefinition = releaseClient.UpdateReleaseDefinitionAsync(project: projectName, releaseDefinition: releaseDefinition).Result;

            Console.WriteLine("{0} {1} {2}", updatedReleaseDefinition.Id.ToString().PadLeft(6), updatedReleaseDefinition.Revision, updatedReleaseDefinition.ModifiedOn);

            return(releaseDefinition);
        }
        public ReleaseDefinition CreateReleaseDefinition()
        {
            string projectName   = ClientSampleHelpers.FindAnyProject(this.Context).Name;
            string currentUserId = ClientSampleHelpers.GetCurrentUserId(this.Context).ToString();

            // If you want to override varaibles at release create time you should set 'AllowOverride'.
            ConfigurationVariableValue nonSceretVariable = new ConfigurationVariableValue();

            nonSceretVariable.Value         = "NonSecretValue";
            nonSceretVariable.IsSecret      = false;
            nonSceretVariable.AllowOverride = true;

            ConfigurationVariableValue sceretVariable = new ConfigurationVariableValue();

            sceretVariable.Value    = "SecretValue";
            sceretVariable.IsSecret = true;

            ConfigurationVariableValue nonOverrideVariable = new ConfigurationVariableValue();

            nonOverrideVariable.Value         = "NonOverridevariable";
            nonOverrideVariable.IsSecret      = false;
            nonOverrideVariable.AllowOverride = false;

            Dictionary <string, ConfigurationVariableValue> releaseLevelVariables = new Dictionary <string, ConfigurationVariableValue>();

            releaseLevelVariables.Add(NonSecretReleaseLevelVaraible, nonSceretVariable);
            releaseLevelVariables.Add("SecretReleaseLevelVaraible", sceretVariable);
            releaseLevelVariables.Add("NonOverridevariable", nonOverrideVariable);

            ReleaseDefinition definition = new ReleaseDefinition()
            {
                Name         = releaseDefinitionName,
                Revision     = 1,
                Variables    = releaseLevelVariables, // You can add varaibles at environment level also.
                Environments = new List <ReleaseDefinitionEnvironment>()
                {
                    new ReleaseDefinitionEnvironment()
                    {
                        Name         = "PROD",
                        DeployPhases = new List <DeployPhase>()
                        {
                            new AgentBasedDeployPhase()
                            {
                                Name            = "Run on agent",
                                Rank            = 1,
                                DeploymentInput = new AgentDeploymentInput()
                                {
                                    QueueId = 1
                                }
                            }
                        },
                        PreDeployApprovals = new ReleaseDefinitionApprovals()
                        {
                            Approvals = new List <ReleaseDefinitionApprovalStep>()
                            {
                                new ReleaseDefinitionApprovalStep()
                                {
                                    IsAutomated = false,
                                    Rank        = 1,
                                    Approver    = new IdentityRef()
                                    {
                                        Id = currentUserId
                                    }
                                },
                            }
                        },
                        PostDeployApprovals = new ReleaseDefinitionApprovals()
                        {
                            Approvals = new List <ReleaseDefinitionApprovalStep>()
                            {
                                new ReleaseDefinitionApprovalStep()
                                {
                                    IsAutomated = true,
                                    Rank        = 1
                                }
                            }
                        },
                        RetentionPolicy = new EnvironmentRetentionPolicy()
                        {
                            DaysToKeep     = 30,
                            ReleasesToKeep = 3,
                            RetainBuild    = true
                        }
                    }
                }
            };

            // Get a release client instance
            VssConnection     connection    = Context.Connection;
            ReleaseHttpClient releaseClient = connection.GetClient <ReleaseHttpClient>();

            // create a release definition
            ReleaseDefinition releaseDefinition = releaseClient.CreateReleaseDefinitionAsync(project: projectName, releaseDefinition: definition).Result;

            newlyCreatedReleaseDefinitionId = releaseDefinition.Id;

            Context.Log("{0} {1}", releaseDefinition.Id.ToString().PadLeft(6), releaseDefinition.Name);

            return(releaseDefinition);
        }