Search icon
Subscription
0
Cart icon
Close icon
You have no products in your basket yet
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Mastering Jenkins

You're reading from  Mastering Jenkins

Product type Book
Published in Oct 2015
Publisher Packt
ISBN-13 9781784390891
Pages 334 pages
Edition 1st Edition
Languages
Authors (2):
jmcallister - jmcallister -
Jonathan McAllister Jonathan McAllister
Profile icon Jonathan McAllister
View More author details

Table of Contents (18) Chapters

Mastering Jenkins
Credits
Foreword
About the Author
About the Reviewers
www.PacktPub.com
Preface
1. Setup and Configuration of Jenkins 2. Distributed Builds – Master/Slave Mode 3. Creating Views and Jobs in Jenkins 4. Managing Views and Jobs in Jenkins 5. Advanced Automated Testing 6. Software Deployments and Delivery 7. Build Pipelines 8. Continuous Practices 9. Integrating Jenkins with Other Technologies 10. Extending Jenkins Index

Index

A

  • A/B testing
    • about / Quality assurance initiatives and test automation terminology
  • Active Directory
    • URL / Quality gates and approvals
  • Ansible
    • Jenkins, integrating / Integrating Jenkins with Ansible – Linux and Windows
    • URL / Integrating Jenkins with Ansible – Linux and Windows
  • Apache reverse proxy
    • Jenkins, executing / Running Jenkins behind an Apache reverse proxy
  • Apache web server
    • URL / Running Jenkins behind an Apache reverse proxy
  • Archiva
    • URL / Implementing a Definitive Media Library
  • artifactory
    • URL / Implementing a Definitive Media Library
  • Artifactory
    • Jenkins, integrating / Jenkins and Artifactory
  • Artifactory plugin
    • URL / Jenkins and Artifactory
  • artifacts
    • retrieving / Retrieving build artifacts and packages
    • fetching, archive artifacts used / Fetching artifacts via archive artifacts
    • fetching, from artifactory / Fetching artifacts from Artifactory
    • fetching, via Maven / Fetching artifacts via Maven
  • automated tests
    • implementing / Quality assurance initiatives and test automation terminology
    • unit tests / Quality assurance initiatives and test automation terminology
    • smoke / BVT (Build Verification) tests / Quality assurance initiatives and test automation terminology
    • functional tests / Quality assurance initiatives and test automation terminology
    • regression tests / Quality assurance initiatives and test automation terminology
    • capacity tests / Quality assurance initiatives and test automation terminology
    • black box tests / Quality assurance initiatives and test automation terminology
    • white box tests / Quality assurance initiatives and test automation terminology
    • A/B testing / Quality assurance initiatives and test automation terminology
    • product code, connecting / Connecting product codes to tests
    • quality, implementing / Baking quality into the product
    • architecture / Efficient automated test architecture
    • in Jenkins / Automated testing in Jenkins
    • executing, via MSTest / Running automated tests via MSTest

B

  • Behavior Driven Development (BDD)
    • about / Automated testing in Jenkins
  • black box tests
    • about / Quality assurance initiatives and test automation terminology
  • branching by abstraction
    • about / Branch by abstraction
  • build history panel
    • about / The Build History panel
  • build notification programs
    • reference link / RSS feeds
  • build pipelines
    • value proposition / The value proposition of build pipelines
    • architecting / Architecting a build pipeline
    • first segment / The first segment of the build pipeline
    • additional segments / Additional pipeline segments
    • release management / The complete pipeline
    • release pipeline segments / Visualizing the final pipeline, Alterations for shrink-wrapped and embedded projects
    • production pipeline segments / Visualizing the final pipeline, Alterations for shrink-wrapped and embedded projects
    • downstream jobs, triggering / Upstream jobs – triggered
    • upstream jobs, triggering / Upstream jobs – triggered
    • other projects, building / Downstream jobs – via post build actions
    • parameterized trigger plugin / The Parameterized Trigger plugin
    • Promoted build plugin / The Promoted build plugin
    • Post Build Tasks plugin / The Post-Build Tasks plugin
    • Delivery Pipeline plugin / The Delivery Pipeline plugin
    • Jenkins instances, connecting / Connecting two Jenkins instances – development and production
  • build pipelines, Continuous Delivery (CD)
    • workflow / Build pipeline workflow and visualization
    • visualization / Build pipeline workflow and visualization
    • URL / Build pipeline workflow and visualization
  • build process
    • about / Standardizing build outputs
    • flow / Standardizing build outputs
    • standardizing / Standardizing build outputs
    • packaging scheme, architecting / Architecting a packaging scheme
  • build queue panel
    • about / The Jenkins build queue and executor status panel

C

  • Call remote job plugin
    • URL / Connecting two Jenkins instances – development and production
  • capacity tests
    • about / Quality assurance initiatives and test automation terminology
  • Categorized View plugin
    • about / Organizing test jobs
    • URL / Organizing test jobs
  • CIFS
    • about / Slave agents on Windows via WMI and DCOM
    • errors, troubleshooting / Troubleshooting Windows DCOM and CIFS errors
  • code based branching techniques
    • about / Code-based branching techniques
    • branching by abstraction / Branch by abstraction
  • command line options
    • used, for launching Java Web Start (JavaWS) framework / JavaWS via the command line
    • used, for launching headless slave agents / Headless slave agents via the command line
  • configuration panel
    • about / The configuration panel, The Configuration panel
    • options / The Configuration panel
  • console output
    • about / The Console Output
  • Continuous Delivery (CD)
    • about / Continuous Delivery
    • characteristics / Continuous Delivery
    • implementing / Continuous Delivery
    • principles / The principles of Continuous Delivery
    • in Jenkins / Continuous Delivery in Jenkins
    • rapid feedback loops / Rapid feedback loops
    • quality gates / Quality gates and approvals
    • approvals / Quality gates and approvals
    • build pipelines / Build pipeline workflow and visualization
  • Continuous Deployment
    • about / Continuous Deployment
    • in Jenkins / Continuous Deployment in Jenkins
  • Continuous Integration (CI)
    • about / Continuous Integration
    • misconception / What Continuous Integration is not
    • implementing / What Continuous Integration is not
    • and branches / What Continuous Integration is not
    • code based branching techniques / Code-based branching techniques
    • feature toggles / Feature toggles
    • failures, fixing / Fail fast and recover even faster
    • Distributed Version Control (DVCS) / Distributed Version Control
    • in Jenkins / Continuous Integration in Jenkins
    • SCM polling / SCM polling
    • Jenkins job, executing via SVN post-commit hooks / Running a Jenkins job via the SVN post-commit hooks
    • Jenkins job, triggering via GitHub push / Triggering a Jenkins job via GitHub push
  • CRON-based polling
    • about / SCM polling
  • CruiseControl
    • about / What Continuous Integration is not

D

  • DCOM
    • about / Slave agents on Windows via WMI and DCOM
    • errors, troubleshooting / Troubleshooting Windows DCOM and CIFS errors
  • DCOM Windows Service
    • slave node, launching / Slave agents on Windows via WMI and DCOM
  • Defense Advanced Research Projects Agency (DARPA)
    • about / The value proposition of build pipelines
  • Delivery Pipeline plugin
    • configuring / The Delivery Pipeline plugin
    • URL / The Delivery Pipeline plugin
  • deployment automation
    • about / Automated deployments
    • build artifacts, retrieving / Retrieving build artifacts and packages
    • packages, retrieving / Retrieving build artifacts and packages
    • executing / Executing deployment automation
    • Jenkins slave nodes, leveraging for deployment / Leveraging Jenkins slave nodes for deployment
  • describables
    • implementing / Working with describables and descriptors
  • descriptors
    • implementing / Working with describables and descriptors
  • disaster recovery
    • about / Disaster recovery in Jenkins
    • snapshot backups / Jenkins snapshot backups
    • Jenkins mirror, setting up / Setting up a Jenkins mirror – rsync
  • distributed builds-related Jenkins plugins
    • about / Jenkins plugins that support distributed builds
  • distributed testing solutions
    • about / Distributed testing solutions
    • Selenium grid / The Selenium Grid
    • parallel down stream jobs / Parallel down-stream jobs
  • Distributed Version Control (DVCS)
    • about / Distributed Version Control
  • DML
    • about / Implementing a Definitive Media Library
    • Jenkins artifacts, archiving / Jenkins' archive the artifacts post-build action
    • artifactory, publishing to / Publishing to Artifactory
    • Jenkins Artifactory plugin / Publishing to Artifactory
    • Maven, publishing via / Publishing via Maven
    • Docker container, pushing / Pushing a Docker container
  • Docker
    • Jenkins, integrating / Jenkins and Docker – Linux guide
    • URL / Running Jenkins inside a Docker container – Linux
    • used, for implementing dynamic Jenkins slave nodes / Dynamic Jenkins slave nodes using Docker
  • Docker container
    • Jenkins, running / Running Jenkins inside a Docker container – Linux
    • URL / Running Jenkins inside a Docker container – Linux
  • downstream jobs
    • other projects, building / Downstream jobs – via post build actions
  • dynamic Jenkins slave nodes
    • implementing, Docker used / Dynamic Jenkins slave nodes using Docker
    • prerequisites / Dynamic Jenkins slave nodes using Docker
    • implementation tutorial / Implementation tutorial

E

  • Email-Ext plugin
    • about / Rapid feedback loops
    • URL / Rapid feedback loops
  • evarga/jenkins-slave
    • URL / Implementation tutorial
  • executor status panel
    • about / The Jenkins build queue and executor status panel
  • extension points, Jenkins plugins
    • about / The architecture of Jenkins plugins
    • URL / The architecture of Jenkins plugins
  • Extreme Programming (XP)
    • about / Continuous Integration

F

  • failed jobs
    • disabling / The Console Output
  • feature toggles
    • about / Feature toggles
    • reference link / Feature toggles
    • in Java / Feature toggles
    • in Python / Feature toggles
    • in .NET / Feature toggles
    • in C# / Feature toggles
    • in Ruby / Feature toggles
    • in Ruby on Rails / Feature toggles
    • in Embedded / C / C++ / Feature toggles
  • freestyle project
    • about / Freestyle projects in Jenkins
    • creating / Freestyle projects in Jenkins
    • options / Project options
    • build parameters, defining / Defining build parameters
    • Advanced project options / Advanced project options
    • source code management / Source code management
    • build triggers / Build triggers
    • build steps / Build steps
    • post-build actions / Post-build actions
  • functional tests
    • about / Quality assurance initiatives and test automation terminology

G

  • Git
    • for source control / Source control via Git–requires the Git plugin
    • options / Source control via Git–requires the Git plugin
    • additional behaviors buttons / Additional behaviors
  • GitHub
    • URL / GitHub configurations:
  • GitHub push
    • Jenkins job, triggering / Triggering a Jenkins job via GitHub push
    • Jenkins configurations / Jenkins configurations
    • URL / Jenkins configurations
    • GitHub configurations / GitHub configurations:
  • Green Balls plugin
    • about / The job table
  • groups
    • about / Labels, groups, and load balancing
    • creating, for slave node / Attaching a slave to many groups

H

  • headless slave agents
    • launching, via command line / Headless slave agents via the command line
  • HPI plugin
    • installing / Compiling and installing an HPI plugin
    • compiling / Compiling and installing an HPI plugin

I

  • Infrastructure as Code (IaC)
    • about / Integrating Jenkins with Ansible – Linux and Windows
  • IntelliJ IDEA
    • setting up / Setting up the development environment
    • Maven-generated plugin, importing / Importing a Maven-generated skeleton into IntelliJ

J

  • Java Development Kit (JDK)
    • about / Setting up the development environment
  • Java documentation
    • URL / Executing deployment automation
  • Java Runtime Environment (JRE)
    • about / Jenkins on Microsoft Windows
  • Java Web Start (JavaWS) framework
    • slave node, launching / Slave agent via Java Web Start
    • prerequisites / Prerequisites
    • URL / Prerequisites
    • launch page / The Jenkins Java Web Start launch page
    • launching, via web browser / JavaWS via a web browser
    • launching, via command line / JavaWS via the command line
    • headless slave agents, launching via command line / Headless slave agents via the command line
  • Jelly files
    • about / Jelly tags and files
  • Jelly tags
    • about / Jelly tags and files
    • URL / Jelly tags and files
    • example / Jelly tags and files
  • Jenkins
    • architecture / The Jenkins platform architecture and configuration techniques
    • configuration techniques / The Jenkins platform architecture and configuration techniques
    • executing, behind NGinX reverse proxy / Running Jenkins behind an NGINX reverse proxy
    • URL / Running Jenkins behind an NGINX reverse proxy
    • executing, behind Apache reverse proxy / Running Jenkins behind an Apache reverse proxy
    • automated tests / Automated testing in Jenkins
    • MSTest results, reporting / Running MSTests and reporting the results in Jenkins
    • MSTest results, publishing / Publishing test results in Jenkins
    • integrating, with Docker / Jenkins and Docker – Linux guide
    • running, inside Docker container / Running Jenkins inside a Docker container – Linux
    • integrating, with Ansible / Integrating Jenkins with Ansible – Linux and Windows
    • integrating, with Artifactory / Jenkins and Artifactory
    • integrating, with Selenium Grid / Jenkins and Selenium Grid
    • Selenium Grid, integrating / Writing tests and integrating them into Jenkins
    • integrating, with Jira / Jenkins and Jira
  • Jenkins, on Linux and Unix
    • installation / Jenkins on Linux and UNIX
    • Java JVM, configuring / Configuring the JVM
  • Jenkins, on Mac OS X
    • installation / Jenkins on Mac OS X
    • Jenkins LTS release, using / The Jenkins LTS release line
    • XML configuration files / Jenkins XML configuration files
  • Jenkins, on Microsoft Windows
    • installation / Jenkins on Microsoft Windows
    • JVM, configuring / Configuring the JVM and Java arguments–port, JRE, and memory
    • Java arguments, configuring / Configuring the JVM and Java arguments–port, JRE, and memory
  • Jenkins Ansible plugin
    • URL / Integrating Jenkins with Ansible – Linux and Windows
  • Jenkins Artifactory plugin / Publishing to Artifactory
  • Jenkins community
    • URL / Pushing a Docker container
  • Jenkins Docker plugin
    • URL / Pre-requisite requirements, Implementation tutorial
  • Jenkins fingerprints / Jenkins fingerprints
  • Jenkins instances
    • connecting / Connecting two Jenkins instances – development and production
  • Jenkins JClouds plugin
    • URL / Pre-requisite requirements
  • Jenkins job
    • running, via SVN post-commit hooks / Running a Jenkins job via the SVN post-commit hooks
    • triggering, via GitHub push / Triggering a Jenkins job via GitHub push
  • Jenkins LTS release
    • installing / The Jenkins LTS release line
    • URL / The Jenkins LTS release line
  • Jenkins mirror
    • setting up, with rsync / Setting up a Jenkins mirror – rsync
  • Jenkins plugins
    • URL / Jenkins snapshot backups, Automated testing in Jenkins
    • reference link / Setting up the development environment
    • skeleton, creating / Creating a Jenkins plugin skeleton
    • folder structure / The plugin skeleton
    • architecture / The architecture of Jenkins plugins
    • extension points / The architecture of Jenkins plugins
    • job lifecycle / Understanding the Jenkins job lifecycle
    • overrides, using / Using overrides
    • describables, implementing / Working with describables and descriptors
    • descriptors, implementing / Working with describables and descriptors
  • Jenkins slave nodes
    • leveraging, for deployment / Leveraging Jenkins slave nodes for deployment
  • JetBrains ItelliJ IDEA
    • URL / Setting up the development environment
  • Jira
    • URL / Jenkins and Jira
    • Jenkins, integrating / Jenkins and Jira
    • reference link / Jenkins and Jira
  • job
    • project page, navigating / Navigating a job's project page
  • job execution
    • about / Job execution
  • job execution configuration panel
    • about / The Job Execution Configuration panel
  • jobs
    • organizing / The job table
    • about / Jobs in Jenkins
    • freestyle project / Jobs in Jenkins, Freestyle projects in Jenkins
    • Maven project / Jobs in Jenkins, Maven projects
    • multiconfiguration project / Jobs in Jenkins
    • existing job, copying / Jobs in Jenkins
    • external job / Jobs in Jenkins
    • external jobs, monitoring / Monitoring external jobs
    • multiconfiguration jobs / Multiconfiguration jobs in Jenkins – matrix jobs
    • filtering, by regular expression / Filtering jobs by regular expression
  • job table
    • about / The job table
  • JUnit Plugin
    • URL / Writing tests and integrating them into Jenkins

K

  • Kaizen (Continuous Improvement)
    • about / Kaizen – Continuous Improvement
    • implementing / Kaizen – Continuous Improvement
    • Kanban / Kanban
  • Kanban
    • about / Kanban

L

  • labels
    • about / Labels, groups, and load balancing
    • creating, for slave node / Attaching a slave to a group by creating a label
  • Lightweight Directory Access Protocol (LDAP)
    • about / Quality gates and approvals
    • URL / Quality gates and approvals
  • load balancing
    • about / Labels, groups, and load balancing
  • Long-Term Support (LTS)
    • about / The Jenkins LTS release line

M

  • main header
    • about / The main header
  • master/slave architecture
    • about / Understanding the master and slave architecture
    • slave, creating on master / Creating slave nodes in the UI
    • distributed builds-related Jenkins plugins / Jenkins plugins that support distributed builds
  • Maven
    • URL / Publishing via Maven
  • Maven-generated plugin
    • importing, into IntelliJ IDEA / Importing a Maven-generated skeleton into IntelliJ
  • Maven 3
    • URL / Setting up the development environment
  • Maven project, jobs
    • about / Maven projects
    • build triggers / Build triggers
    • build step / Build step
    • advanced options / Advanced options
    • post-build steps / Post-build steps
  • Maven Project plugin
    • URL / Post-build steps
  • memory allocation
    • about / Configuring the JVM
  • MSTest
    • used, for performing unit tests / Unit tests in Jenkins through MSTest
    • agents, setting up / How to set up MSTest agents
    • agents, URL / How to set up MSTest agents
    • automated tests, executing / Running automated tests via MSTest
    • example / A example MSTest execution
    • executing / Running MSTests and reporting the results in Jenkins
    • results, reporting in Jenkins / Running MSTests and reporting the results in Jenkins
    • results, publishing in Jenkins / Publishing test results in Jenkins
    • test jobs, organizing / Organizing test jobs
  • multiconfiguration jobs
    • about / Multiconfiguration jobs in Jenkins – matrix jobs
    • configuration matrix / Configuration matrix
    • slave option / Slaves
    • label expression axis / Label expression
    • user-defined axis / User-defined axes

N

  • Nexus
    • URL / Implementing a Definitive Media Library
  • NGinX reverse proxy
    • Jenkins, executing / Running Jenkins behind an NGINX reverse proxy
  • node administration dashboard
    • about / The node administration dashboard

O

  • Oracle
    • URL / Slave agents on Windows via WMI and DCOM
  • Oracle Java JDK 1.7
    • URL / Setting up the development environment
  • Origin
    • URL / Implementing a Definitive Media Library
  • overrides
    • using / Using overrides

P

  • package integrity, verifying
    • Jenkins fingerprints / Jenkins fingerprints
  • packages
    • retrieving / Retrieving build artifacts and packages
    • integrity, verifying / Verifying package integrity
  • parallel down stream jobs
    • using / Parallel down-stream jobs
  • parameterized trigger plugin
    • about / The Parameterized Trigger plugin
    • URL / The Parameterized Trigger plugin
    • configuring / The Parameterized Trigger plugin
  • Post Build Tasks plugin
    • configuring / The Post-Build Tasks plugin
    • URL / The Post-Build Tasks plugin
  • product code
    • connecting, to automated tests / Connecting product codes to tests
  • project overview (central panel)
    • about / The project overview – central panel
  • project page, job
    • navigating / Navigating a job's project page
    • configuration panel / The Configuration panel
    • build history panel / The Build History panel
    • project overview (central panel) / The project overview – central panel
  • Promoted build plugin
    • configuring / The Promoted build plugin
  • pull request builder plugin
    • URL / Source control via Git–requires the Git plugin

Q

  • quality assurance
    • initiatives / Quality assurance initiatives and test automation terminology

R

  • rapid feedback loops
    • about / Rapid feedback loops
  • regression tests
    • about / Quality assurance initiatives and test automation terminology
  • regular expression
    • jobs, filtering / Filtering jobs by regular expression
  • rspec gem
    • about / Writing tests and integrating them into Jenkins
    • URL / Writing tests and integrating them into Jenkins
  • RSpec JUnit formatter
    • about / Writing tests and integrating them into Jenkins
    • URL / Writing tests and integrating them into Jenkins
  • RSS feeds
    • about / RSS feeds
  • rsync
    • used, for setting up Jenkins mirror / Setting up a Jenkins mirror – rsync

S

  • SCM polling
    • about / SCM polling
    • configuring / SCM polling
  • Selenium
    • URL / Spinning up a Selenium Grid
  • Selenium Grid
    • Jenkins, integrating / Jenkins and Selenium Grid
    • spinning up / Spinning up a Selenium Grid
    • tests, writing / Writing tests and integrating them into Jenkins
    • integrating, into Jenkins / Writing tests and integrating them into Jenkins
  • Selenium grid
    • about / The Selenium Grid
    • URL / The Selenium Grid
  • Selenium WebDriver gem
    • URL / Writing tests and integrating them into Jenkins
  • Single Point of Failure (SPOF)
    • about / Disaster recovery in Jenkins
  • slave
    • configuration options / Creating slave nodes in the UI
  • slave.jar file
    • URL / Headless slave agents via the command line
  • slave node
    • launching / Choosing a launch method
    • launching, via Java Web Start (JavaWS) framework / Slave agent via Java Web Start
    • launching, via DCOM Windows Service / Slave agents on Windows via WMI and DCOM
    • launching, via SSH tunneling / Slave agents via SSH tunneling
    • load balancing / Labels, groups, and load balancing
    • grouping / Labels, groups, and load balancing, Attaching a slave to many groups
    • labeling / Labels, groups, and load balancing, Attaching a slave to a group by creating a label
    • usage, restricting / Restricting slave execution to global or tied jobs
  • slaves
    • administering / Administering Jenkins slaves
    • node administration dashboard / The node administration dashboard
    • preventative monitoring / Preventative monitoring
    • individual slave node, managing / Managing individual slave nodes
  • smoke / BVT (Build Verification) tests
    • about / Quality assurance initiatives and test automation terminology
  • snapshot backups
    • about / Jenkins snapshot backups
  • Software Development Lifecycle (SDLC)
    • about / The Software Development Lifecycle
  • source code management, freestyle project
    • about / Source code management
    • via SVN / Source control via SVN
    • via Git / Source control via Git–requires the Git plugin
  • SSH tunneling
    • slave node, launching / Slave agents via SSH tunneling
  • SVN
    • for source control / Source control via SVN
    • URL, for repository / Source control via SVN
    • advanced options / Advanced SVN options
  • SVN post-commit hooks
    • Jenkins job, running / Running a Jenkins job via the SVN post-commit hooks
    • URL / Running a Jenkins job via the SVN post-commit hooks

T

  • TeamCity
    • about / What Continuous Integration is not
  • Test Driven Development (TDD)
    • about / Connecting product codes to tests
  • troubleshooting, DCOM errors
    • access denied / Error – access denied, Workaround 1, Workaround 2
    • reference link / Workaround 1, Workaround
    • no more data available / Error – no more data available, Workaround

U

  • Ubuntu
    • URL / Integrating Jenkins with Ansible – Linux and Windows
  • unit tests
    • about / Quality assurance initiatives and test automation terminology
    • performing, through MSTest / Unit tests in Jenkins through MSTest
  • upstream jobs
    • triggering / Upstream jobs – triggered
  • user interface
    • about / The Jenkins user interface
    • main header / The main header
    • configuration panel / The configuration panel
    • job table / The job table
    • RSS feeds / RSS feeds
    • build queue panel / The Jenkins build queue and executor status panel
    • executor status panel / The Jenkins build queue and executor status panel

V

  • views
    • creating / Creating views
    • jobs, filtering by regular expression / Filtering jobs by regular expression
    • managing / Managing Views in Jenkins
    • default view, altering / Altering the default "View"
    • basic content, customizing / Customizing the basic content of a View
    • advanced customization, of content / Advanced customization of a "Views" content

W

  • white box tests
    • about / Quality assurance initiatives and test automation terminology
  • WMI
    • about / Slave agents on Windows via WMI and DCOM
lock icon The rest of the chapter is locked
arrow left Previous Chapter
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime}