Set up a Continuous Integration (CI) workflow in CIrcleCI

بواسطة: Coursera

Overview

In this 1-hour long project-based course on Setting up a Continuous Integration (CI) workflow in CircleCI, you will work through the complete workflow of getting a development project (nodeJS application) through version control (git and GitHub) and into a simple CI pipeline in CirclCI.

This course is designed for developers who have never worked with a CI tool before who want to understand how continuous integration can benefit their development processes and/or how it fits together in a development lifecycle.

By the end of this course, you will have a working pipeline of your own (in your own CircleCI user account) which will handle the building and testing of your code based on any pull requests made to your project repository in GitHub

This is a beginner course and as such is not designed for intermediate developers or DevOps professionals and students who already understand CI/CD and want a deep-dive on CircleCI and its various configuration capabilities.

Note: This course works best for learners who are based in the North America region. We’re currently working on providing the same experience in other regions.

Syllabus

  • Project Overview
    • Hello and welcome to the course! In this beginner course on Continuous Integration (CI) workflow in CircleCI, you will work through the complete workflow of getting a development project (nodeJS application) through version control (git and GitHub) and into a simple CI pipeline in CirclCI. This course is designed for developers who have never worked with a CI tool before who want to understand how continuous integration can benefit their development processes and/or how it fits together in a development lifecycle. By the end of this course, you will have a working pipeline of your own (in your own CircleCI user account) which will handle the building and testing of your code based on any pull requests made to your project repository in GitHubThis is a beginner course and as such is not designed for intermediate developers or DevOps professionals and students who already understand CI/CD and want a deep-dive on CircleCI and its various configuration capabilities.

Taught by

Rudi Hinds

Set up a Continuous Integration (CI) workflow in CIrcleCI
الذهاب الي الدورة

Set up a Continuous Integration (CI) workflow in CIrcleCI

بواسطة: Coursera

  • Coursera
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • intermediate
  • English
8.1.2PHP Version312msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (198ms)
    • Application (113ms)
    • 1 x Booting (63.41%)
      197.67ms
      1 x Application (36.33%)
      113.26ms
      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
      7 statements were executed7.23ms
      • select * from `courses` where `slug_ar` = 'set-up-a-continuous-integration-(ci)-workflow-in-circleci' limit 1
        5.68ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. set-up-a-continuous-integration-(ci)-workflow-in-circleci
        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-05-16 01:57:36' where `id` = 2067
        720μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-05-16 01:57:36
        • 1. 2067
        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 (119)
        180μ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)
        150μ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 (106) and `institutions`.`deleted_at` is null
        170μ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
        150μ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` = 2058 limit 1
        180μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2058
        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
        LyU2dmBOOPtGlv74VHNUID1RdDvBlBBb3Yx3IhBT
        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/set-up...
        _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/set-up-a-continuous-integration-%28ci%29-workflow-in-circleci
        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 => "18.218.162.180" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "18.218.162.180" ] "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 => "940743e66c9e114d-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" => "18.218.162.180" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "18.218.162.180" "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" => "940743e66c9e114d-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" => "54636" "REMOTE_ADDR" => "172.69.59.27" "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/set-up-a-continuous-integration-%28ci%29-workflow-in-circleci" "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" => 1747360656.6443 "REQUEST_TIME" => 1747360656 ]
        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, 16 May 2025 01:57:36 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlNhMk1RTHdTMUlCS29PQ1RDa2RNZmc9PSIsInZhbHVlIjoiKy9Rc0ZwVGZLYllja3dIenh1OUxCdjNBVC9mSWZtbEt5UTJLVlMvK1VzckJGcVBIRm1JVGEvVGJBT1lWZm9vMnNueTV3WTkzMVhRMUZoRW1UZFgyOGx5VGI1YlVIamZiVFZVbkxydFZrdWV3VURtQnl5WC9Hd1dMYlM5Zy9yd1YiLCJtYWMiOiI2NGU2MWMzYWFhZTQ5NWZjYzQ4YjkyOTFiZTVhNTFiN2U1ZGNmNzc0MGE0M2FiNTNiOTVlOGVjNTk3ZGZiMjIyIiwidGFnIjoiIn0%3D; expires=Fri, 16 May 2025 03:57:36 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IlNhMk1RTHdTMUlCS29PQ1RDa2RNZmc9PSIsInZhbHVlIjoiKy9Rc0ZwVGZLYllja3dIenh1OUxCdjNBVC9mSWZtbEt5UTJLVlMvK1VzckJGcVBIRm1JVGEvVGJBT1lWZm9vMnNueTV3W" 1 => "laravel_session=eyJpdiI6IkhjcmlEb2RxdjZHd2tNOTc5L01pL1E9PSIsInZhbHVlIjoiQ1p4VlNKdjZrdElBV2lzTm9UQjIwd1NYdWRtREo4NnFoUm04aEM2UWpqU0NIYWRROVlnU3BIUk9ZbjZCTkxIanB2VEE5Vm1uMUYyU3E4TVJiTDloWlVsNGtITjlDOVkwVTFVYjRKQURmV25SUWFMYURuVmgwT0N4OXhFL2hUODgiLCJtYWMiOiIwNGFhNTM2NDc4M2M0OTU4ODEwNjk0NzgwY2QxNTk4ZTgwYjdkNjhkZTQ2YmNlOThiNTE1ODVmMDEwYWYyNjM5IiwidGFnIjoiIn0%3D; expires=Fri, 16 May 2025 03:57:36 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkhjcmlEb2RxdjZHd2tNOTc5L01pL1E9PSIsInZhbHVlIjoiQ1p4VlNKdjZrdElBV2lzTm9UQjIwd1NYdWRtREo4NnFoUm04aEM2UWpqU0NIYWRROVlnU3BIUk9ZbjZCTkxIanB2" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlNhMk1RTHdTMUlCS29PQ1RDa2RNZmc9PSIsInZhbHVlIjoiKy9Rc0ZwVGZLYllja3dIenh1OUxCdjNBVC9mSWZtbEt5UTJLVlMvK1VzckJGcVBIRm1JVGEvVGJBT1lWZm9vMnNueTV3WTkzMVhRMUZoRW1UZFgyOGx5VGI1YlVIamZiVFZVbkxydFZrdWV3VURtQnl5WC9Hd1dMYlM5Zy9yd1YiLCJtYWMiOiI2NGU2MWMzYWFhZTQ5NWZjYzQ4YjkyOTFiZTVhNTFiN2U1ZGNmNzc0MGE0M2FiNTNiOTVlOGVjNTk3ZGZiMjIyIiwidGFnIjoiIn0%3D; expires=Fri, 16-May-2025 03:57:36 GMT; path=/XSRF-TOKEN=eyJpdiI6IlNhMk1RTHdTMUlCS29PQ1RDa2RNZmc9PSIsInZhbHVlIjoiKy9Rc0ZwVGZLYllja3dIenh1OUxCdjNBVC9mSWZtbEt5UTJLVlMvK1VzckJGcVBIRm1JVGEvVGJBT1lWZm9vMnNueTV3W" 1 => "laravel_session=eyJpdiI6IkhjcmlEb2RxdjZHd2tNOTc5L01pL1E9PSIsInZhbHVlIjoiQ1p4VlNKdjZrdElBV2lzTm9UQjIwd1NYdWRtREo4NnFoUm04aEM2UWpqU0NIYWRROVlnU3BIUk9ZbjZCTkxIanB2VEE5Vm1uMUYyU3E4TVJiTDloWlVsNGtITjlDOVkwVTFVYjRKQURmV25SUWFMYURuVmgwT0N4OXhFL2hUODgiLCJtYWMiOiIwNGFhNTM2NDc4M2M0OTU4ODEwNjk0NzgwY2QxNTk4ZTgwYjdkNjhkZTQ2YmNlOThiNTE1ODVmMDEwYWYyNjM5IiwidGFnIjoiIn0%3D; expires=Fri, 16-May-2025 03:57:36 GMT; path=/; httponlylaravel_session=eyJpdiI6IkhjcmlEb2RxdjZHd2tNOTc5L01pL1E9PSIsInZhbHVlIjoiQ1p4VlNKdjZrdElBV2lzTm9UQjIwd1NYdWRtREo4NnFoUm04aEM2UWpqU0NIYWRROVlnU3BIUk9ZbjZCTkxIanB2" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "LyU2dmBOOPtGlv74VHNUID1RdDvBlBBb3Yx3IhBT" "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/set-up-a-continuous-integration-%28ci%29-workflow-in-circleci" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]