Building a Continuous Integration Pipeline with Travis CI

بواسطة: A Cloud Guru

Overview

Travis CI lets us automate the process of code testing, integration, delivery, and deployment, allowing us to bring DevOps and Agile principles into our code practices from push to production deployment. Fully-hosted and ready to use at only a few clicks of a button, Travis CI ties into your existing version control system and gets you ready to automate build testing and more with minimal up-front effort – gone are the days of having to supply your own testing infra!This course gets you started with Travis CI by breaking down the primary tool used to setup the platform: the .travis.yaml file. We’ll break down this file and use its structure to learn the different build phases Travis CI takes when integrating our application. With knowledge of these phases, we can then optimize our “Travisfile” to perform a number of jobs, test against a number of parameters, work in both parallel and in stages, and deploy to as many endpoints as we need.

Syllabus

  • Introduction
  • Setup and First Build
  • Improving the Build Process
  • Build Deployment
  • Conclusion

Taught by

Elle

Building a Continuous Integration Pipeline with Travis CI
الذهاب الي الدورة

Building a Continuous Integration Pipeline with Travis CI

بواسطة: A Cloud Guru

  • A Cloud Guru
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version974msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (633ms)
    • Application (338ms)
    • 1 x Booting (64.97%)
      633.02ms
      1 x Application (34.69%)
      338.03ms
      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.83ms
      • select * from `courses` where `slug_ar` = 'building-a-continuous-integration-pipeline-with-travis-ci' limit 1
        8.34ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. building-a-continuous-integration-pipeline-with-travis-ci
        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-19 03:52:29' where `id` = 2248
        550μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-19 03:52:29
        • 1. 2248
        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)
        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 `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 (45) 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` = 2239 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2239
        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
        jqU2HWJo6RrhGP5DAUryOrYwsggfpW284fqjry3f
        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-with-travis-ci
        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.151" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.151" ] "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 => "952012e8ea43e261-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.151" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.151" "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" => "952012e8ea43e261-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" => "62818" "REMOTE_ADDR" => "108.162.216.55" "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-with-travis-ci" "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" => 1750305148.5913 "REQUEST_TIME" => 1750305148 ]
        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 => "Thu, 19 Jun 2025 03:52:29 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImtoQ1NJNHNneG9HNCtweFA3bzc4Ymc9PSIsInZhbHVlIjoiKzNuQlJOcjZFaW1keVNvcDNEdkJzRmN1UnlwZVIyR2EzTGIxMDVDTmswY3lQbjlGSnBIcXpxczVnSytpdSsrM2tvekRpU3pTb1ZDUFFNRzkzNmJ1THBxZmJnblBzc0cvcExlUndPVm00Q3VWUCs4bUJOTDdxWFYxbllGRytuWkkiLCJtYWMiOiI4OWQ2ZTlkZDhhOTU3MjExYmU3MzFmOWExZDY2NjcxMDk1NzVjYmJiMzgxYzZkMjE3OWYwZmRlMzNkZGEyYjQ0IiwidGFnIjoiIn0%3D; expires=Thu, 19 Jun 2025 05:52:29 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImtoQ1NJNHNneG9HNCtweFA3bzc4Ymc9PSIsInZhbHVlIjoiKzNuQlJOcjZFaW1keVNvcDNEdkJzRmN1UnlwZVIyR2EzTGIxMDVDTmswY3lQbjlGSnBIcXpxczVnSytpdSsrM2tvekRpU" 1 => "laravel_session=eyJpdiI6ImJwNzZRbUpRWjVQYTREd1FiVmZnVlE9PSIsInZhbHVlIjoiTzkxRzFPckVxc0thWEhDOWd0VHdiV1hYemVHZmtFYmdpMGlvYjFVNDRISFR0Tyt4UmprSkFkbEowV1llVzhqV1FOVENNeFB2Y3k5NEdUMGRSMHBlVXp4ckZ2bTJwT2l1cVpQZDhQeDgyQVBPb3VIanMxcUErWTl4RW1KVkQwV04iLCJtYWMiOiI4OWI3OTJmMmMxNTBkYThmNjNkMDhmMzYzMGM5NDBmYjA3MjkyYjI3M2Q1OGM0YzI5NTQzODQ5YTU0YjM4MGIzIiwidGFnIjoiIn0%3D; expires=Thu, 19 Jun 2025 05:52:29 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6ImJwNzZRbUpRWjVQYTREd1FiVmZnVlE9PSIsInZhbHVlIjoiTzkxRzFPckVxc0thWEhDOWd0VHdiV1hYemVHZmtFYmdpMGlvYjFVNDRISFR0Tyt4UmprSkFkbEowV1llVzhqV1FO" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImtoQ1NJNHNneG9HNCtweFA3bzc4Ymc9PSIsInZhbHVlIjoiKzNuQlJOcjZFaW1keVNvcDNEdkJzRmN1UnlwZVIyR2EzTGIxMDVDTmswY3lQbjlGSnBIcXpxczVnSytpdSsrM2tvekRpU3pTb1ZDUFFNRzkzNmJ1THBxZmJnblBzc0cvcExlUndPVm00Q3VWUCs4bUJOTDdxWFYxbllGRytuWkkiLCJtYWMiOiI4OWQ2ZTlkZDhhOTU3MjExYmU3MzFmOWExZDY2NjcxMDk1NzVjYmJiMzgxYzZkMjE3OWYwZmRlMzNkZGEyYjQ0IiwidGFnIjoiIn0%3D; expires=Thu, 19-Jun-2025 05:52:29 GMT; path=/XSRF-TOKEN=eyJpdiI6ImtoQ1NJNHNneG9HNCtweFA3bzc4Ymc9PSIsInZhbHVlIjoiKzNuQlJOcjZFaW1keVNvcDNEdkJzRmN1UnlwZVIyR2EzTGIxMDVDTmswY3lQbjlGSnBIcXpxczVnSytpdSsrM2tvekRpU" 1 => "laravel_session=eyJpdiI6ImJwNzZRbUpRWjVQYTREd1FiVmZnVlE9PSIsInZhbHVlIjoiTzkxRzFPckVxc0thWEhDOWd0VHdiV1hYemVHZmtFYmdpMGlvYjFVNDRISFR0Tyt4UmprSkFkbEowV1llVzhqV1FOVENNeFB2Y3k5NEdUMGRSMHBlVXp4ckZ2bTJwT2l1cVpQZDhQeDgyQVBPb3VIanMxcUErWTl4RW1KVkQwV04iLCJtYWMiOiI4OWI3OTJmMmMxNTBkYThmNjNkMDhmMzYzMGM5NDBmYjA3MjkyYjI3M2Q1OGM0YzI5NTQzODQ5YTU0YjM4MGIzIiwidGFnIjoiIn0%3D; expires=Thu, 19-Jun-2025 05:52:29 GMT; path=/; httponlylaravel_session=eyJpdiI6ImJwNzZRbUpRWjVQYTREd1FiVmZnVlE9PSIsInZhbHVlIjoiTzkxRzFPckVxc0thWEhDOWd0VHdiV1hYemVHZmtFYmdpMGlvYjFVNDRISFR0Tyt4UmprSkFkbEowV1llVzhqV1FO" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "jqU2HWJo6RrhGP5DAUryOrYwsggfpW284fqjry3f" "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-with-travis-ci" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]