SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Konfiguracja GitLab
CI/CD pipelines
od podstaw
Tomasz Grażyński
Head of Quality Assurance
Wrocław, 20.04.2023
Plan
● Trochę teorii - czym jest CI/CD i po co to robimy?
● Stworzenie definicji pipeline;
● Dodanie podstawowych kroków (statyczna analiza kodu, unit testy, build);
● Zbudowanie artefaktów do deploymentu;
● Dodanie testów API;
● Parsowanie raportów z testów;
● Dodanie cache zależności;
● Dodanie testów UI end-to-end;
● Czas na pytania i odpowiedzi.
Czym jest CI/CD?
● CI - Continuous Integration
● Zautomatyzowany sposób budowania
i testowania aplikacji
● CD - Continuous Delivery
● Zautomatyzowany proces wdrażania
aplikacji i wprowadzanych zmian w
kodzie
Po co nam CI/CD?
● Większa pewność wprowadzanych zmian, mniejsze ryzyko wypuszczenia błędów;
● Stabilny, gotowy do releasu w każdej chwili branch;
● Cały zespół pracuje nad stabilną aplikacją;
● Mniejsze zmiany do testów, mniejsze release’y.
W rezultacie dostajemy:
● Krótszy Customer Lead Time
a. Szybszy feedback;
b. Większy zysk dla stakeholderów.
● Zadowolony klient :)
Let’s start!
● Sprawdźmy czy nasz projekt działa
● Stwórzmy podstawowy gitlab-ci.yml
● Dodajmy kroki lint i test
Budujemy
● Zbudujmy aplikację w naszym jobie
● Zbudujmy obraz dockerowy z produkcyjną wersją aplikacji
Testujemy i optymalizujemy
● Przetestujmy API
● Zaciągnijmy raport z testów
● Dodajmy cachowanie
● Przetestujmy aplikację E2E
Źródła:
● https://fullstackadmin.pl/wyjasniamy-co-to-jest-ci-cd
● https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html
● https://docs.gitlab.com/ee/ci/caching/#cache-nodejs-dependencies
● https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
● https://docs.docker.com/language/nodejs/build-images/
● https://github.com/cypress-io/cypress-example-docker-compose
● https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
… i różne artykuły i przykłady znalezione po frazach
takich jak:
● “dockerize node app”
● “docker-compose cypress example”
● “Dockerfile good practices”
● “Docker-compose good practices”
● “Node.js GitLab pipeline”
Q & A
time
Dziękuję!

Más contenido relacionado

Similar a Konfiguracja GitLab CI/CD pipelines od podstaw

QlikView / Qlik Sense
QlikView / Qlik SenseQlikView / Qlik Sense
QlikView / Qlik SenseBPX SA
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiMikołaj Olszewski
 
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)byteLAKE
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długMax Małecki
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiRadoslaw Smilgin
 
Analiza nowej Rekomendacji D pod kątem metodologii testowania
Analiza nowej Rekomendacji D pod kątem metodologii testowania Analiza nowej Rekomendacji D pod kątem metodologii testowania
Analiza nowej Rekomendacji D pod kątem metodologii testowania QualityIn.IT
 
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...Veritech Sp. z o.o.
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test..."Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...Women in Technology Poland
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31kraqa
 
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...Connectorio
 
Case Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SACase Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SADivante
 
Case study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SACase study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SATomasz Karwatka
 
Zapewnienie jakości w Scrum
Zapewnienie jakości w ScrumZapewnienie jakości w Scrum
Zapewnienie jakości w ScrumKrystian Kaczor
 
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka.
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka. To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka.
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka. Piotr Grabski-Gradziński
 
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...Business Link Krakow
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptThe Software House
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 

Similar a Konfiguracja GitLab CI/CD pipelines od podstaw (20)

QlikView / Qlik Sense
QlikView / Qlik SenseQlikView / Qlik Sense
QlikView / Qlik Sense
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
 
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE)
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
 
Analiza nowej Rekomendacji D pod kątem metodologii testowania
Analiza nowej Rekomendacji D pod kątem metodologii testowania Analiza nowej Rekomendacji D pod kątem metodologii testowania
Analiza nowej Rekomendacji D pod kątem metodologii testowania
 
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t...
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test..."Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
 
Praktyczna sprzedaż BIM + ISO 19650 (Odcinek 9)
Praktyczna sprzedaż BIM + ISO 19650 (Odcinek 9)Praktyczna sprzedaż BIM + ISO 19650 (Odcinek 9)
Praktyczna sprzedaż BIM + ISO 19650 (Odcinek 9)
 
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt...
 
Case Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SACase Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SA
 
Case study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SACase study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SA
 
Zapewnienie jakości w Scrum
Zapewnienie jakości w ScrumZapewnienie jakości w Scrum
Zapewnienie jakości w Scrum
 
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka.
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka. To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka.
To jak zrobimy ten projekt? Czyli o doborze technologii słów kilka.
 
8
88
8
 
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 

Más de Brainhub

AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?Brainhub
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
Solid.js - następca Reacta?
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?Brainhub
 
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieBrainhub
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?Brainhub
 
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Brainhub
 
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Brainhub
 
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesBrainhub
 
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityBrainhub
 
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wildBrainhub
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?Brainhub
 
React performance
React performanceReact performance
React performanceBrainhub
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJSBrainhub
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshellBrainhub
 
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Brainhub
 
Technologia, a Startup - Brainhub
Technologia, a Startup - BrainhubTechnologia, a Startup - Brainhub
Technologia, a Startup - BrainhubBrainhub
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQLBrainhub
 
How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to ReduxBrainhub
 
Wprowadzenie do React
Wprowadzenie do ReactWprowadzenie do React
Wprowadzenie do ReactBrainhub
 
JavaScript and Desktop Apps - Introduction to Electron
JavaScript and Desktop Apps - Introduction to ElectronJavaScript and Desktop Apps - Introduction to Electron
JavaScript and Desktop Apps - Introduction to ElectronBrainhub
 

Más de Brainhub (20)

AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
Solid.js - następca Reacta?
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?
 
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcie
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
 
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
 
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!
 
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokes
 
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivity
 
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wild
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
 
React performance
React performanceReact performance
React performance
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
 
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
 
Technologia, a Startup - Brainhub
Technologia, a Startup - BrainhubTechnologia, a Startup - Brainhub
Technologia, a Startup - Brainhub
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to Redux
 
Wprowadzenie do React
Wprowadzenie do ReactWprowadzenie do React
Wprowadzenie do React
 
JavaScript and Desktop Apps - Introduction to Electron
JavaScript and Desktop Apps - Introduction to ElectronJavaScript and Desktop Apps - Introduction to Electron
JavaScript and Desktop Apps - Introduction to Electron
 

Konfiguracja GitLab CI/CD pipelines od podstaw

  • 1.
  • 2. Konfiguracja GitLab CI/CD pipelines od podstaw Tomasz Grażyński Head of Quality Assurance Wrocław, 20.04.2023
  • 3. Plan ● Trochę teorii - czym jest CI/CD i po co to robimy? ● Stworzenie definicji pipeline; ● Dodanie podstawowych kroków (statyczna analiza kodu, unit testy, build); ● Zbudowanie artefaktów do deploymentu; ● Dodanie testów API; ● Parsowanie raportów z testów; ● Dodanie cache zależności; ● Dodanie testów UI end-to-end; ● Czas na pytania i odpowiedzi.
  • 4. Czym jest CI/CD? ● CI - Continuous Integration ● Zautomatyzowany sposób budowania i testowania aplikacji ● CD - Continuous Delivery ● Zautomatyzowany proces wdrażania aplikacji i wprowadzanych zmian w kodzie
  • 5. Po co nam CI/CD? ● Większa pewność wprowadzanych zmian, mniejsze ryzyko wypuszczenia błędów; ● Stabilny, gotowy do releasu w każdej chwili branch; ● Cały zespół pracuje nad stabilną aplikacją; ● Mniejsze zmiany do testów, mniejsze release’y. W rezultacie dostajemy: ● Krótszy Customer Lead Time a. Szybszy feedback; b. Większy zysk dla stakeholderów. ● Zadowolony klient :)
  • 6. Let’s start! ● Sprawdźmy czy nasz projekt działa ● Stwórzmy podstawowy gitlab-ci.yml ● Dodajmy kroki lint i test
  • 7. Budujemy ● Zbudujmy aplikację w naszym jobie ● Zbudujmy obraz dockerowy z produkcyjną wersją aplikacji
  • 8. Testujemy i optymalizujemy ● Przetestujmy API ● Zaciągnijmy raport z testów ● Dodajmy cachowanie ● Przetestujmy aplikację E2E
  • 9. Źródła: ● https://fullstackadmin.pl/wyjasniamy-co-to-jest-ci-cd ● https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html ● https://docs.gitlab.com/ee/ci/caching/#cache-nodejs-dependencies ● https://nodejs.org/en/docs/guides/nodejs-docker-webapp/ ● https://docs.docker.com/language/nodejs/build-images/ ● https://github.com/cypress-io/cypress-example-docker-compose ● https://docs.gitlab.com/ee/ci/docker/using_docker_build.html … i różne artykuły i przykłady znalezione po frazach takich jak: ● “dockerize node app” ● “docker-compose cypress example” ● “Dockerfile good practices” ● “Docker-compose good practices” ● “Node.js GitLab pipeline”