Compare commits
3 Commits
075b635446
...
4165053fd1
Author | SHA1 | Date | |
---|---|---|---|
4165053fd1 | |||
5ba155d4f8 | |||
ac3ecece99 |
@ -1,6 +1,11 @@
|
|||||||
branches:
|
branches:
|
||||||
exclude:
|
exclude:
|
||||||
- renovate/*
|
- renovate/*
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
- cron
|
||||||
|
- push
|
||||||
|
- tag
|
||||||
|
|
||||||
clone:
|
clone:
|
||||||
git:
|
git:
|
||||||
|
@ -20,7 +20,7 @@ During my studies, I was *root* of the [*assistants'*](https://assistants.epita.
|
|||||||
|
|
||||||
{{<icon "fa fa-terminal about-icon">}}
|
{{<icon "fa fa-terminal about-icon">}}
|
||||||
With my rich creativity, I'm always working on a lot of amazing projects.
|
With my rich creativity, I'm always working on a lot of amazing projects.
|
||||||
I spend most of my free time to improve system support, document and **promote ARM-based computer**, whether server or desktop.
|
I spend most of my free time to improve system support, document and **promote ARM-based computer** (and now RISC-V), whether embedded, server or desktop.
|
||||||
{{<br>}}
|
{{<br>}}
|
||||||
Check out my [gitea instance](https://git.nemunai.re) or my [GitHub account](https://github.com/nemunaire).
|
Check out my [gitea instance](https://git.nemunai.re) or my [GitHub account](https://github.com/nemunaire).
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ Each *Service* is declared within a package (*pkg*), then *Functions* complete t
|
|||||||
All calls are `POSTs`.
|
All calls are `POSTs`.
|
||||||
|
|
||||||
So we need to extract the various HTTP routes used by each protobuf service.
|
So we need to extract the various HTTP routes used by each protobuf service.
|
||||||
Let's take a look at the following file for Wookpecker :
|
Let's take a look at the following file for Woodpecker:
|
||||||
|
|
||||||
<https://github.com/woodpecker-ci/woodpecker/blob/main/pipeline/rpc/proto/woodpecker.proto>
|
<https://github.com/woodpecker-ci/woodpecker/blob/main/pipeline/rpc/proto/woodpecker.proto>
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ For example:
|
|||||||
|
|
||||||
## `nginx` configuration
|
## `nginx` configuration
|
||||||
|
|
||||||
So here's what our `nginx` configuration might look like, using a single :
|
So here's what our `nginx` configuration might look like, using a single domain:
|
||||||
|
|
||||||
```
|
```
|
||||||
server {
|
server {
|
||||||
|
@ -10,10 +10,10 @@ aliases:
|
|||||||
- about
|
- about
|
||||||
---
|
---
|
||||||
|
|
||||||
Bonjour ! ici `nemunaire`, alias Pierre-Olivier ; je suis ingénieur (et passionné par [le fonctionnement des choses](https://fr.wikipedia.org/wiki/Wikipédia)), enseignant (et pionnier de la [gamification](https://fr.wikipedia.org/wiki/Ludification) de mes cours), cuisinier (et partisan de [limiter l'empreinte écologique dans nos habitudes alimentaires](https://fr.wikipedia.org/wiki/V%C3%A9g%C3%A9tarisme)) et je lutte aussi contre l'emprise des [GAFAM](https://fr.wikipedia.org/wiki/GAFAM) sur notre temps. D'ailleurs j’adhère de manière générale au [stoïcisme](https://fr.wikipedia.org/wiki/Sto%C3%AFcisme). J'adore la typographie, les challenges, le chocolat (ou la vanille ?? le choix est trop difficile) et tant d'autres choses !
|
Bonjour ! ici `nemunaire`, alias Pierre-Olivier ; je suis ingénieur (et passionné par [le fonctionnement des choses](https://fr.wikipedia.org/wiki/Wikipédia)), enseignant (et pionnier de la [gamification](https://fr.wikipedia.org/wiki/Ludification) de mes cours, [voici un exemple]({{< relref "post/gamification-of-a-advanced-linux-sysadmin-course/_index.md" >}})), cuisinier (et partisan de [limiter l'empreinte écologique dans nos habitudes alimentaires](https://fr.wikipedia.org/wiki/V%C3%A9g%C3%A9tarisme)) et je lutte aussi contre l'emprise des [GAFAM](https://fr.wikipedia.org/wiki/GAFAM) sur notre temps. D'ailleurs j’adhère de manière générale au [stoïcisme](https://fr.wikipedia.org/wiki/Sto%C3%AFcisme). J'adore la typographie, les challenges, le chocolat (ou la vanille ?? le choix est trop difficile) et tant d'autres choses !
|
||||||
|
|
||||||
{{<icon "fa fa-briefcase about-icon">}}
|
{{<icon "fa fa-briefcase about-icon">}}
|
||||||
Aujourd'hui **entrepreneur**. J'ai travaillé avant comme **devops** pour [Novaquark](http://novaquark.com), avant d'être **ingénieur système/logiciel embarqué** chez [Qarnot computing](https://qarnot.com/), puis **responsable de la sécurité des systèmes d'information** and **architecte logiciel sénior** chez [Qarnot computing](https://qarnot.com/).
|
Aujourd'hui **entrepreneur**. J'ai travaillé avant comme **devops** pour [Novaquark](http://novaquark.com), avant d'être **ingénieur système/logiciel embarqué** chez [Qarnot computing](https://qarnot.com/), puis **responsable de la sécurité des systèmes d'information** et **architecte logiciel sénior** chez [Qarnot computing](https://qarnot.com/).
|
||||||
|
|
||||||
{{<icon "fa fa-graduation-cap about-icon">}}
|
{{<icon "fa fa-graduation-cap about-icon">}}
|
||||||
Après 5 ans d'études à l'[Epita](http://epita.fr/), j'ai, en 2014, obtenu mon diplôme d'ingénieur ! J'ai suivi les enseignements de la majeure [***Systèmes, Réseaux et Sécurité***](https://srs.epita.fr/).
|
Après 5 ans d'études à l'[Epita](http://epita.fr/), j'ai, en 2014, obtenu mon diplôme d'ingénieur ! J'ai suivi les enseignements de la majeure [***Systèmes, Réseaux et Sécurité***](https://srs.epita.fr/).
|
||||||
|
@ -11,9 +11,9 @@ tags:
|
|||||||
J'ai installé le service d'intégration continue [Woodpecker](https://woodpecker-ci.org/), afin de remplacer [DroneCI](https://drone.io), que [l'entreprise l'ayant racheté a décidé de l'enterrer](https://github.com/harness/gitness#where-is-drone).
|
J'ai installé le service d'intégration continue [Woodpecker](https://woodpecker-ci.org/), afin de remplacer [DroneCI](https://drone.io), que [l'entreprise l'ayant racheté a décidé de l'enterrer](https://github.com/harness/gitness#where-is-drone).
|
||||||
Woodpecker étant un fork de la dernière version libre de Drone, son utilisation est globalement semblable.
|
Woodpecker étant un fork de la dernière version libre de Drone, son utilisation est globalement semblable.
|
||||||
|
|
||||||
Néanmoins, les équipes ont suivies des orientations différentes sur certains aspects, et la communication avec les agents/*runners*, qui se faisaient avant au moyen de websockets, est réalisée dans Woodpecker au moyen du protocole GRPC.
|
Néanmoins, les équipes ont suivi des orientations différentes sur certains aspects, et la communication avec les agents/*runners*, qui se faisaient avant au moyen de websockets, est réalisée dans Woodpecker au moyen du protocole GRPC.
|
||||||
|
|
||||||
La solution proposée par la [documentation de Woodpecker](https://woodpecker-ci.org/docs/administration/proxy#caddy) est d'utiliser 2 domaines : un sera utilisé pour l'interface web et l'API REST, le second sera utilisé pour GRPC.
|
La solution proposée par la [documentation de Woodpecker](https://woodpecker-ci.org/docs/administration/proxy#caddy) est d'utiliser 2 domaines : un sera utilisé pour l'interface web et l'API REST, le second pour GRPC.
|
||||||
Est-ce vraiment nécessaire ?
|
Est-ce vraiment nécessaire ?
|
||||||
|
|
||||||
<!-- more -->
|
<!-- more -->
|
||||||
@ -90,7 +90,7 @@ Chaque *Service* est déclaré au sein d'un paquetage (*pkg*), des *Fonctions* c
|
|||||||
Tous les appels sont des `POST`.
|
Tous les appels sont des `POST`.
|
||||||
|
|
||||||
Il convient donc d'extraire les différentes routes HTTP utilisées par chaque service protobuf.
|
Il convient donc d'extraire les différentes routes HTTP utilisées par chaque service protobuf.
|
||||||
Voyons le fichier suivant pour Wookpecker :
|
Voyons le fichier suivant pour Woodpecker :
|
||||||
|
|
||||||
<https://github.com/woodpecker-ci/woodpecker/blob/main/pipeline/rpc/proto/woodpecker.proto>
|
<https://github.com/woodpecker-ci/woodpecker/blob/main/pipeline/rpc/proto/woodpecker.proto>
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ Par exemple :
|
|||||||
|
|
||||||
## Configuration `nginx`
|
## Configuration `nginx`
|
||||||
|
|
||||||
Voici donc à quoi pourrait ressemble notre configuration `nginx`, en utilisant un seul domaine :
|
Voici donc à quoi pourrait ressembler notre configuration `nginx`, en utilisant un seul domaine :
|
||||||
|
|
||||||
```
|
```
|
||||||
server {
|
server {
|
||||||
@ -179,7 +179,7 @@ Woodpecker déclare une fonction `Next` qui attend les informations d'un prochai
|
|||||||
Ce temps d'attente est généralement très variable, plutôt très long si votre CI n'est pas sollicitée en permanence.
|
Ce temps d'attente est généralement très variable, plutôt très long si votre CI n'est pas sollicitée en permanence.
|
||||||
|
|
||||||
`nginx` va prendre l'initiative, par défaut, d'arrêter toute requête inactive depuis plus de 60 secondes.
|
`nginx` va prendre l'initiative, par défaut, d'arrêter toute requête inactive depuis plus de 60 secondes.
|
||||||
Cela occasionne un grand nombre reconnexion pour l'agent Woodpecker, visible dans les journaux de l'agent :
|
Cela occasionne un grand nombre de reconnexions pour l'agent Woodpecker, visibles dans les journaux de l'agent :
|
||||||
|
|
||||||
{"level":"error","error":"rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 504 (Gateway Timeout); transport: received unexpected content-type \"text/html\"","time":"2023-10-27T11:28:51Z","message":"grpc error: wait(): code: Unavailable: rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 504 (Gateway Timeout); transport: received unexpected content-type \"text/html\""}
|
{"level":"error","error":"rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 504 (Gateway Timeout); transport: received unexpected content-type \"text/html\"","time":"2023-10-27T11:28:51Z","message":"grpc error: wait(): code: Unavailable: rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 504 (Gateway Timeout); transport: received unexpected content-type \"text/html\""}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user