Actions
Demande #5811
ferméMettre à jour Gitea/forge.chapril.org en 1.16.3
Statut:
Rejeté
Priorité:
Normale
Assigné à:
Version cible:
Début:
05/03/2022
Echéance:
% réalisé:
0%
Temps estimé:
0:30 h
Description
Une nouvelle version est disponible: https://github.com/go-gitea/gitea/releases/tag/v1.16.3.
Le changelog de cette version contient un item SECURITY
(la version précédente en contient également un qui n'a pas été backporté en v1.15.X.)
Actions
#1
Mis à jour par Pierre-Louis Bonicoli il y a plus de 2 ans
- Copié depuis Demande #5795: Mettre à jour Gitea/forge.chapril.org en 1.16.2 ajouté
Actions
#3
Mis à jour par Pierre-Louis Bonicoli il y a plus de 2 ans
Procédure de test permettant de valider le bon fonctionnement de la mise à jour¶
Notes:
- Toutes les commandes sont exécutées sur la machine
groff
. - la commande
su - gitea "/srv/gitea/bin/gitea migrate-storage"
pourrait être utilisée à la suite de la commandemigrate
mais en cas d'erreur il serait nécessaire de restaurer les données modifiées depuis la sauvegarde au formatzip
.
Préparer l'environnement de test¶
VERSION="
" /srv/forge.chapril.org/tools/upgrade.sh stop backup@ # couper le service gitea et faire une sauvegardeunzip /srv/gitea/bin/gitea-dump-XXXX.zip gitea-db.sql -d /var/tmp/
# extraire le dump de la base du backupsu - postgres "pg_dump -U postgres -O giteadb -f /var/tmp/gitea-db.sql"
# créer un dump de la base giteadb (alternative à la commande précédente)
- chown postgres /var/tmp/gitea-db.sql # Autoriser l'utilisateur postgres à accéder au fichier
- chmod g+r /var/tmp/gitea-db.sql
su - postgres -c "psql -c 'alter database giteadb set default_transaction_read_only=on;'"
# interdire les modifications en écriture sur la base giteadbsu - postgres -c "createdb --owner giteadbadmin testmigration"
# créer une pase de données de testsu - postgres -c "psql -d testmigration -f /var/tmp/gitea-db.sql -W -h127.0.0.1 giteadbadmin"
# importer la baseecho "local testmigration giteadbadmin scram-sha-256" >> /etc/postgresql/13/main/pg_hba.conf
# Autoriser l'utilisateur giteadbadmin à accéder à la base de testsystemctl restart postgresql.service
# prendre en compte la modificationsed -i 's/\<giteadb$/testmigration/' /etc/gitea/gitea.ini
# indiquer à gitea d'utiliser la base de test- Pour empêcher que des utilisateurs n'utilisent l'environnement de test: ajouter la configuration suivante à l'intérieur de la balise
VirtualHost
/etc/apache2/sites-enabled/forge.chapril.org.conf
:
<Proxy *> Require ip XXXX # ip publique de la personne réalisant le test de migration </Proxy>
- systemctl restart apache2 # prendre en compte les modifications
- Tester qu'une autre IP publique ne peut pas accéder au service https://forge.chapril.org
Tester la nouvelle version¶
VERSION="X.Y.Z" /srv/forge.chapril.org/tools/upgrade.sh download
su - gitea -c "/srv/gitea/bin/gitea-1.16.3-linux-amd64 --config /etc/gitea/gitea.ini migrate"
# migrer la base de données, vérifier que la commande ne rencontre pas d'erreurVERSION="X.Y.Z" /srv/forge.chapril.org/tools/upgrade.sh upgrade
VERSION="X.Y.Z" /srv/forge.chapril.org/tools/upgrade.sh start
# démarrer le service web- Tester les problèmes connus
Revenir à l'environnement de prod¶
su - postgres -c "psql -c 'alter database giteadb set default_transaction_read_only=off;'"
# autoriser à nouveau les modifications en écriture sur la base giteadbsystemctl stop gitea apache2 postgresql
sed -i 's/\<testmigration$/giteadb/' /etc/gitea/gitea.ini
# indiquer à gitea d'utiliser la base de test- Supprimer la dernière ligne du fichier
/etc/postgresql/13/main/pg_hba.conf
- Supprimer les directives ajoutées au fichier
/etc/apache2/sites-enabled/forge.chapril.org.conf
git -C /etc status
# Vérifier qu'il n'y a pas de modifications inattendues- ln --force /srv/gitea/bin/gitea-X.Y.Z-linux-amd64 /srv/gitea/bin/gitea # X.Y.Z correspond à la version de prod
systemctl start postgresql apache2 gitea
En fonction des résultats des tests, réaliser ou non la migration en suivant la procédure habituelle¶
Actions
#4
Mis à jour par Pierre-Louis Bonicoli il y a plus de 2 ans
- Statut changé de Nouveau à En cours de traitement
Actions
#5
Mis à jour par Pierre-Louis Bonicoli il y a plus de 2 ans
- Statut changé de En cours de traitement à Rejeté
Résultat des tests:
- lors de l'authentification avec une clef de sécurité le message apparaît:
The key: 'securitykey' authenticates using the deprecated U2F process. You should re-register this key and remove the old registration.
- j'ai alors testé la suppression puis l'ajout de ma clef 2FA, le message d'erreur suivant apparaît:
2022/03/06 04:49:08 ...els/auth/webauthn.go:138:getWebAuthnCredentialByName() [I] [SQL] SELECT "id", "name", "lower_name", "user_id", "credential_id", "public_key", "attestation_type", "aaguid", "sign_count", "clone_warning", "created_unix", "updated_unix" FROM "webauthn_credential" WHERE (user_id = $1 AND lower_name = $2) LIMIT 1 [312 solokey translucid] - 1.934689ms 2022/03/06 04:49:08 models/db/context.go:127:Insert() [I] [SQL] INSERT INTO "webauthn_credential" ("name","lower_name","user_id","credential_id","public_key","attestation_type","aaguid","sign_count","clone_warning","created_unix","updated_unix") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) RETURNING "id" [solokey translucid solokey translucid 312 [...] fido-u2f [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 false 1646538548 1646538548] - 1.940643ms 2022/03/06 04:49:08 ...security/webauthn.go:103:WebauthnRegisterPost() [E] CreateCredential: pq: la valeur d'une clé dupliquée rompt la contrainte unique « webauthn_credential_pkey »
La mise à jour a été annulée, la version 1.15.11 reste utilisée. Ce problème a été reporté upstream.
Actions
#6
Mis à jour par Pierre-Louis Bonicoli il y a plus de 2 ans
- Copié vers Demande #5823: Mettre à jour Gitea/forge.chapril.org en 1.16.4 ajouté
Actions
#8
Mis à jour par Pierre-Louis Bonicoli il y a plus d'un an
- Version cible changé de Backlog à Sprint 2022 mars
Actions