Building a Continuous Integration Pipeline

بواسطة: 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
الذهاب الي الدورة

Building a Continuous Integration Pipeline

بواسطة: Udacity

  • Udacity
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • intermediate
  • N/A
8.1.2PHP Version911msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (574ms)
    • Application (335ms)
    • 1 x Booting (63.02%)
      574.27ms
      1 x Application (36.73%)
      334.65ms
      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 ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed10.96ms
      • select * from `courses` where `slug_ar` = 'building-a-continuous-integration-pipeline' limit 1
        9.43ms/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-13 11:16:02' where `id` = 1783
        610μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-13 11:16:02
        • 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)
        210μ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)
        180μ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
        220μ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
        310μ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
        OzFDZtH7vAUuCzgGlVVPeIyxRAoQd8fquL3nSq7V
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/buildi...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/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.10" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.10" ] "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 => "95e85da6af4c870b-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.10" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.10" "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" => "95e85da6af4c870b-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" => "14700" "REMOTE_ADDR" => "172.70.131.14" "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" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/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" => 1752405361.9664 "REQUEST_TIME" => 1752405361 ]
        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 => "Sun, 13 Jul 2025 11:16:02 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkwzVEppeHhIa3JvNENJbnNFek5Ma2c9PSIsInZhbHVlIjoiRzA4eFJJeUFtcnpMaXg4ME1jYk45MkZjNjBqRFVQbXJoMkhLUWx4enBFZGpIT2lqdHRZbjVJSFJ4ajhYckgrTEI3ZGxVMHNTYXJ2QU5xSFlEdkxOS0FTWUF1Z3h6L2xGTlVoeWgrdUV4akczUVNwLzNvRnozMHkxMi8rbFRHMG8iLCJtYWMiOiI3YTY4YzFiYTkzNmJmOThlNzUyZDlkMmI4MTYyNzYzMmQ1ZjY0MjRiOTA4Nzc4MWI3OWI2ZmMxMmE1NmVmNjQ2IiwidGFnIjoiIn0%3D; expires=Sun, 13 Jul 2025 13:16:02 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IkwzVEppeHhIa3JvNENJbnNFek5Ma2c9PSIsInZhbHVlIjoiRzA4eFJJeUFtcnpMaXg4ME1jYk45MkZjNjBqRFVQbXJoMkhLUWx4enBFZGpIT2lqdHRZbjVJSFJ4ajhYckgrTEI3ZGxVM" 1 => "laravel_session=eyJpdiI6Ik0zMHF0OU9HZGtwQWFBMVp1c0ZsQmc9PSIsInZhbHVlIjoiWTVwdGFPb2tLazI3QVQxRjZjMVZUVVQraTdLakMxK3ZNQnY2dStCMXpTemN6K3NIUHdxSDVjVjlldnVueW9rVzZMWk5kTFdoaGx3NjRpZ25EY05GYlBmRVRYMlVvdWJGWjJNVHJlcFNLSE0zdlhndmpHNEJYMEhNUGNNZXVnVGwiLCJtYWMiOiIwYmE2Zjg1Mzk3Mjg5Y2JiZGJmM2NkNDNiMzZhMzc5ZDg0OTRlMjVmMjk4MmU1M2ZmNmExMmQ5MGY4MDE4Mjk5IiwidGFnIjoiIn0%3D; expires=Sun, 13 Jul 2025 13:16:02 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik0zMHF0OU9HZGtwQWFBMVp1c0ZsQmc9PSIsInZhbHVlIjoiWTVwdGFPb2tLazI3QVQxRjZjMVZUVVQraTdLakMxK3ZNQnY2dStCMXpTemN6K3NIUHdxSDVjVjlldnVueW9rVzZM" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkwzVEppeHhIa3JvNENJbnNFek5Ma2c9PSIsInZhbHVlIjoiRzA4eFJJeUFtcnpMaXg4ME1jYk45MkZjNjBqRFVQbXJoMkhLUWx4enBFZGpIT2lqdHRZbjVJSFJ4ajhYckgrTEI3ZGxVMHNTYXJ2QU5xSFlEdkxOS0FTWUF1Z3h6L2xGTlVoeWgrdUV4akczUVNwLzNvRnozMHkxMi8rbFRHMG8iLCJtYWMiOiI3YTY4YzFiYTkzNmJmOThlNzUyZDlkMmI4MTYyNzYzMmQ1ZjY0MjRiOTA4Nzc4MWI3OWI2ZmMxMmE1NmVmNjQ2IiwidGFnIjoiIn0%3D; expires=Sun, 13-Jul-2025 13:16:02 GMT; path=/XSRF-TOKEN=eyJpdiI6IkwzVEppeHhIa3JvNENJbnNFek5Ma2c9PSIsInZhbHVlIjoiRzA4eFJJeUFtcnpMaXg4ME1jYk45MkZjNjBqRFVQbXJoMkhLUWx4enBFZGpIT2lqdHRZbjVJSFJ4ajhYckgrTEI3ZGxVM" 1 => "laravel_session=eyJpdiI6Ik0zMHF0OU9HZGtwQWFBMVp1c0ZsQmc9PSIsInZhbHVlIjoiWTVwdGFPb2tLazI3QVQxRjZjMVZUVVQraTdLakMxK3ZNQnY2dStCMXpTemN6K3NIUHdxSDVjVjlldnVueW9rVzZMWk5kTFdoaGx3NjRpZ25EY05GYlBmRVRYMlVvdWJGWjJNVHJlcFNLSE0zdlhndmpHNEJYMEhNUGNNZXVnVGwiLCJtYWMiOiIwYmE2Zjg1Mzk3Mjg5Y2JiZGJmM2NkNDNiMzZhMzc5ZDg0OTRlMjVmMjk4MmU1M2ZmNmExMmQ5MGY4MDE4Mjk5IiwidGFnIjoiIn0%3D; expires=Sun, 13-Jul-2025 13:16:02 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik0zMHF0OU9HZGtwQWFBMVp1c0ZsQmc9PSIsInZhbHVlIjoiWTVwdGFPb2tLazI3QVQxRjZjMVZUVVQraTdLakMxK3ZNQnY2dStCMXpTemN6K3NIUHdxSDVjVjlldnVueW9rVzZM" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "OzFDZtH7vAUuCzgGlVVPeIyxRAoQd8fquL3nSq7V" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/building-a-continuous-integration-pipeline" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]