Exemple #1
0
        /// <summary>
        /// Executes the activity.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>
        /// A <see cref="BuildVersionDetails"/> instance representing the generated version.
        /// </returns>
        protected override BuildVersionDetails Execute(CodeActivityContext context)
        {
            // Validate required input properties.
            var connectionString = DatabaseConnectionString.Get(context);

            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new InvalidOperationException("The DatabaseConnectionString property is required and cannot be null, empty or whitespace.");
            }

            var projectName = ProjectName.Get(context);

            if (string.IsNullOrWhiteSpace(projectName))
            {
                throw new InvalidOperationException("The ProjectName property is required and cannot be null, empty or whitespace.");
            }

            var projectConfigName = ProjectConfigName.Get(context);

            if (string.IsNullOrWhiteSpace(projectConfigName))
            {
                throw new InvalidOperationException("The ProjectConfigName property is required and cannot be null, empty or whitespace.");
            }

            var buildDetail         = context.GetExtension <IBuildDetail>();
            var buildDefinitionName = buildDetail.BuildDefinition.Name;
            var commandLog          = new CodeActivityContextCommandLog(context);
            var lockTimeoutSeconds  = LockTimeoutSeconds.Get(context);
            var requestedBy         = buildDetail.RequestedBy;
            var teamProject         = buildDetail.TeamProject;

            var command =
                new CreateVersionCommand
            {
                BuildDefinitionName = buildDefinitionName,
                CommandLog          = commandLog,
                ConnectionString    = connectionString,
                LockTimeoutSeconds  = lockTimeoutSeconds,
                ProjectConfigName   = projectConfigName,
                ProjectName         = projectName,
                RequestedBy         = requestedBy,
                TeamProjectName     = teamProject
            };

            var versionDetails = command.Execute();

            // Execute optional features.
            SetBuildNumber(context, buildDetail, versionDetails);
            SetDropLocation(context, buildDetail, versionDetails, projectName);

            // Save any changes to the build detail instance.
            buildDetail.Save();

            // Map the IVersionDetails instance to an instance of BuildVersionDetails.
            var buildVersionDetails = BuildVersionDetails.FromIVersionDetails(versionDetails);

            // Return the result.
            return(buildVersionDetails);
        }