<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pierre Smeyers</title>
    <description>The latest articles on DEV Community by Pierre Smeyers (@pismy).</description>
    <link>https://dev.to/pismy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F642165%2F235779cb-b5ef-422b-93ca-eb5517444983.jpg</url>
      <title>DEV Community: Pierre Smeyers</title>
      <link>https://dev.to/pismy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pismy"/>
    <language>en</language>
    <item>
      <title>Is CI/CD stuck on the evolution ladder?</title>
      <dc:creator>Pierre Smeyers</dc:creator>
      <pubDate>Tue, 31 Jan 2023 19:59:37 +0000</pubDate>
      <link>https://dev.to/pismy/is-cicd-stuck-on-the-evolution-ladder-1j9g</link>
      <guid>https://dev.to/pismy/is-cicd-stuck-on-the-evolution-ladder-1j9g</guid>
      <description>&lt;h2&gt;
  
  
  The Theory of Evolution applied to computer science...
&lt;/h2&gt;

&lt;p&gt;Throughout my career as a developer, I have seen many complex areas of computer science gain in maturity, formalize more and more structured notions, allowing us to manage things with a higher semantic level, freeing us from &lt;em&gt;low-level details&lt;/em&gt;, allowing us to focus on more value-added tasks and ultimately becoming a mere commodity.&lt;/p&gt;

&lt;p&gt;Think of Maven, which first standardized the life cycle of a Java project (sources layout, dependencies management, build, tests, release, ...).&lt;br&gt;
Before that we had ANT or Makefile. The main purpose of these tools was to build the &lt;code&gt;javac&lt;/code&gt; command line to build the Java project. They offered a very low level of abstraction.&lt;br&gt;
Even though the underlying Maven and Gradle implementation still produces a possibly complex &lt;code&gt;javac&lt;/code&gt; command, you don't have to worry about it anymore. The Java build is no longer a topic today.&lt;/p&gt;

&lt;p&gt;The Infra-as-Code tools have also followed the same evolution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in the beginning, infrastructure provisioning was done with handwritten shell scripts,&lt;/li&gt;
&lt;li&gt;then came semi-imperative languages such as Chef or Ansible,&lt;/li&gt;
&lt;li&gt;we now have a huge range of IaC tools, where you simply describe the infrastructure you want, and the tool takes care of applying it (iteratively) to your live environments to match what you have specified (Terraform, CloudFormation, Kubernetes, Helm ...).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We could hardly implement Gitops without these latest generation tools.&lt;/p&gt;

&lt;p&gt;Front-end development also followed the same path...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There was a time before jQuery (and yes, I was there :)). Back then, you had to manage the DOM manually, struggle with browser-specific APIs and implementations, and deal with under-tooled JavaScript code.&lt;/li&gt;
&lt;li&gt;Then jQuery appeared, which brought a first level of simplification. It gracefully abstracted some browser specificities, introduced a more efficient way of handling the DOM, but still needed to be handled, and jQuery offered no framework&lt;/li&gt;
&lt;li&gt;Today with Angular, React, Vue.JS and others, you have more mature frameworks, which offer a very high level of semantics to develop your web applications. You hardly see the underlying mechanisms for interacting with browser APIs...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;So why on earth isn't this (yet) the case with CI/CD tools?&lt;br&gt;
Why are we stuck with tools that still expect us to write low-level commands to build/test/deploy our code?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# run npm lint&lt;/span&gt;
npm ci
npm run lint

&lt;span class="c"&gt;# run Python unit tests with JUnit output report&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; .[tests]
python &lt;span class="nt"&gt;-m&lt;/span&gt; pytest &lt;span class="nt"&gt;--junit-xml&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;junit.xml tests/

&lt;span class="c"&gt;# Terraform plan &amp;amp; apply&lt;/span&gt;
terraform init &lt;span class="nt"&gt;-backend-config&lt;/span&gt; prod.tfbackend
terraform plan &lt;span class="nt"&gt;-var-files&lt;/span&gt; prod.tfvars &lt;span class="nt"&gt;-out&lt;/span&gt; prod.tfplan
terraform apply prod.tfplan

&lt;span class="c"&gt;# deploy my prod env with kubectl&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; prod.k8s.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Over and over again… why?&lt;/p&gt;

&lt;h2&gt;
  
  
  What would it look like?
&lt;/h2&gt;

&lt;p&gt;What would it look like, that new-generation CI/CD tool I have in mind?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm0ab6ykntf0is28e01z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm0ab6ykntf0is28e01z.png" alt="A girl asking a robot " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, first of all, I wish I could say: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“““&lt;br&gt;
Dear CI/CD tool,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Here's my Git repository,&lt;/li&gt;
&lt;li&gt;it contains Angular (frontend) and Python code (backend),&lt;/li&gt;
&lt;li&gt;I wish to containerize the Python code with Docker (or even better with Cloud Native Buildpacks),&lt;/li&gt;
&lt;li&gt;I'd like to provision my Kubernetes cluster with Terraform,&lt;/li&gt;
&lt;li&gt;I planned to deploy my frontend to AWS (S3 + CloudFront),&lt;/li&gt;
&lt;li&gt;I planned to deploy my backend to my Kubernetes cluster,&lt;/li&gt;
&lt;li&gt;I run frontend acceptance tests with Cypress,&lt;/li&gt;
&lt;li&gt;I test my APIs with Postman/newman,&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So please, do the necessary to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build and test my code,&lt;/li&gt;
&lt;li&gt;analyze my code and scripts (please select the most appropriate tools, I'm no DevSecOps expert),&lt;/li&gt;
&lt;li&gt;package my code,&lt;/li&gt;
&lt;li&gt;provision my environments,&lt;/li&gt;
&lt;li&gt;deploy my code to my environments,&lt;/li&gt;
&lt;li&gt;run my acceptance tests&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;li&gt;oh! by the way, I want to work according to a basic &lt;em&gt;feature/branch&lt;/em&gt; workflow
”””&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead I still have to write those dumb &lt;code&gt;npm ci&lt;/code&gt;, &lt;code&gt;python -m pytest&lt;/code&gt; and &lt;code&gt;terraform init&lt;/code&gt; commands...&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should we not be satisfied with current tools?
&lt;/h2&gt;

&lt;p&gt;There are lots of topics that current CI/CD tools have no opinion on (and therefore don't offer any solutions):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The different Git workflows.&lt;/li&gt;
&lt;li&gt;What is the difference between a pipeline triggered by a commit on a feature branch and a commit on the master branch?&lt;/li&gt;
&lt;li&gt;What is the semantic meaning of a Git tag? Is it legitimate to trigger a server deployment on a Git tag?&lt;/li&gt;
&lt;li&gt;What mapping is recommended between my environments and my Git branches?&lt;/li&gt;
&lt;li&gt;Is there a preferable/more efficient order to sequence its build, unit test, analysis, packaging, deployment, acceptance testing, publish tasks?&lt;/li&gt;
&lt;li&gt;How do you balance the need to shorten the developer's feedback loop with the need to ensure code quality and security?&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The consequences of this lack of opinion are manifold.&lt;br&gt;
At the level of the practitioner first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each of the subjects mentioned above is a real subject, which can be implemented correctly or very badly. A bad Git workflow, for example, can have a disastrous impact on a team's productivity. Not trying to provide a solution in the tool and letting each DevOps engineer manage it is the guarantee of very disparate and often questionable implementations from one project to another.&lt;/li&gt;
&lt;li&gt;How long does it take to become a good DevOps engineer? Example: the day when a practitioner understands why to use &lt;code&gt;npm ci&lt;/code&gt; rather than &lt;code&gt;npm install&lt;/code&gt; (or why to commit the &lt;code&gt;poetry.lock&lt;/code&gt; file) is an epiphany. But why should each practitioner make this discovery by himself? Why isn't this intelligence coded once and for all in the tool, for everyone (even beginners)?&lt;/li&gt;
&lt;li&gt;And even an excellent DevOps engineer wastes a lot of time in each new project redoing the same thing over and over again. Are there enough different ways of building a Java project, running pytest tests, building a Docker image, deploying a static website in an S3 bucket that we can't put it all in common ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there is also a major consequence at the level of our entire profession: it is the absolute lack of standardization. Each project has its own CI/CD implementation. And even 2 projects relying on the same CI/CD tool can have very different pipelines.&lt;/p&gt;

&lt;p&gt;I believe that the time has come for CI/CD tools to raise the semantic level of the notions they handle, to have an opinion on these questions, and to bring at least proposals (if not solutions).&lt;/p&gt;

&lt;h2&gt;
  
  
  A first attempt...
&lt;/h2&gt;

&lt;p&gt;If you're using GitLab and GitLab CI/CD, &lt;a href="https://to-be-continuous.gitlab.io/doc/" rel="noopener noreferrer"&gt;to-be-continuous&lt;/a&gt; could help. It's an open source project providing DevOps, ready-to-use, composable, configurable and overridable templates that modestly tries to tackle those questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://to-be-continuous.gitlab.io/doc/understand/#supported-git-workflows" rel="noopener noreferrer"&gt;Git workflows&lt;/a&gt;: &lt;code&gt;to-be-continuous&lt;/code&gt; supports main-branch based workflows and variants (feature-branch, Gitflow)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://to-be-continuous.gitlab.io/doc/understand/#generic-pipeline-stages" rel="noopener noreferrer"&gt;generic pipeline stages&lt;/a&gt;: attempt to standardize and optimize the ordering of CI/CD tasks&lt;/li&gt;
&lt;li&gt;DevSecOps promotion &amp;amp; prescription: each &lt;code&gt;to-be-continuous&lt;/code&gt; template comes with the major (open source) DevSecOps tools related with the technology&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://to-be-continuous.gitlab.io/doc/understand/#adaptive-pipeline" rel="noopener noreferrer"&gt;optimized development cycle&lt;/a&gt;: how to shorten the developer's feedback loop and ensure code quality and security at the same time&lt;/li&gt;
&lt;li&gt;and of course no more low-level code writing ;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Get started with &lt;code&gt;to-be-continuous&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;A few take-away links to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://to-be-continuous.gitlab.io/doc/ref/" rel="noopener noreferrer"&gt;available templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://to-be-continuous.gitlab.io/doc/understand/" rel="noopener noreferrer"&gt;understand&lt;/a&gt; key notions and concepts (possibly applies to any CI/CD tool)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://to-be-continuous.gitlab.io/kicker" rel="noopener noreferrer"&gt;kicker&lt;/a&gt;: an interactive online configurer for your project pipeline&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gitlab.com/to-be-continuous/samples" rel="noopener noreferrer"&gt;project samples&lt;/a&gt;: code projects using and combining &lt;code&gt;to-be-continuous&lt;/code&gt; templates into production-like examples&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devrel</category>
      <category>simulationgames</category>
      <category>devops</category>
      <category>networking</category>
    </item>
    <item>
      <title>"to be continuous": opinionated GitLab CI</title>
      <dc:creator>Pierre Smeyers</dc:creator>
      <pubDate>Wed, 02 Jun 2021 13:07:21 +0000</pubDate>
      <link>https://dev.to/pismy/to-be-continuous-opinionated-gitlab-ci-1fi2</link>
      <guid>https://dev.to/pismy/to-be-continuous-opinionated-gitlab-ci-1fi2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://www.orange.com/"&gt;Orange&lt;/a&gt;, we have been using GitLab for several years (since late 2015).&lt;br&gt;
By the way we have several self-managed GitLab servers. Some in Community Edition, others in Enterprise Edition, but the overwhelming majority of developers at Orange manage their code in a GitLab.&lt;/p&gt;

&lt;p&gt;GitLab is a fantastic tool, promoting a very modern and ambitious vision of development (collaboration, Merge Requests, DevOps, continuous integration …).&lt;br&gt;
The monthly releases of GitLab are each time a gift that we cannot wait to unwrap to discover the many new toys that the fox firm has prepared for us.&lt;/p&gt;

&lt;p&gt;At Orange, for CI/CD too, we've smoothly moved from Jenkins to GitLab CI.&lt;br&gt;
For my part, I started using GitLab CI in 2017 and I was immediately struck by the simplicity and versatility of its architecture (1 job = 1 container, no API to implement, no nightmare upgrading the product and its plugins, decoupling of runners, …). I immediately adopted it and never came back to Jenkins again.&lt;br&gt;
As a result, after 2 years of practice I had acquired some &lt;em&gt;savoir-faire&lt;/em&gt;, and I was able to start sharing my expertise and some pieces of GitLab CI code.&lt;/p&gt;

&lt;p&gt;Then in January 2019, the &lt;a href="https://docs.gitlab.com/ee/ci/yaml/README.html#include"&gt;include feature&lt;/a&gt; was released in the Community Edition (version &lt;a href="https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/changelogs/archive-11.md#added-29-changes-6-%20of-them-are-from-the-community"&gt;11.7.0&lt;/a&gt;). It was truly an epiphany.&lt;br&gt;
We could now go much further than just sharing &lt;em&gt;pieces of code&lt;/em&gt; between colleagues: we could &lt;strong&gt;share ready to use templates&lt;/strong&gt;…&lt;/p&gt;

&lt;p&gt;At that time, I had just got a position of Developer Advocate at Orange, and supporting Orange developers by providing state-of-the-art GitLab CI templates seemed to be perfectly inline with the job description.&lt;br&gt;
I was also an active member of the "Orange Experts: Software" community, it was only natural that I asked some of my fellow colleagues to work together on this topic.&lt;/p&gt;

&lt;p&gt;During 2 years, we developed templates, we polished them, we increased our GitLab CI expertise, we also progressed in our semantic representation of what a pipeline should be, the nature of the tasks, the profound differences between CI and CD, Git workflows, …&lt;/p&gt;

&lt;p&gt;From the very beginning we designed these templates as a honeypot. On the one hand, an argument to attract newbies who wanted to set up their continuous integration without spending hours on GitLab CI, natively implementing all the killer-features offered by GitLab, and on the other hand a way to accelerate/enforce the adoption of state-of-the-art tools and practices (DevSecOps tools, modern and consistent workflows, speed and frugality of CI pipelines, sureness and completeness of CD pipelines).&lt;/p&gt;

&lt;p&gt;In only 2 years, this personal initiative became a recognized inner source project, attracting more and more users and contributors, bringing the community to nearly 1000 members today (June 2021), and about 30 templates available.&lt;br&gt;
The visible effect of this increasing adoption is the beginning of a &lt;strong&gt;CI/CD standardization at Orange&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Orange  -  like many IT companies  -  is a heavy consumer of opensource, sharing in return what we do well is just obvious.&lt;br&gt;
The logical continuation of this story was going opensource, which happened in May 2021 under the name "to be continuous".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://to-be-continuous.gitlab.io/doc"&gt;https://to-be-continuous.gitlab.io/doc&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  To semantics and beyond …
&lt;/h2&gt;

&lt;p&gt;What does &lt;em&gt;to be continuous&lt;/em&gt; bring?&lt;/p&gt;

&lt;p&gt;I am a big fan of GitLab and GitLab CI. But one shall admit that building your DevOps pipeline from scratch requires a lot of skills and time if you want to take advantage of the many features.&lt;/p&gt;

&lt;p&gt;In addition, GitLab CI is a product that is constantly evolving, and each release brings a lot of new things. Integrating these new features over time can represent a significant recurring burden for projects.&lt;/p&gt;

&lt;p&gt;And finally, the most problematic point in my opinion is the lack of semantic framework provided by GitLab CI. GitLab CI is mainly a sophisticated scheduler, allowing to define technical tasks and their sequence, but GitLab CI cares little about the nature of these tasks, and does not give any clues as to the "right" way to build a DevOps pipeline. The consequence of this is a lack of standardization from one project to another, from one company to another. This is a criticism that can be formulated against the majority of CI/CD tools today.&lt;br&gt;
I am quite convinced that this will be the next big topic in the CI/CD products market.&lt;/p&gt;

&lt;p&gt;In fact, as a veteran Javaist (fancy phrase to admit that I'm not that young anymore), the current situation reminds me of what was the Java build in the pre-Maven era. Back then, we used non-structuring tools such as &lt;a href="https://en.wikipedia.org/wiki/Make_(software)"&gt;Make&lt;/a&gt; or &lt;a href="https://en.wikipedia.org/wiki/Apache_Ant"&gt;Apache Ant&lt;/a&gt;, each project built up its own build system, adopted its own conventions, its own code and resource files structure, … in short, it was a happy mess, everyone reinvented the wheel, and when joining another project, it was necessary to relearn &lt;em&gt;"how does the build work here?"&lt;/em&gt;.&lt;br&gt;
Then in 2004, Maven was released (and Gradle 3 years later). For a while there were heated debates between the proponents of standardization and the defenders of expertise and of "I can control how it works", but today it would not occur to anyone to build a Java project other than with Maven or Gradle. If I join a project developed in Java, I will immediately know how files are organized, how the project is built. To summarize: &lt;strong&gt;the Java build has become a non-topic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I think this is what must happen now in the field of CI/CD: tools shall offer a more &lt;strong&gt;opinionated&lt;/strong&gt; framework so that the CI/CD in turn becomes a non-topic .&lt;/p&gt;

&lt;p&gt;In short, this is what &lt;em&gt;to be continuous&lt;/em&gt; modestly aims: to lay the foundations for a standardization of the CI/CD through semantic modeling, integrating Git workflows, environment management, the nature of the tasks of a pipeline, the differences between CI and CD …&lt;/p&gt;

&lt;p&gt;Like Maven or Gradle, &lt;em&gt;to be continuous&lt;/em&gt; comes with conventions (default configuration), but remains open to customization nonetheless. Either by &lt;a href="https://to-be-continuous.gitlab.io/doc/usage/#configure-a-template"&gt;overloading configuration variables&lt;/a&gt;, or by &lt;a href="https://to-be-continuous.gitlab.io/doc/usage/#advanced-usage-override-yaml"&gt;overwriting YAML code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why opensourcing?
&lt;/h2&gt;

&lt;p&gt;GitLab is a widely used product; by many companies and developers (around 2/3 of the market share of on-premise CI/CD products).&lt;/p&gt;

&lt;p&gt;At Orange, we needed to develop these templates to start standardizing our CI/CD and systematizing the adoption of state-of-the-art tools and practices. We believe this is a general need.&lt;/p&gt;

&lt;p&gt;In addition, DevSecOps tools (static code analysis tools, acceptance testing tools, security tools, compliance tools, etc.) are constantly evolving. Integrating new tools and keeping up with developments requires time and expertise that we hope to find in the opensource community.&lt;/p&gt;

&lt;p&gt;Opensourcing &lt;em&gt;to be continuous&lt;/em&gt; is also the hope of creating a larger community, promoting our vision and sharing development efforts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is in "to be continuous"? How can I start?
&lt;/h2&gt;

&lt;p&gt;For now, &lt;em&gt;to be continuous&lt;/em&gt; has 26 templates of 6 kinds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build &amp;amp; Test&lt;/strong&gt;: Angular, Bash, Go, Gradle, Maven, MkDocs,  Node.js, PHP, Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Analysis&lt;/strong&gt;: Gitleaks, SonarQube
Packaging: Docker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt; (IaC): Terraform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy &amp;amp; Run&lt;/strong&gt;: Ansible, Cloud Foundry, Google Cloud, Helm, Kubernetes, OpenShift, S3 (Simple Storage Service)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance&lt;/strong&gt;: Cypress, Postman, Puppeteer, Robot Framework, SSL test&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Others&lt;/strong&gt;: semantic-release&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;To be continuous&lt;/em&gt; is thoroughly documented (&lt;a href="https://to-be-continuous.gitlab.io/doc/understand/"&gt;basic notions and philosophy&lt;/a&gt;, &lt;a href="https://to-be-continuous.gitlab.io/doc/usage/"&gt;general usage principles&lt;/a&gt;, every template also has &lt;a href="https://to-be-continuous.gitlab.io/doc/ref/angular/"&gt;its own documentation&lt;/a&gt;, how to use to be continuous &lt;a href="https://to-be-continuous.gitlab.io/doc/self-managed/basic/"&gt;in a self-managed GitLab&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To get started quickly, &lt;em&gt;to be continuous&lt;/em&gt; provides an &lt;a href="https://to-be-continuous.gitlab.io/kicker/"&gt;interactive configurer&lt;/a&gt; (a.k.a "kicker") that allows generating the &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; file simply by selecting the technical characteristics of your project.&lt;/p&gt;

&lt;p&gt;Finally, &lt;em&gt;to be continuous&lt;/em&gt; exposes several &lt;a href="https://gitlab.com/to-be-continuous/samples"&gt;example projects&lt;/a&gt;, illustrating how to use the templates in production-like projects, combining multiple templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;There is still lot to be done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;to mature existing but still incomplete templates,&lt;/li&gt;
&lt;li&gt;manage uncovered deployment technologies (AWS, Azure, Heroku, …)&lt;/li&gt;
&lt;li&gt;integrate new DevSecOps tools (e.g. dependabot)&lt;/li&gt;
&lt;li&gt;support new languages ​​(eg Rust)&lt;/li&gt;
&lt;li&gt;acceptance tests (eg k6, DAST tools, …)&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users and contributors: we're waiting for you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://to-be-continuous.gitlab.io/doc"&gt;https://to-be-continuous.gitlab.io/doc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gitlabci</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
