DevOps and Build Automation with Python

Brought by: Coursera

Overview

This course is the final course in a series that aims to prepare you for a role working as a programmer. In this course we will look at several automation concepts in DevOps with Python. Labs will allow the students to apply the material in the lectures in simple computer programs designed to re-enforce the material in the lesson.

Syllabus

  • Package Managers
    • In this module, we look at how we can install and utilize PIP to manage library packages.
  • Testing
    • In this module, we look at how to utilize Python for Testing. We will discuss automated and manual testing. We will discuss unit tests and integration testing. We will conclude with a look at writing unit tests.
  • Browser Automation
    • In this module, we extend our toolset of Python by looking at utilize Python to script the web browser. We look at the Python port of the puppeteer JavaScript headless library to Python in the library named pyppeteer.
  • Containers for Development
    • In this module, we look at containers. Containers allow developers to have a control environment to test and deploy their applications. We will specifically look at Docker and container automation with Python.

Taught by

Aspen Olmsted

DevOps and Build Automation with Python
Go to course

DevOps and Build Automation with Python

Brought by: Coursera

  • Coursera
  • Free
  • English
  • Certificate Available
  • Available at any time
  • beginner
  • English, Arabic, French, Portuguese, German, Thai, Indonesian, Spanish, Kazakh, Hindi, Russian, Swedish, Korean, Greek, Italian, Chinese, Ukrainian, Japanese, Polish, Dutch, Turkish
8.1.2PHP Version374msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (239ms)
    • Application (134ms)
    • 1 x Booting (63.84%)
      238.86ms
      1 x Application (35.92%)
      134.41ms
      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
      7 statements were executed5.93ms
      • select * from `courses` where `slug_en` = 'devops-and-build-automation-with-python' limit 1
        4.09ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. devops-and-build-automation-with-python
        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-02-14 02:48:57' where `id` = 947
        540μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-14 02:48:57
        • 1. 947
        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 (10)
        310μ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)
        280μ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 `institutions` where `institutions`.`id` in (43) and `institutions`.`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 `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        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 * from `html_files` where `html_files`.`id` = 941 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 941
        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\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        qlnRLOdt1wCo4iAEuhYWfu3RnNfmM2KcqyK8qeiP
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/devops-and-build-automation-with-python" ...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/devops-and-build-automation-with-python
        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 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "18.189.28.82" ] "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" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "18.189.28.82" ] "cf-ray" => array:1 [ 0 => "9119bdfac974e1ad-ORD" ] "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_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "18.189.28.82" "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_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "18.189.28.82" "HTTP_CF_RAY" => "9119bdfac974e1ad-ORD" "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" => "16568" "REMOTE_ADDR" => "108.162.216.91" "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/devops-and-build-automation-with-python" "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" => 1739501337.0099 "REQUEST_TIME" => 1739501337 ]
        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 => "Fri, 14 Feb 2025 02:48:57 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImViWjZUY0hiRUJFN1lwRDh0WWw4S0E9PSIsInZhbHVlIjoiL21EK3B3Y2IyYVR4OWdWbUVCWm50WXFxa1RKbnFqb3haSkE5OEk5b2k2dUZYMWdiMVdzSFlzSTR3Q0V3c0QxY3hkbUYrUWc1cVRBV25ZbUxlNGFLVHNkL1I5MFltSnVXYjhxMzR4cFdOTFExZmVEODI3K3dSUmNqSEdsekEzYjUiLCJtYWMiOiJhMjM0N2VhN2YxN2ZkZTI2NDcwNDYzNzlmNzEzZGM3YjFmZTc2ZjZiODU1YThhOWIwMzViOTRhN2E1NTVhNTUxIiwidGFnIjoiIn0%3D; expires=Fri, 14 Feb 2025 04:48:57 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImViWjZUY0hiRUJFN1lwRDh0WWw4S0E9PSIsInZhbHVlIjoiL21EK3B3Y2IyYVR4OWdWbUVCWm50WXFxa1RKbnFqb3haSkE5OEk5b2k2dUZYMWdiMVdzSFlzSTR3Q0V3c0QxY3hkbUYrU" 1 => "laravel_session=eyJpdiI6Imt3UGh2QlkrV09wSTNuR1pOT2ZEc2c9PSIsInZhbHVlIjoiRlhYd2xPM2luQWFiVWszMlk2QkxZYVp1UXY1ZEoySWl3ZVJ3T3NGVTJhSVBXTjJzbWRNRUQ4WVhRMUF3OUtjOUd1NGlwbldrSXFNVlRuQnVIek5nYkc3aDZsTERCcFZrZEtKSVdYM1RmSzRVUnN3MjczeEJqVDlSSmhPazNpM1IiLCJtYWMiOiIyMWI2YTJkOTlmZWU1NTI3NjU2MWUzYWZmMmNkMGFmNjI1ODFkNWM4YmUyMTA4ZDhjMWM5Y2M5OWU5YmM0OGQ3IiwidGFnIjoiIn0%3D; expires=Fri, 14 Feb 2025 04:48:57 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Imt3UGh2QlkrV09wSTNuR1pOT2ZEc2c9PSIsInZhbHVlIjoiRlhYd2xPM2luQWFiVWszMlk2QkxZYVp1UXY1ZEoySWl3ZVJ3T3NGVTJhSVBXTjJzbWRNRUQ4WVhRMUF3OUtjOUd1" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImViWjZUY0hiRUJFN1lwRDh0WWw4S0E9PSIsInZhbHVlIjoiL21EK3B3Y2IyYVR4OWdWbUVCWm50WXFxa1RKbnFqb3haSkE5OEk5b2k2dUZYMWdiMVdzSFlzSTR3Q0V3c0QxY3hkbUYrUWc1cVRBV25ZbUxlNGFLVHNkL1I5MFltSnVXYjhxMzR4cFdOTFExZmVEODI3K3dSUmNqSEdsekEzYjUiLCJtYWMiOiJhMjM0N2VhN2YxN2ZkZTI2NDcwNDYzNzlmNzEzZGM3YjFmZTc2ZjZiODU1YThhOWIwMzViOTRhN2E1NTVhNTUxIiwidGFnIjoiIn0%3D; expires=Fri, 14-Feb-2025 04:48:57 GMT; path=/XSRF-TOKEN=eyJpdiI6ImViWjZUY0hiRUJFN1lwRDh0WWw4S0E9PSIsInZhbHVlIjoiL21EK3B3Y2IyYVR4OWdWbUVCWm50WXFxa1RKbnFqb3haSkE5OEk5b2k2dUZYMWdiMVdzSFlzSTR3Q0V3c0QxY3hkbUYrU" 1 => "laravel_session=eyJpdiI6Imt3UGh2QlkrV09wSTNuR1pOT2ZEc2c9PSIsInZhbHVlIjoiRlhYd2xPM2luQWFiVWszMlk2QkxZYVp1UXY1ZEoySWl3ZVJ3T3NGVTJhSVBXTjJzbWRNRUQ4WVhRMUF3OUtjOUd1NGlwbldrSXFNVlRuQnVIek5nYkc3aDZsTERCcFZrZEtKSVdYM1RmSzRVUnN3MjczeEJqVDlSSmhPazNpM1IiLCJtYWMiOiIyMWI2YTJkOTlmZWU1NTI3NjU2MWUzYWZmMmNkMGFmNjI1ODFkNWM4YmUyMTA4ZDhjMWM5Y2M5OWU5YmM0OGQ3IiwidGFnIjoiIn0%3D; expires=Fri, 14-Feb-2025 04:48:57 GMT; path=/; httponlylaravel_session=eyJpdiI6Imt3UGh2QlkrV09wSTNuR1pOT2ZEc2c9PSIsInZhbHVlIjoiRlhYd2xPM2luQWFiVWszMlk2QkxZYVp1UXY1ZEoySWl3ZVJ3T3NGVTJhSVBXTjJzbWRNRUQ4WVhRMUF3OUtjOUd1" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "qlnRLOdt1wCo4iAEuhYWfu3RnNfmM2KcqyK8qeiP" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/devops-and-build-automation-with-python" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]