CICD for PHP on AWS

A presentation at Sunshine PHP 2019 in February 2019 in Miami, FL, USA by Michael Moussa

Slide 1

Slide 1

CICD for PHP on AWS SunshinePHP 2019 Michael Moussa @michaelmoussa https://joind.in/talk/05470

Slide 2

Slide 2

Objective @michaelmoussa https://joind.in/talk/05470

Slide 3

Slide 3

Objective Set up CICD for a non-trivial PHP application running on AWS, and deploy it with zero downtime. @michaelmoussa https://joind.in/talk/05470

Slide 4

Slide 4

CICD? Continuous Integration @michaelmoussa https://joind.in/talk/05470

Slide 5

Slide 5

CICD? Continuous Deployment @michaelmoussa https://joind.in/talk/05470

Slide 6

Slide 6

CICD? Continuous Delivery @michaelmoussa https://joind.in/talk/05470

Slide 7

Slide 7

Getting started Application Load Balancer GitHub.com Autoscaling Group @michaelmoussa https://joind.in/talk/05470

Slide 8

Slide 8

CodeDeploy @michaelmoussa https://joind.in/talk/05470

Slide 9

Slide 9

CodeDeploy • Automates application deployments • • • • • • EC2 instances AWS Lambda ECS (Elastic Container Service) On-premise servers Deploy from GitHub or Amazon S3 Highly customizable @michaelmoussa https://joind.in/talk/05470

Slide 10

Slide 10

CodeDeploy - Example Assumptions • “Hello, world!” application code hosted on GitHub • Autoscaling group (3 instances) with application running • First time setup steps completed: • https://docs.aws.amazon.com/codedeploy/latest/userguide/gettingstarted-codedeploy.html • CodeDeploy Agent installed: • https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeployagent-operations-install.html @michaelmoussa https://joind.in/talk/05470

Slide 11

Slide 11

CodeDeploy - Get started @michaelmoussa https://joind.in/talk/05470

Slide 12

Slide 12

CodeDeploy - Create application @michaelmoussa https://joind.in/talk/05470

Slide 13

Slide 13

CodeDeploy - Create application @michaelmoussa https://joind.in/talk/05470

Slide 14

Slide 14

CodeDeploy - Create application @michaelmoussa https://joind.in/talk/05470

Slide 15

Slide 15

CodeDeploy - Create application @michaelmoussa https://joind.in/talk/05470

Slide 16

Slide 16

CodeDeploy - Deployment type @michaelmoussa https://joind.in/talk/05470

Slide 17

Slide 17

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 18

Slide 18

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 19

Slide 19

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 20

Slide 20

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 21

Slide 21

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 22

Slide 22

CodeDeploy - Deployment type • • In-place deployment Blue/green deployment @michaelmoussa https://joind.in/talk/05470

Slide 23

Slide 23

CodeDeploy - Deployment type @michaelmoussa https://joind.in/talk/05470

Slide 24

Slide 24

CodeDeploy - Environment configuration @michaelmoussa https://joind.in/talk/05470

Slide 25

Slide 25

CodeDeploy - Environment configuration @michaelmoussa https://joind.in/talk/05470

Slide 26

Slide 26

CodeDeploy - Deployment settings @michaelmoussa https://joind.in/talk/05470

Slide 27

Slide 27

CodeDeploy - Deployment settings @michaelmoussa https://joind.in/talk/05470

Slide 28

Slide 28

CodeDeploy - Deployment settings @michaelmoussa https://joind.in/talk/05470

Slide 29

Slide 29

CodeDeploy - Deployment settings @michaelmoussa https://joind.in/talk/05470

Slide 30

Slide 30

CodeDeploy - Environment configuration @michaelmoussa https://joind.in/talk/05470

Slide 31

Slide 31

appspec.yml @michaelmoussa https://joind.in/talk/05470

Slide 32

Slide 32

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root group: nginx mode: 750 type: - directory - object: /var/www/demo-application owner: root group: nginx mode: 640 type: - file hooks: BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 runas: root @michaelmoussa https://joind.in/talk/05470

Slide 33

Slide 33

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root group: nginx mode: 750 type: - directory - object: /var/www/demo-application owner: root group: nginx mode: 640 type: - file hooks: BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 runas: root version: 0.0 @michaelmoussa https://joind.in/talk/05470

Slide 34

Slide 34

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root group: nginx mode: 750 type: - directory - object: /var/www/demo-application owner: root group: nginx mode: 640 type: - file hooks: BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 runas: root os: linux @michaelmoussa https://joind.in/talk/05470

Slide 35

Slide 35

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root group: nginx mode: 750 type: - directory - object: /var/www/demo-application owner: root group: nginx mode: 640 type: - file hooks: BeforeInstall: https://docs.aws.amazon.com/codedeploy/latest/userguide/ - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 reference-appspec-file-structure-files.html runas: root files: - source: / destination: /var/www/demo-application/ @michaelmoussa https://joind.in/talk/05470

Slide 36

Slide 36

CodeDeploy - appspec.yml version: 0.0 permissions: os: linux files: - object: /var/www/demo-application - source: / owner: root destination: group: /var/www/demo-application/ nginx permissions: mode: 750 - object: /var/www/demo-application owner:type: root group: nginx - directory mode: 750 - object: /var/www/demo-application type: owner: root - directory group: nginx - object: /var/www/demo-application owner:mode: root 640 group:type: nginx mode: 640 - file type: - file hooks: BeforeInstall: https://docs.aws.amazon.com/codedeploy/latest/userguide/ - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 reference-appspec-file-structure-permissions.html runas: root @michaelmoussa https://joind.in/talk/05470

Slide 37

Slide 37

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root hooks: group: nginx mode: 750 BeforeInstall: type: - location: .aws/codedeploy/hooks/before-install.sh - directory - object: /var/www/demo-application timeout: 300 owner: root runas:group: rootnginx mode: 640 type: - file hooks: https://docs.aws.amazon.com/codedeploy/latest/userguide/ BeforeInstall: #!/bin/bash - location: .aws/codedeploy/hooks/before-install.sh timeout: 300/var/www/demo-application/* reference-appspec-file-structure-hooks.html rm -rf runas: root @michaelmoussa https://joind.in/talk/05470

Slide 38

Slide 38

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root hooks: group: nginx mode: 750 BeforeInstall: type: - location: .aws/codedeploy/hooks/before-install.sh - directory - object: /var/www/demo-application timeout: 300 owner: root runas:group: rootnginx mode: 640 type: - file hooks: https://docs.aws.amazon.com/codedeploy/latest/userguide/ BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 reference-appspec-file-structure-hooks.html runas: root #!/bin/bash rm -rf /var/www/demo-application/* @michaelmoussa https://joind.in/talk/05470

Slide 39

Slide 39

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root hooks: group: nginx mode: 750 BeforeInstall: type: - location: .aws/codedeploy/hooks/before-install.sh - directory - object: /var/www/demo-application timeout: 300 owner: root runas:group: rootnginx mode: 640 type: - file hooks: https://docs.aws.amazon.com/codedeploy/latest/userguide/ BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 reference-appspec-file-structure-hooks.html runas: root @michaelmoussa https://joind.in/talk/05470

Slide 40

Slide 40

CodeDeploy - appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/demo-application/ permissions: - object: /var/www/demo-application owner: root group: nginx mode: 750 type: - directory - object: /var/www/demo-application owner: root group: nginx mode: 640 type: - file hooks: BeforeInstall: - location: .aws/codedeploy/hooks/before-install.sh timeout: 300 runas: root @michaelmoussa https://joind.in/talk/05470

Slide 41

Slide 41

CodeDeploy - appspec.yml - Event lifecycle @michaelmoussa https://joind.in/talk/05470

Slide 42

Slide 42

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 43

Slide 43

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 44

Slide 44

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 45

Slide 45

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 46

Slide 46

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 47

Slide 47

CodeDeploy - Deploy application @michaelmoussa https://joind.in/talk/05470

Slide 48

Slide 48

Other capabilities @michaelmoussa https://joind.in/talk/05470

Slide 49

Slide 49

CodeDeploy - Other capabilities • SNS Triggers • • • Instance (starts|succeeds|fails|ready) CloudWatch Alarms • • Deployment (start|succeeds|fails|stops|ready|rollback) Stop deployments if metric threshold is breached Automatic Rollback @michaelmoussa https://joind.in/talk/05470

Slide 50

Slide 50

Objective Set up CICD for a non-trivial PHP application running on AWS, and deploy it with zero downtime. @michaelmoussa https://joind.in/talk/05470

Slide 51

Slide 51

Objective Application Load Balancer GitHub.com Autoscaling Group @michaelmoussa https://joind.in/talk/05470

Slide 52

Slide 52

Objective Application Load Balancer CodeDeploy GitHub.com Autoscaling Group @michaelmoussa https://joind.in/talk/05470

Slide 53

Slide 53

Objective Set up CICD for a non-trivial PHP application running on AWS, and deploy it with zero downtime. @michaelmoussa https://joind.in/talk/05470

Slide 54

Slide 54

Objective Set up CICD for a non-trivial PHP application running on AWS, and deploy it with zero downtime. @michaelmoussa https://joind.in/talk/05470

Slide 55

Slide 55

CodeBuild @michaelmoussa https://joind.in/talk/05470

Slide 56

Slide 56

CodeBuild • Fully managed build service • • • • Compiles, tests, and packages code Scales continuously Pay-as-you-go Also highly customizable! @michaelmoussa https://joind.in/talk/05470

Slide 57

Slide 57

CodeBuild - Get started @michaelmoussa https://joind.in/talk/05470

Slide 58

Slide 58

CodeBuild - Get started @michaelmoussa https://joind.in/talk/05470

Slide 59

Slide 59

CodeBuild - Get started @michaelmoussa https://joind.in/talk/05470

Slide 60

Slide 60

CodeBuild - Source @michaelmoussa https://joind.in/talk/05470

Slide 61

Slide 61

CodeBuild - Source @michaelmoussa https://joind.in/talk/05470

Slide 62

Slide 62

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 63

Slide 63

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 64

Slide 64

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 65

Slide 65

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 66

Slide 66

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 67

Slide 67

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 68

Slide 68

CodeBuild - Environment @michaelmoussa https://joind.in/talk/05470

Slide 69

Slide 69

CodeBuild - buildspec.yml @michaelmoussa https://joind.in/talk/05470

Slide 70

Slide 70

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 71

Slide 71

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ version: 0.2 @michaelmoussa https://joind.in/talk/05470

Slide 72

Slide 72

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y phases: - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y install: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php commands: - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: - yum update -y commands: - amazon-linux-extras php7.2 -y - composer installinstall —no-interaction build: - yum install git-core php-mbstring php-xml zip unzip php-zip -y commands: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - composer cs-check - php /tmp/composer-setup.php - composer test —install-dir=/usr/local/bin —filename=composer post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 73

Slide 73

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y phases: - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y install: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php commands: - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: - yum update -y commands: - amazon-linux-extras php7.2 -y - composer installinstall —no-interaction build: - yum install git-core php-mbstring php-xml zip unzip php-zip -y commands: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - composer cs-check - php /tmp/composer-setup.php - composer test —install-dir=/usr/local/bin —filename=composer post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 74

Slide 74

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y phases: - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y install: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php commands: - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: - yum update -y commands: - amazon-linux-extras php7.2 -y - composer installinstall —no-interaction build: - yum install git-core php-mbstring php-xml zip unzip php-zip -y commands: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - composer cs-check - php /tmp/composer-setup.php - composer test —install-dir=/usr/local/bin —filename=composer post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 75

Slide 75

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ phases: pre_build: commands: - composer install —no-interaction @michaelmoussa https://joind.in/talk/05470

Slide 76

Slide 76

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ phases: build: commands: - composer cs-check - composer test @michaelmoussa https://joind.in/talk/05470

Slide 77

Slide 77

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y phases: - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: post_build: commands: - composer install —no-interaction commands: build: - composer commands: install —no-dev —optimize-autoloader —prefer-dist —no-interaction - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 78

Slide 78

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/’ artifacts: files: - ‘**/’ @michaelmoussa https://joind.in/talk/05470

Slide 79

Slide 79

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ https://docs.aws.amazon.com/codebuild/ latest/userguide/build-spec-ref.html @michaelmoussa https://joind.in/talk/05470

Slide 80

Slide 80

CodeBuild - buildspec.yml version: 0.2 phases: install: commands: - yum update -y - amazon-linux-extras install php7.2 -y - yum install git-core php-mbstring php-xml zip unzip php-zip -y - curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php - php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer pre_build: commands: - composer install —no-interaction build: commands: - composer cs-check - composer test post_build: commands: - composer install —no-dev —optimize-autoloader —prefer-dist —no-interaction artifacts: files: - ‘**/*’ @michaelmoussa https://joind.in/talk/05470

Slide 81

Slide 81

CodeBuild - Artifacts @michaelmoussa https://joind.in/talk/05470

Slide 82

Slide 82

CodeBuild - Artifacts artifacts: files: - ‘**/*’ name: DemoApplication-$(date +%Y-%m-%d).zip @michaelmoussa https://joind.in/talk/05470

Slide 83

Slide 83

CodeBuild - Artifacts artifacts: files: - ‘**/*’ name: DemoApplication-$(date +%Y-%m-%d).zip @michaelmoussa https://joind.in/talk/05470

Slide 84

Slide 84

CodeBuild - Artifacts @michaelmoussa https://joind.in/talk/05470

Slide 85

Slide 85

CodeBuild - Artifacts @michaelmoussa https://joind.in/talk/05470

Slide 86

Slide 86

CodeBuild - Start build @michaelmoussa https://joind.in/talk/05470

Slide 87

Slide 87

CodeBuild - Start build @michaelmoussa https://joind.in/talk/05470

Slide 88

Slide 88

CodeBuild - Success! @michaelmoussa https://joind.in/talk/05470

Slide 89

Slide 89

CodeBuild - Success! @michaelmoussa https://joind.in/talk/05470

Slide 90

Slide 90

CodeBuild - Artifacts s3://php-codedeploy-example /build-artifacts /41dd4014-e610-43ed-a5d6-551c47570c8d /DemoApplication.zip @michaelmoussa https://joind.in/talk/05470

Slide 91

Slide 91

Other capabilities @michaelmoussa https://joind.in/talk/05470

Slide 92

Slide 92

CodeBuild - Other capabilities • • • • • Dependency caching VPC support Environment variables & secure parameters Build Docker images Larger build instance sizes @michaelmoussa https://joind.in/talk/05470

Slide 93

Slide 93

CodeBuild → CodeDeploy @michaelmoussa https://joind.in/talk/05470

Slide 94

Slide 94

CodeBuild → CodeDeploy Application Load Balancer CodeDeploy GitHub.com Autoscaling Group @michaelmoussa https://joind.in/talk/05470

Slide 95

Slide 95

CodeBuild → CodeDeploy Application Load Balancer Autoscaling Group CodeDeploy CodeBuild GitHub.com S3 @michaelmoussa https://joind.in/talk/05470

Slide 96

Slide 96

CodeBuild → CodeDeploy @michaelmoussa https://joind.in/talk/05470

Slide 97

Slide 97

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 98

Slide 98

CodePipeline • Continuous integration & continuous delivery service • • • • Model, visualize, and automate steps AWS & third-party integration support Fully configurable workflow Cheap! @michaelmoussa https://joind.in/talk/05470

Slide 99

Slide 99

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 100

Slide 100

CodePipeline Stage @michaelmoussa https://joind.in/talk/05470

Slide 101

Slide 101

CodePipeline Stage Action @michaelmoussa https://joind.in/talk/05470

Slide 102

Slide 102

CodePipeline Stage Stage Action @michaelmoussa https://joind.in/talk/05470

Slide 103

Slide 103

CodePipeline Stage Stage Action Action Action Action @michaelmoussa https://joind.in/talk/05470

Slide 104

Slide 104

CodePipeline Stage Stage Action Action Stage Action Action Stage Action Action Action @michaelmoussa https://joind.in/talk/05470

Slide 105

Slide 105

CodePipeline - Create pipeline @michaelmoussa https://joind.in/talk/05470

Slide 106

Slide 106

CodePipeline - Create pipeline @michaelmoussa https://joind.in/talk/05470

Slide 107

Slide 107

CodePipeline - Create pipeline @michaelmoussa https://joind.in/talk/05470

Slide 108

Slide 108

CodePipeline - Create pipeline @michaelmoussa https://joind.in/talk/05470

Slide 109

Slide 109

CodePipeline - Source location @michaelmoussa https://joind.in/talk/05470

Slide 110

Slide 110

CodePipeline - Source location @michaelmoussa https://joind.in/talk/05470

Slide 111

Slide 111

CodePipeline - Source location @michaelmoussa https://joind.in/talk/05470

Slide 112

Slide 112

CodePipeline - Build provider @michaelmoussa https://joind.in/talk/05470

Slide 113

Slide 113

CodePipeline - Deployment provider @michaelmoussa https://joind.in/talk/05470

Slide 114

Slide 114

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 115

Slide 115

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 116

Slide 116

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 117

Slide 117

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 118

Slide 118

CodePipeline @michaelmoussa https://joind.in/talk/05470

Slide 119

Slide 119

Other actions @michaelmoussa https://joind.in/talk/05470

Slide 120

Slide 120

CodePipeline - Other actions - Test • • • • • • Jenkins AWS CodeBuild BlazeMeter Ghost Inspector UI Testing HPE StormRunner Load Runscope API Monitoring @michaelmoussa https://joind.in/talk/05470

Slide 121

Slide 121

CodePipeline - Other actions - Approval @michaelmoussa https://joind.in/talk/05470

Slide 122

Slide 122

CodePipeline - Other actions - Approval @michaelmoussa https://joind.in/talk/05470

Slide 123

Slide 123

CodePipeline - Other actions - Approval @michaelmoussa https://joind.in/talk/05470

Slide 124

Slide 124

CodePipeline - Other actions - Approval @michaelmoussa https://joind.in/talk/05470

Slide 125

Slide 125

CodePipeline - Other actions - Approval @michaelmoussa https://joind.in/talk/05470

Slide 126

Slide 126

CodePipeline - Other actions - Invoke @michaelmoussa https://joind.in/talk/05470

Slide 127

Slide 127

CodePipeline - Other actions - Invoke @michaelmoussa https://joind.in/talk/05470

Slide 128

Slide 128

Putting it all together @michaelmoussa https://joind.in/talk/05470

Slide 129

Slide 129

CodePipeline → CodeBuild → CodeDeploy Application Load Balancer CodeDeploy CodePipeline GitHub.com CodeBuild Autoscaling Group S3 @michaelmoussa https://joind.in/talk/05470

Slide 130

Slide 130

Pull Requests @michaelmoussa https://joind.in/talk/05470

Slide 131

Slide 131

CodeBuild - Pull Requests @michaelmoussa https://joind.in/talk/05470

Slide 132

Slide 132

CodeBuild - Pull Requests https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html @michaelmoussa https://joind.in/talk/05470

Slide 133

Slide 133

Closing thoughts @michaelmoussa https://joind.in/talk/05470

Slide 134

Slide 134

Thanks! https://joind.in/talk/05470