Konfiguracja GitLab CI/CD pipelines od podstaw

Brainhub
BrainhubBrainhub
Konfiguracja GitLab CI/CD pipelines od podstaw
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ę!
1 of 11

Recommended

Human computer interaction by
Human computer interactionHuman computer interaction
Human computer interactionsai anjaneya
34.6K views64 slides
Theory of programming by
Theory of programmingTheory of programming
Theory of programmingtcc_joemarie
1.1K views16 slides
Evolution of computer by
Evolution of computerEvolution of computer
Evolution of computerAnkit Yadav
129.6K views30 slides
Precise LSTM Algorithm by
Precise LSTM AlgorithmPrecise LSTM Algorithm
Precise LSTM AlgorithmYasutoTamura1
2.2K views86 slides
Challenges in nlp by
Challenges in nlpChallenges in nlp
Challenges in nlpZareen Syed
9.1K views36 slides
Evolution of Programming Languages by
Evolution of Programming LanguagesEvolution of Programming Languages
Evolution of Programming LanguagesSayanee Basu
10.2K views26 slides

More Related Content

What's hot

Paper Prototyping by
Paper PrototypingPaper Prototyping
Paper PrototypingDevesh Jagatram
3.1K views18 slides
What is an algorithm? by
What is an algorithm?What is an algorithm?
What is an algorithm?Angela DeHart
18.5K views33 slides
Improving Software Quality Using Object Oriented Design Principles by
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesDr. Syed Hassan Amin
1.6K views34 slides
Natural Language Processing by
Natural Language ProcessingNatural Language Processing
Natural Language ProcessingYasir Khan
4K views54 slides
History of programming by
History of programmingHistory of programming
History of programmingSharwin Calimlim
20.6K views32 slides
Internationalization by
InternationalizationInternationalization
InternationalizationKashyap Parmar
1.5K views40 slides

What's hot(20)

What is an algorithm? by Angela DeHart
What is an algorithm?What is an algorithm?
What is an algorithm?
Angela DeHart18.5K views
Improving Software Quality Using Object Oriented Design Principles by Dr. Syed Hassan Amin
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design Principles
Natural Language Processing by Yasir Khan
Natural Language ProcessingNatural Language Processing
Natural Language Processing
Yasir Khan4K views
Foundations of hci the computer by swarna sudha
Foundations of hci   the computerFoundations of hci   the computer
Foundations of hci the computer
swarna sudha181 views
Deep Implicit Layers: Learning Structured Problems with Neural Networks by Sangwoo Mo
Deep Implicit Layers: Learning Structured Problems with Neural NetworksDeep Implicit Layers: Learning Structured Problems with Neural Networks
Deep Implicit Layers: Learning Structured Problems with Neural Networks
Sangwoo Mo203 views
Stemming And Lemmatization Tutorial | Natural Language Processing (NLP) With ... by Edureka!
Stemming And Lemmatization Tutorial | Natural Language Processing (NLP) With ...Stemming And Lemmatization Tutorial | Natural Language Processing (NLP) With ...
Stemming And Lemmatization Tutorial | Natural Language Processing (NLP) With ...
Edureka!1.6K views
Ubiquitous Computing by u065932
Ubiquitous ComputingUbiquitous Computing
Ubiquitous Computing
u06593251.5K views
History of computing technology by Pavan Kumar...
History of computing technologyHistory of computing technology
History of computing technology
Pavan Kumar...847 views
The three state model for input by Ajay Ganapathy
The three state model for inputThe three state model for input
The three state model for input
Ajay Ganapathy1.7K views
Natural language processing (Python) by Sumit Raj
Natural language processing (Python)Natural language processing (Python)
Natural language processing (Python)
Sumit Raj5.9K views

Similar to Konfiguracja GitLab CI/CD pipelines od podstaw

Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel by
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelLaravel Poland MeetUp
698 views19 slides
Continuous Integration by
Continuous IntegrationContinuous Integration
Continuous IntegrationMarcin Daczkowski
430 views16 slides
Ciągłe Dostarcznie - Wprowadzenie by
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieArtur Radosz
218 views17 slides
Case study eCommerce od OEX Divante by
Case study eCommerce od OEX DivanteCase study eCommerce od OEX Divante
Case study eCommerce od OEX DivanteDivante
3.1K views71 slides
Divante - Mała książeczka sukcesów - część 2 by
Divante - Mała książeczka sukcesów - część 2Divante - Mała książeczka sukcesów - część 2
Divante - Mała książeczka sukcesów - część 2Divante
1.5K views36 slides
university day 1 by
university day 1university day 1
university day 1Sławomir Borowiec
1.4K views132 slides

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

Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel by Laravel Poland MeetUp
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Ciągłe Dostarcznie - Wprowadzenie by Artur Radosz
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - Wprowadzenie
Artur Radosz218 views
Case study eCommerce od OEX Divante by Divante
Case study eCommerce od OEX DivanteCase study eCommerce od OEX Divante
Case study eCommerce od OEX Divante
Divante3.1K views
Divante - Mała książeczka sukcesów - część 2 by Divante
Divante - Mała książeczka sukcesów - część 2Divante - Mała książeczka sukcesów - część 2
Divante - Mała książeczka sukcesów - część 2
Divante1.5K views
QlikView / Qlik Sense by BPX SA
QlikView / Qlik SenseQlikView / Qlik Sense
QlikView / Qlik Sense
BPX SA193 views
Programowanie Komponentowe: #C Wprowadzenie do OSGi by Mikołaj Olszewski
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Mikołaj Olszewski738 views
Automatyczny Monitoring Jakości w Fabryce (Sztuczna Inteligencja, byteLAKE) by 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)
byteLAKE25 views
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług by Max Małecki
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
Max Małecki26 views
Automatyzacja w praktyce. Praktyka automatyzacji by Radoslaw Smilgin
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
Radoslaw Smilgin140 views
Analiza nowej Rekomendacji D pod kątem metodologii testowania by QualityIn.IT
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.IT12.1K views
Testowanie silników elektrycznych - dedykowane rozwiązania dla wymagających t... by Veritech Sp. z o.o.
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...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test... by Women in Technology Poland
"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 by kraqa
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
kraqa291 views
ConnectorIO Cloud BMS - prezentacja oprogramowania do zarządzania infrastrukt... by Connectorio
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...
Connectorio2.2K views
Case study - Wdrożenie eCommerce w TIM SA by Tomasz Karwatka
Case study - Wdrożenie eCommerce w TIM SACase study - Wdrożenie eCommerce w TIM SA
Case study - Wdrożenie eCommerce w TIM SA
Tomasz Karwatka832 views
Case Study - eCommerce w TIM SA by Divante
Case Study - eCommerce w TIM SACase Study - eCommerce w TIM SA
Case Study - eCommerce w TIM SA
Divante1.1K views

More from Brainhub

Solid.js - następca Reacta? by
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?Brainhub
51 views26 slides
Struktury algebraiczne w JavaScripcie by
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieBrainhub
59 views71 slides
WebAssembly - czy dzisiaj mi się to przyda do pracy? by
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
46 views29 slides
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo! by
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
44 views60 slides
Go home TypeScript, you're drunk! by
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Brainhub
580 views17 slides
How I taught the messenger to tell lame jokes by
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
223 views88 slides

More from Brainhub(20)

Solid.js - następca Reacta? by Brainhub
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?
Brainhub51 views
Struktury algebraiczne w JavaScripcie by Brainhub
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcie
Brainhub59 views
WebAssembly - czy dzisiaj mi się to przyda do pracy? by Brainhub
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?
Brainhub46 views
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo! by 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!
Brainhub44 views
Go home TypeScript, you're drunk! by Brainhub
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!
Brainhub580 views
How I taught the messenger to tell lame jokes by Brainhub
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
Brainhub223 views
The hunt of the unicorn, to capture productivity by Brainhub
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivity
Brainhub106 views
TDD in the wild by Brainhub
TDD in the wildTDD in the wild
TDD in the wild
Brainhub128 views
WebAssembly - kolejny buzzword, czy (r)ewolucja? by Brainhub
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
Brainhub106 views
React performance by Brainhub
React performanceReact performance
React performance
Brainhub196 views
Introduction to RxJS by Brainhub
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
Brainhub3.7K views
React Native in a nutshell by Brainhub
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
Brainhub719 views
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence) by Brainhub
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Brainhub951 views
Technologia, a Startup - Brainhub by Brainhub
Technologia, a Startup - BrainhubTechnologia, a Startup - Brainhub
Technologia, a Startup - Brainhub
Brainhub441 views
Introduction to GraphQL by Brainhub
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
Brainhub3.3K views
How should you React to Redux by Brainhub
How should you React to ReduxHow should you React to Redux
How should you React to Redux
Brainhub3.8K views
Wprowadzenie do React by Brainhub
Wprowadzenie do ReactWprowadzenie do React
Wprowadzenie do React
Brainhub787 views
JavaScript and Desktop Apps - Introduction to Electron by Brainhub
JavaScript and Desktop Apps - Introduction to ElectronJavaScript and Desktop Apps - Introduction to Electron
JavaScript and Desktop Apps - Introduction to Electron
Brainhub4.9K views
Why and How You Should Move from PHP to Node.js by Brainhub
Why and How You Should Move from PHP to Node.jsWhy and How You Should Move from PHP to Node.js
Why and How You Should Move from PHP to Node.js
Brainhub5.1K views
All you need to know about Callbacks, Promises, Generators by Brainhub
All you need to know about Callbacks, Promises, GeneratorsAll you need to know about Callbacks, Promises, Generators
All you need to know about Callbacks, Promises, Generators
Brainhub812 views

Konfiguracja GitLab CI/CD pipelines od podstaw

  • 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”