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 Version873msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (553ms)
    • Application (317ms)
    • 1 x Booting (63.39%)
      553.12ms
      1 x Application (36.35%)
      317.21ms
      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 executed9.03ms
      • select * from `courses` where `slug_ar` = 'building-a-continuous-integration-pipeline' limit 1
        7.48ms/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-06-29 14:51:34' where `id` = 1783
        610μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-29 14:51:34
        • 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)
        240μ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)
        210μ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
        240μ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
        250μ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
        JC30mP8DT1U33iOLjCddymjlQFh1rocgEOkSi6od
        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.3" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.3" ] "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 => "95763e21ff50ab95-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.3" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.3" "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" => "95763e21ff50ab95-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" => "29446" "REMOTE_ADDR" => "172.69.17.124" "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" => 1751208694.3268 "REQUEST_TIME" => 1751208694 ]
        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, 29 Jun 2025 14:51:35 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkVHWG5XY0o1MXFqK3U3ckoySWVZblE9PSIsInZhbHVlIjoiTmM2UXdWYURTd3ljSUpUdERzNWxsb0Vaa2wzaldUdzNZc243WGw3cUQxYTJvMW51aitLYTV2dWdSTkFGOGVFNktKUUUyQmNsNDk5VFBVRk9OajNLWlpFd0hVY09VM2NjZjBUNmJkcjZUeFAyWUFRTGF3Tnd6RnQybTR1Z2pkU0YiLCJtYWMiOiJjOGM2MWM2MTQ1ZDZhMmZkMzdiYzI3NzQzMWJhOThjMzJhMWVlYjIwZjViMzA3ZWYwZjIzYjkxNDM0NjNkMWZiIiwidGFnIjoiIn0%3D; expires=Sun, 29 Jun 2025 16:51:35 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IkVHWG5XY0o1MXFqK3U3ckoySWVZblE9PSIsInZhbHVlIjoiTmM2UXdWYURTd3ljSUpUdERzNWxsb0Vaa2wzaldUdzNZc243WGw3cUQxYTJvMW51aitLYTV2dWdSTkFGOGVFNktKUUUyQ" 1 => "laravel_session=eyJpdiI6IkcvUm9BNUtjTXB1dnJGQmlTSW5DdXc9PSIsInZhbHVlIjoiSUgycXNFZVdydEZ0T3hYTENPd0Q4T1hKNjk3clJyM0pya3VhMGd5YmtHZ0I3ZWVLVU5HT1VLOHNLeU45eVNydnZNV0xCczNxdEVQbEoyVC81LzZXQVllL0o4OG5xK2tlWXI1WkowNWFvYVdIdE16NnNKYkdGUzlHUkRPV3BCNFUiLCJtYWMiOiI4NmZmMjQ5Y2RmMTk2OGNiMzRmMzdlYzg3ZWEwNmFhOTMwYzRhYjE3M2NjYzgwODZkMjU3ZjMxYjM5YmI3YTEwIiwidGFnIjoiIn0%3D; expires=Sun, 29 Jun 2025 16:51:35 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkcvUm9BNUtjTXB1dnJGQmlTSW5DdXc9PSIsInZhbHVlIjoiSUgycXNFZVdydEZ0T3hYTENPd0Q4T1hKNjk3clJyM0pya3VhMGd5YmtHZ0I3ZWVLVU5HT1VLOHNLeU45eVNydnZN" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkVHWG5XY0o1MXFqK3U3ckoySWVZblE9PSIsInZhbHVlIjoiTmM2UXdWYURTd3ljSUpUdERzNWxsb0Vaa2wzaldUdzNZc243WGw3cUQxYTJvMW51aitLYTV2dWdSTkFGOGVFNktKUUUyQmNsNDk5VFBVRk9OajNLWlpFd0hVY09VM2NjZjBUNmJkcjZUeFAyWUFRTGF3Tnd6RnQybTR1Z2pkU0YiLCJtYWMiOiJjOGM2MWM2MTQ1ZDZhMmZkMzdiYzI3NzQzMWJhOThjMzJhMWVlYjIwZjViMzA3ZWYwZjIzYjkxNDM0NjNkMWZiIiwidGFnIjoiIn0%3D; expires=Sun, 29-Jun-2025 16:51:35 GMT; path=/XSRF-TOKEN=eyJpdiI6IkVHWG5XY0o1MXFqK3U3ckoySWVZblE9PSIsInZhbHVlIjoiTmM2UXdWYURTd3ljSUpUdERzNWxsb0Vaa2wzaldUdzNZc243WGw3cUQxYTJvMW51aitLYTV2dWdSTkFGOGVFNktKUUUyQ" 1 => "laravel_session=eyJpdiI6IkcvUm9BNUtjTXB1dnJGQmlTSW5DdXc9PSIsInZhbHVlIjoiSUgycXNFZVdydEZ0T3hYTENPd0Q4T1hKNjk3clJyM0pya3VhMGd5YmtHZ0I3ZWVLVU5HT1VLOHNLeU45eVNydnZNV0xCczNxdEVQbEoyVC81LzZXQVllL0o4OG5xK2tlWXI1WkowNWFvYVdIdE16NnNKYkdGUzlHUkRPV3BCNFUiLCJtYWMiOiI4NmZmMjQ5Y2RmMTk2OGNiMzRmMzdlYzg3ZWEwNmFhOTMwYzRhYjE3M2NjYzgwODZkMjU3ZjMxYjM5YmI3YTEwIiwidGFnIjoiIn0%3D; expires=Sun, 29-Jun-2025 16:51:35 GMT; path=/; httponlylaravel_session=eyJpdiI6IkcvUm9BNUtjTXB1dnJGQmlTSW5DdXc9PSIsInZhbHVlIjoiSUgycXNFZVdydEZ0T3hYTENPd0Q4T1hKNjk3clJyM0pya3VhMGd5YmtHZ0I3ZWVLVU5HT1VLOHNLeU45eVNydnZN" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "JC30mP8DT1U33iOLjCddymjlQFh1rocgEOkSi6od" "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" => [] ]