public async Task ExecuteAsync() { var publishDirectory = this.Utilities.GetOutputFolder(); var applicationBundleFile = string.Format("{0}-{1}.zip", this.AppEnv.ApplicationName, DateTime.Now.Ticks); var applicationBundlePath = Path.Combine(publishDirectory, "..", applicationBundleFile); Console.WriteLine("Publishing {0} to {1}", this.AppEnv.ApplicationName, publishDirectory); // Package up application for publishing if(!this.Utilities.ExecutePublish(true)) { Console.Error.WriteLine("Error packaging up project"); return; } UtilityService.CopyFile( Path.Combine(this.AppEnv.ApplicationBasePath, "CodeDeployScripts/appspec.yml"), Path.Combine(publishDirectory, "appspec.yml")); if (File.Exists(applicationBundlePath)) File.Delete(applicationBundlePath); Console.WriteLine("Creating application bundle: " + applicationBundlePath); ZipFile.CreateFromDirectory(publishDirectory, applicationBundlePath); string eTag = null; var bucketName = this.Configuration["Deployment:S3Bucket"]; var putRequest = new PutObjectRequest { BucketName = bucketName, FilePath = applicationBundlePath }; int percentToUpdateOn = 25; putRequest.StreamTransferProgress = ((s, e) => { if (e.PercentDone == percentToUpdateOn || e.PercentDone > percentToUpdateOn) { int increment = e.PercentDone % 25; if (increment == 0) increment = 25; percentToUpdateOn = e.PercentDone + increment; Console.WriteLine("Uploading to S3 {0}%", e.PercentDone); } }); Console.WriteLine("Uploading application bunble to S3: {0}/{1}", bucketName, applicationBundleFile); eTag = (await this.S3Client.PutObjectAsync(putRequest)).ETag; var request = new CreateDeploymentRequest { ApplicationName = "Pollster-" + this.AppEnv.ApplicationName, DeploymentGroupName = "Pollster-" + this.AppEnv.ApplicationName + "-Fleet", Revision = new RevisionLocation { RevisionType = RevisionLocationType.S3, S3Location = new S3Location { Bucket = bucketName, Key = applicationBundleFile, BundleType = BundleType.Zip, ETag = eTag } } }; var response = await this.CodeDeployClient.CreateDeploymentAsync(request); Console.WriteLine("Deployment initiated with deployment id {0}", response.DeploymentId); return; }
/// <summary> /// Initiates the asynchronous execution of the CreateDeployment operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the CreateDeployment operation on AmazonCodeDeployClient.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> /// /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateDeployment /// operation.</returns> public IAsyncResult BeginCreateDeployment(CreateDeploymentRequest request, AsyncCallback callback, object state) { var marshaller = new CreateDeploymentRequestMarshaller(); var unmarshaller = CreateDeploymentResponseUnmarshaller.Instance; return BeginInvoke<CreateDeploymentRequest>(request, marshaller, unmarshaller, callback, state); }
/// <summary> /// Deploys an application revision through the specified deployment group. /// </summary> /// <param name="request">Container for the necessary parameters to execute the CreateDeployment service method.</param> /// /// <returns>The response from the CreateDeployment service method, as returned by CodeDeploy.</returns> /// <exception cref="Amazon.CodeDeploy.Model.ApplicationDoesNotExistException"> /// The application does not exist with the applicable IAM user or AWS account. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.ApplicationNameRequiredException"> /// The minimum number of required application names was not specified. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.DeploymentConfigDoesNotExistException"> /// The deployment configuration does not exist with the applicable IAM user or AWS account. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.DeploymentGroupDoesNotExistException"> /// The named deployment group does not exist with the applicable IAM user or AWS account. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.DeploymentGroupNameRequiredException"> /// The deployment group name was not specified. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.DeploymentLimitExceededException"> /// The number of allowed deployments was exceeded. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.DescriptionTooLongException"> /// The description that was provided is too long. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.InvalidApplicationNameException"> /// The application name was specified in an invalid format. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.InvalidDeploymentConfigNameException"> /// The deployment configuration name was specified in an invalid format. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.InvalidDeploymentGroupNameException"> /// The deployment group name was specified in an invalid format. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.InvalidRevisionException"> /// The revision was specified in an invalid format. /// </exception> /// <exception cref="Amazon.CodeDeploy.Model.RevisionRequiredException"> /// The revision ID was not specified. /// </exception> public CreateDeploymentResponse CreateDeployment(CreateDeploymentRequest request) { var marshaller = new CreateDeploymentRequestMarshaller(); var unmarshaller = CreateDeploymentResponseUnmarshaller.Instance; return Invoke<CreateDeploymentRequest,CreateDeploymentResponse>(request, marshaller, unmarshaller); }
/// <summary> /// Initiates the asynchronous execution of the CreateDeployment operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the CreateDeployment operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task<CreateDeploymentResponse> CreateDeploymentAsync(CreateDeploymentRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new CreateDeploymentRequestMarshaller(); var unmarshaller = CreateDeploymentResponseUnmarshaller.Instance; return InvokeAsync<CreateDeploymentRequest,CreateDeploymentResponse>(request, marshaller, unmarshaller, cancellationToken); }
private Amazon.CodeDeploy.Model.CreateDeploymentResponse CallAWSServiceOperation(IAmazonCodeDeploy client, Amazon.CodeDeploy.Model.CreateDeploymentRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "AWS CodeDeploy", "CreateDeployment"); try { #if DESKTOP return(client.CreateDeployment(request)); #elif CORECLR return(client.CreateDeploymentAsync(request).GetAwaiter().GetResult()); #else #error "Unknown build edition" #endif } catch (AmazonServiceException exc) { var webException = exc.InnerException as System.Net.WebException; if (webException != null) { throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException); } throw; } }
public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; // create request var request = new Amazon.CodeDeploy.Model.CreateDeploymentRequest(); if (cmdletContext.ApplicationName != null) { request.ApplicationName = cmdletContext.ApplicationName; } // populate AutoRollbackConfiguration var requestAutoRollbackConfigurationIsNull = true; request.AutoRollbackConfiguration = new Amazon.CodeDeploy.Model.AutoRollbackConfiguration(); System.Boolean?requestAutoRollbackConfiguration_autoRollbackConfiguration_Enabled = null; if (cmdletContext.AutoRollbackConfiguration_Enabled != null) { requestAutoRollbackConfiguration_autoRollbackConfiguration_Enabled = cmdletContext.AutoRollbackConfiguration_Enabled.Value; } if (requestAutoRollbackConfiguration_autoRollbackConfiguration_Enabled != null) { request.AutoRollbackConfiguration.Enabled = requestAutoRollbackConfiguration_autoRollbackConfiguration_Enabled.Value; requestAutoRollbackConfigurationIsNull = false; } List <System.String> requestAutoRollbackConfiguration_autoRollbackConfiguration_Event = null; if (cmdletContext.AutoRollbackConfiguration_Event != null) { requestAutoRollbackConfiguration_autoRollbackConfiguration_Event = cmdletContext.AutoRollbackConfiguration_Event; } if (requestAutoRollbackConfiguration_autoRollbackConfiguration_Event != null) { request.AutoRollbackConfiguration.Events = requestAutoRollbackConfiguration_autoRollbackConfiguration_Event; requestAutoRollbackConfigurationIsNull = false; } // determine if request.AutoRollbackConfiguration should be set to null if (requestAutoRollbackConfigurationIsNull) { request.AutoRollbackConfiguration = null; } if (cmdletContext.DeploymentConfigName != null) { request.DeploymentConfigName = cmdletContext.DeploymentConfigName; } if (cmdletContext.DeploymentGroupName != null) { request.DeploymentGroupName = cmdletContext.DeploymentGroupName; } if (cmdletContext.Description != null) { request.Description = cmdletContext.Description; } if (cmdletContext.FileExistsBehavior != null) { request.FileExistsBehavior = cmdletContext.FileExistsBehavior; } if (cmdletContext.IgnoreApplicationStopFailure != null) { request.IgnoreApplicationStopFailures = cmdletContext.IgnoreApplicationStopFailure.Value; } // populate Revision var requestRevisionIsNull = true; request.Revision = new Amazon.CodeDeploy.Model.RevisionLocation(); Amazon.CodeDeploy.RevisionLocationType requestRevision_revisionType = null; if (cmdletContext.RevisionType != null) { requestRevision_revisionType = cmdletContext.RevisionType; } if (requestRevision_revisionType != null) { request.Revision.RevisionType = requestRevision_revisionType; requestRevisionIsNull = false; } Amazon.CodeDeploy.Model.AppSpecContent requestRevision_revision_AppSpecContent = null; // populate AppSpecContent var requestRevision_revision_AppSpecContentIsNull = true; requestRevision_revision_AppSpecContent = new Amazon.CodeDeploy.Model.AppSpecContent(); System.String requestRevision_revision_AppSpecContent_appSpecContent_Content = null; if (cmdletContext.AppSpecContent_Content != null) { requestRevision_revision_AppSpecContent_appSpecContent_Content = cmdletContext.AppSpecContent_Content; } if (requestRevision_revision_AppSpecContent_appSpecContent_Content != null) { requestRevision_revision_AppSpecContent.Content = requestRevision_revision_AppSpecContent_appSpecContent_Content; requestRevision_revision_AppSpecContentIsNull = false; } System.String requestRevision_revision_AppSpecContent_appSpecContent_Sha256 = null; if (cmdletContext.AppSpecContent_Sha256 != null) { requestRevision_revision_AppSpecContent_appSpecContent_Sha256 = cmdletContext.AppSpecContent_Sha256; } if (requestRevision_revision_AppSpecContent_appSpecContent_Sha256 != null) { requestRevision_revision_AppSpecContent.Sha256 = requestRevision_revision_AppSpecContent_appSpecContent_Sha256; requestRevision_revision_AppSpecContentIsNull = false; } // determine if requestRevision_revision_AppSpecContent should be set to null if (requestRevision_revision_AppSpecContentIsNull) { requestRevision_revision_AppSpecContent = null; } if (requestRevision_revision_AppSpecContent != null) { request.Revision.AppSpecContent = requestRevision_revision_AppSpecContent; requestRevisionIsNull = false; } Amazon.CodeDeploy.Model.GitHubLocation requestRevision_revision_GitHubLocation = null; // populate GitHubLocation var requestRevision_revision_GitHubLocationIsNull = true; requestRevision_revision_GitHubLocation = new Amazon.CodeDeploy.Model.GitHubLocation(); System.String requestRevision_revision_GitHubLocation_gitHubLocation_CommitId = null; if (cmdletContext.GitHubLocation_CommitId != null) { requestRevision_revision_GitHubLocation_gitHubLocation_CommitId = cmdletContext.GitHubLocation_CommitId; } if (requestRevision_revision_GitHubLocation_gitHubLocation_CommitId != null) { requestRevision_revision_GitHubLocation.CommitId = requestRevision_revision_GitHubLocation_gitHubLocation_CommitId; requestRevision_revision_GitHubLocationIsNull = false; } System.String requestRevision_revision_GitHubLocation_gitHubLocation_Repository = null; if (cmdletContext.GitHubLocation_Repository != null) { requestRevision_revision_GitHubLocation_gitHubLocation_Repository = cmdletContext.GitHubLocation_Repository; } if (requestRevision_revision_GitHubLocation_gitHubLocation_Repository != null) { requestRevision_revision_GitHubLocation.Repository = requestRevision_revision_GitHubLocation_gitHubLocation_Repository; requestRevision_revision_GitHubLocationIsNull = false; } // determine if requestRevision_revision_GitHubLocation should be set to null if (requestRevision_revision_GitHubLocationIsNull) { requestRevision_revision_GitHubLocation = null; } if (requestRevision_revision_GitHubLocation != null) { request.Revision.GitHubLocation = requestRevision_revision_GitHubLocation; requestRevisionIsNull = false; } Amazon.CodeDeploy.Model.RawString requestRevision_revision_String = null; // populate String var requestRevision_revision_StringIsNull = true; requestRevision_revision_String = new Amazon.CodeDeploy.Model.RawString(); System.String requestRevision_revision_String_string_Content = null; if (cmdletContext.String_Content != null) { requestRevision_revision_String_string_Content = cmdletContext.String_Content; } if (requestRevision_revision_String_string_Content != null) { requestRevision_revision_String.Content = requestRevision_revision_String_string_Content; requestRevision_revision_StringIsNull = false; } System.String requestRevision_revision_String_string_Sha256 = null; if (cmdletContext.String_Sha256 != null) { requestRevision_revision_String_string_Sha256 = cmdletContext.String_Sha256; } if (requestRevision_revision_String_string_Sha256 != null) { requestRevision_revision_String.Sha256 = requestRevision_revision_String_string_Sha256; requestRevision_revision_StringIsNull = false; } // determine if requestRevision_revision_String should be set to null if (requestRevision_revision_StringIsNull) { requestRevision_revision_String = null; } if (requestRevision_revision_String != null) { request.Revision.String = requestRevision_revision_String; requestRevisionIsNull = false; } Amazon.CodeDeploy.Model.S3Location requestRevision_revision_S3Location = null; // populate S3Location var requestRevision_revision_S3LocationIsNull = true; requestRevision_revision_S3Location = new Amazon.CodeDeploy.Model.S3Location(); System.String requestRevision_revision_S3Location_s3Location_Bucket = null; if (cmdletContext.S3Location_Bucket != null) { requestRevision_revision_S3Location_s3Location_Bucket = cmdletContext.S3Location_Bucket; } if (requestRevision_revision_S3Location_s3Location_Bucket != null) { requestRevision_revision_S3Location.Bucket = requestRevision_revision_S3Location_s3Location_Bucket; requestRevision_revision_S3LocationIsNull = false; } Amazon.CodeDeploy.BundleType requestRevision_revision_S3Location_s3Location_BundleType = null; if (cmdletContext.S3Location_BundleType != null) { requestRevision_revision_S3Location_s3Location_BundleType = cmdletContext.S3Location_BundleType; } if (requestRevision_revision_S3Location_s3Location_BundleType != null) { requestRevision_revision_S3Location.BundleType = requestRevision_revision_S3Location_s3Location_BundleType; requestRevision_revision_S3LocationIsNull = false; } System.String requestRevision_revision_S3Location_s3Location_ETag = null; if (cmdletContext.S3Location_ETag != null) { requestRevision_revision_S3Location_s3Location_ETag = cmdletContext.S3Location_ETag; } if (requestRevision_revision_S3Location_s3Location_ETag != null) { requestRevision_revision_S3Location.ETag = requestRevision_revision_S3Location_s3Location_ETag; requestRevision_revision_S3LocationIsNull = false; } System.String requestRevision_revision_S3Location_s3Location_Key = null; if (cmdletContext.S3Location_Key != null) { requestRevision_revision_S3Location_s3Location_Key = cmdletContext.S3Location_Key; } if (requestRevision_revision_S3Location_s3Location_Key != null) { requestRevision_revision_S3Location.Key = requestRevision_revision_S3Location_s3Location_Key; requestRevision_revision_S3LocationIsNull = false; } System.String requestRevision_revision_S3Location_s3Location_Version = null; if (cmdletContext.S3Location_Version != null) { requestRevision_revision_S3Location_s3Location_Version = cmdletContext.S3Location_Version; } if (requestRevision_revision_S3Location_s3Location_Version != null) { requestRevision_revision_S3Location.Version = requestRevision_revision_S3Location_s3Location_Version; requestRevision_revision_S3LocationIsNull = false; } // determine if requestRevision_revision_S3Location should be set to null if (requestRevision_revision_S3LocationIsNull) { requestRevision_revision_S3Location = null; } if (requestRevision_revision_S3Location != null) { request.Revision.S3Location = requestRevision_revision_S3Location; requestRevisionIsNull = false; } // determine if request.Revision should be set to null if (requestRevisionIsNull) { request.Revision = null; } // populate TargetInstances var requestTargetInstancesIsNull = true; request.TargetInstances = new Amazon.CodeDeploy.Model.TargetInstances(); List <System.String> requestTargetInstances_targetInstancesAutoScalingGroup = null; if (cmdletContext.TargetInstancesAutoScalingGroup != null) { requestTargetInstances_targetInstancesAutoScalingGroup = cmdletContext.TargetInstancesAutoScalingGroup; } if (requestTargetInstances_targetInstancesAutoScalingGroup != null) { request.TargetInstances.AutoScalingGroups = requestTargetInstances_targetInstancesAutoScalingGroup; requestTargetInstancesIsNull = false; } List <Amazon.CodeDeploy.Model.EC2TagFilter> requestTargetInstances_targetInstancesTagFilter = null; if (cmdletContext.TargetInstancesTagFilter != null) { requestTargetInstances_targetInstancesTagFilter = cmdletContext.TargetInstancesTagFilter; } if (requestTargetInstances_targetInstancesTagFilter != null) { request.TargetInstances.TagFilters = requestTargetInstances_targetInstancesTagFilter; requestTargetInstancesIsNull = false; } Amazon.CodeDeploy.Model.EC2TagSet requestTargetInstances_targetInstances_Ec2TagSet = null; // populate Ec2TagSet var requestTargetInstances_targetInstances_Ec2TagSetIsNull = true; requestTargetInstances_targetInstances_Ec2TagSet = new Amazon.CodeDeploy.Model.EC2TagSet(); List <List <Amazon.CodeDeploy.Model.EC2TagFilter> > requestTargetInstances_targetInstances_Ec2TagSet_ec2TagSetList = null; if (cmdletContext.Ec2TagSetList != null) { requestTargetInstances_targetInstances_Ec2TagSet_ec2TagSetList = cmdletContext.Ec2TagSetList; } if (requestTargetInstances_targetInstances_Ec2TagSet_ec2TagSetList != null) { requestTargetInstances_targetInstances_Ec2TagSet.Ec2TagSetList = requestTargetInstances_targetInstances_Ec2TagSet_ec2TagSetList; requestTargetInstances_targetInstances_Ec2TagSetIsNull = false; } // determine if requestTargetInstances_targetInstances_Ec2TagSet should be set to null if (requestTargetInstances_targetInstances_Ec2TagSetIsNull) { requestTargetInstances_targetInstances_Ec2TagSet = null; } if (requestTargetInstances_targetInstances_Ec2TagSet != null) { request.TargetInstances.Ec2TagSet = requestTargetInstances_targetInstances_Ec2TagSet; requestTargetInstancesIsNull = false; } // determine if request.TargetInstances should be set to null if (requestTargetInstancesIsNull) { request.TargetInstances = null; } if (cmdletContext.UpdateOutdatedInstancesOnly != null) { request.UpdateOutdatedInstancesOnly = cmdletContext.UpdateOutdatedInstancesOnly.Value; } CmdletOutput output; // issue call var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); try { var response = CallAWSServiceOperation(client, request); object pipelineOutput = null; pipelineOutput = cmdletContext.Select(response, this); output = new CmdletOutput { PipelineOutput = pipelineOutput, ServiceResponse = response }; } catch (Exception e) { output = new CmdletOutput { ErrorResponse = e }; } return(output); }