Building a Continuous Integration Pipeline

Brought by: Udacity

Overview

In this course, you will develop CI/CD systems that automate the processes between developers and the cloud environment.

Syllabus

  • Introduction to CI/CD
    • Identify use cases for CI/CD and describe the principles of Continuous Delivery.
  • Continuous Integration and Continuous Deployment
    • Design a CI/CD pipeline using a visual mockup and articulate the benefits of CI/CD to stakeholders.
  • Building a Continuous Integration Pipeline
    • Create a variety of YAML Workflows and design a git branching strategy to support a development team's workflow. Create a custom GitHub action and deploy it to GitHub Marketplace. Design and execute a CI pipeline based on a given set of requirements.
  • Enabling Continuous Delivery with Deployment Pipelines
    • Create/deploy the necessary infrastructure/resources for building CI/CD pipelines. Secure a CI/CD pipeline by leveraging secret storage and utilize caching strategies to speed-up application build times. Create alerts to monitor your pipelines and automate deploying an application to multiple AWS accounts.
  • Course Project: Movie Picture Pipeline
    • In this project, you will design and implement a CI/CD pipeline using GitHub Actions. You will demonstrate the skills they learned in this course to execute the deployment and verification of frontend and backend applications to an existing Kubernees cluster.

Taught by

Byron Sommardahl

Building a Continuous Integration Pipeline
Go to course

Building a Continuous Integration Pipeline

Brought by: Udacity

  • Udacity
  • Free
  • English
  • Certificate Not Available
  • Certain days
  • intermediate
  • N/A
8.1.2PHP Version1.14sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (553ms)
    • Application (584ms)
    • 1 x Application (51.27%)
      583.55ms
      1 x Booting (48.55%)
      552.62ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed294ms
      • select * from `courses` where `slug_en` = 'building-a-continuous-integration-pipeline' limit 1
        7.06ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. building-a-continuous-integration-pipeline
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-05 03:59:41' where `id` = 1783
        286ms/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-05 03:59:41
        • 1. 1783
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (63)
        250μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (6) and `providers`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 1774 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 1774
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        UE29WJpsUisAaeclK4zziIQme6n0u2nS0ySUaSdX
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/building-a-continuous-integration-pipelin...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/building-a-continuous-integration-pipeline
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.78" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.78" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "95a3f375cbecf846-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.78" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.78" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "95a3f375cbecf846-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "56906" "REMOTE_ADDR" => "172.70.130.171" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/building-a-continuous-integration-pipeline" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1751687980.7249 "REQUEST_TIME" => 1751687980 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 05 Jul 2025 03:59:41 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ikg4YWhpTDZYTkJqdkJzcHdlSmF3SUE9PSIsInZhbHVlIjoiSFlVTUdQdWVqcFpkQkhCcTNiTElRMTVEbjEwZFFueldzOWhmWVJOVDZVTHRqbXBMdzN4dE9jYjJFTElSY042Um81ZHArVGtrNjlzZVZDRnBiL3FPRmtTSEwzeFNQSTZtT05QMEo2U25vUFdHSVAwbW9iQlNCL2orYXRld0dLYzMiLCJtYWMiOiI4YjhjOTZhMjdjMWRlNGM5ZjNhMjRiM2QzYzU1MzRjNzlkNDI4NDU0NThkZmJiODliNjhhNzdiMDAxNjA3OTZiIiwidGFnIjoiIn0%3D; expires=Sat, 05 Jul 2025 05:59:41 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ikg4YWhpTDZYTkJqdkJzcHdlSmF3SUE9PSIsInZhbHVlIjoiSFlVTUdQdWVqcFpkQkhCcTNiTElRMTVEbjEwZFFueldzOWhmWVJOVDZVTHRqbXBMdzN4dE9jYjJFTElSY042Um81ZHArV" 1 => "laravel_session=eyJpdiI6IkVyakxWK2xxcFhUekhLNDJYUnBKcHc9PSIsInZhbHVlIjoibGhKNVExTkYyUEZvQTczS25abGkvWGFpaUNSMGJBZnVNblMzTjlWMnJWb2xMbkttaXlyaE45ekloVWV6c2J4czkyMFBEWHpRZmJobHRWNmJBdDVhbjF5aGRFaCttL1orakxLNUdaZnI0WFZaelhXMlBPemZ6U3V5d1pXRGdIaXUiLCJtYWMiOiJlMDc4MDI3OGVlNzc2M2MxNzJiOTc1ODZjMmE3NWY2OWU2NzU0MjkxMjc5OGQwYjI2NGNjYzcwOWE2YjhhYzFlIiwidGFnIjoiIn0%3D; expires=Sat, 05 Jul 2025 05:59:41 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkVyakxWK2xxcFhUekhLNDJYUnBKcHc9PSIsInZhbHVlIjoibGhKNVExTkYyUEZvQTczS25abGkvWGFpaUNSMGJBZnVNblMzTjlWMnJWb2xMbkttaXlyaE45ekloVWV6c2J4czky" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ikg4YWhpTDZYTkJqdkJzcHdlSmF3SUE9PSIsInZhbHVlIjoiSFlVTUdQdWVqcFpkQkhCcTNiTElRMTVEbjEwZFFueldzOWhmWVJOVDZVTHRqbXBMdzN4dE9jYjJFTElSY042Um81ZHArVGtrNjlzZVZDRnBiL3FPRmtTSEwzeFNQSTZtT05QMEo2U25vUFdHSVAwbW9iQlNCL2orYXRld0dLYzMiLCJtYWMiOiI4YjhjOTZhMjdjMWRlNGM5ZjNhMjRiM2QzYzU1MzRjNzlkNDI4NDU0NThkZmJiODliNjhhNzdiMDAxNjA3OTZiIiwidGFnIjoiIn0%3D; expires=Sat, 05-Jul-2025 05:59:41 GMT; path=/XSRF-TOKEN=eyJpdiI6Ikg4YWhpTDZYTkJqdkJzcHdlSmF3SUE9PSIsInZhbHVlIjoiSFlVTUdQdWVqcFpkQkhCcTNiTElRMTVEbjEwZFFueldzOWhmWVJOVDZVTHRqbXBMdzN4dE9jYjJFTElSY042Um81ZHArV" 1 => "laravel_session=eyJpdiI6IkVyakxWK2xxcFhUekhLNDJYUnBKcHc9PSIsInZhbHVlIjoibGhKNVExTkYyUEZvQTczS25abGkvWGFpaUNSMGJBZnVNblMzTjlWMnJWb2xMbkttaXlyaE45ekloVWV6c2J4czkyMFBEWHpRZmJobHRWNmJBdDVhbjF5aGRFaCttL1orakxLNUdaZnI0WFZaelhXMlBPemZ6U3V5d1pXRGdIaXUiLCJtYWMiOiJlMDc4MDI3OGVlNzc2M2MxNzJiOTc1ODZjMmE3NWY2OWU2NzU0MjkxMjc5OGQwYjI2NGNjYzcwOWE2YjhhYzFlIiwidGFnIjoiIn0%3D; expires=Sat, 05-Jul-2025 05:59:41 GMT; path=/; httponlylaravel_session=eyJpdiI6IkVyakxWK2xxcFhUekhLNDJYUnBKcHc9PSIsInZhbHVlIjoibGhKNVExTkYyUEZvQTczS25abGkvWGFpaUNSMGJBZnVNblMzTjlWMnJWb2xMbkttaXlyaE45ekloVWV6c2J4czky" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "UE29WJpsUisAaeclK4zziIQme6n0u2nS0ySUaSdX" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/building-a-continuous-integration-pipeline" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]