Ğcli version 0.5.0 - gtest runtime, subxt upgrade, postgraphile squid api

j’aimerais publier ce message, mais l’étape de release ne veut pas se déclencher, je comprends pas pourquoi, ça me saoule, j’aime pas la CI gitlab (et je reconnais que je mets de la mauvaise volonté) https://git.duniter.org/clients/rust/gcli-v2s/-/pipelines/43220


La version 0.5.0 de gcli permet de se connecter à la gtest dans son état actuel avec le nouveau runtime, l’utilisation de la runtime api pour la récupération du solde (donc inclut les DU non réclamés), met à jour subxt, et ajoute la compatibilité avec squid 0.5.0 (postgraphile) (et casse squid <0.5.0 hasura). Le build macos est désactivé en attendant que quelqu’un le répare.

  1. installer depuis la page de release (et non, allez directement chercher le .deb là : https://git.duniter.org/clients/rust/gcli-v2s/-/jobs/157748/artifacts/browse/target/debian/)
  2. adapter son fichier de configuration pour les endpoints gtest (par ex gcli -n gtest config save)
  3. définir par défaut sa clé qui a des ĞT (gcli vault use -v <nom>)

Tout n’est pas testé, loin de là, donc si des choses sont cassées, faites de retours !

2 Likes

Avec le bon prefix ss58?

mais là tu as juste le job MacOS qui plante, tu peux le désactiver pour le moment?

cc @Nicolas80 je te vois bosser dessus en même temps que moi, je tente juste un truc sur une branche alternative.
Faut pousser un tag pour trigger ta CI, on peut supprimer le tag après.

@poka Hehe, je viens de voir que tu tente de corriger le build macos aussi :smiley:
J’avoue que je connais pas trop, mais a priori, vu l’erreur que l’on avait eue dans la pipeline “_SecTrustEvaluateWithError” il semblerait que l’on doive sans doute utiliser macos 10.14 ou plus (au lieu de 10.12)…

Les changements que j’ai fais sont avec l’IA; mais effectivement, on peut tester un build - j’ai fais une version spécifique pour - 0.5.0-macosfix-RC1

D’ailleurs, c’est pas très clair, mais le Dockerfile.ci qui est dans le repo, c’est bien celui qui te sert à créer l’image poka/rust-osxcross:latest ?

Oui c’est ça, il faut probablement upgrade MacOS dans cette image.

Changement fait dans la branche macos_ci_fix_trial_0.5.0 si tu veux regarder.

Je viens d’ajouter un tag, on va voir ce que cela donne.

Si tu as mieux ou plus clean (tu connais probablement bien mieux que moi gitlab CI), on peut juste supprimer ma branche :slight_smile:

Pour le moment, l’image est avec mon user Docker; si ça fonctionne, il faudrait la refaire au propre j’imagine ?
Je suppose que cela devrais être possible de la faire générer par gitlab ci et avec des credentials docker de notre gitlab (s’il en a ?)

Ca viens de planter au build_macos :-/

error[E0463]: can't find crate for `core`
  |
  = note: the `x86_64-apple-darwin` target may not be installed
  = help: consider downloading the target with `rustup target add x86_64-apple-darwin`
For more information about this error, try `rustc --explain E0463`.
error: could not compile `cfg-if` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
error: could not compile `bytes` (lib) due to 1 previous error
error: could not compile `const-oid` (lib) due to 1 previous error
error: could not compile `subtle` (lib) due to 1 previous error
error: could not compile `smallvec` (lib) due to 1 previous error
error[E0463]: can't find crate for `std`
  |
  = note: the `x86_64-apple-darwin` target may not be installed
  = help: consider downloading the target with `rustup target add x86_64-apple-darwin`
error: could not compile `log` (lib) due to 1 previous error
error: could not compile `pin-project-lite` (lib) due to 1 previous error
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: exit code 1

my turn

1 Like

J’arrête la pour aujourd’hui; j’espère que tu vas trouver :slight_smile:

Pour l’affichage des adresses (liées au préfix), je vais regarder dans les jours qui viennent - il faut aussi revoir la persistance du vault - j’utilise l’adresse ss58 comme clé primaire, mais on devrait utiliser l’adresse publique qui ne change pas à la place…

1 Like

Success: build_macos (#157799) · Jobs · clients / Rust / Ğcli-v2s · GitLab

2 Likes

Je vois que tu as merge sur master :+1:

Du coup; tu lances une release ?

Ha je vois que tu avais lancé ça mais ça à planté sur la dernière partie qui n’existait pas avant generate_homebrew_formula

$ SHA256=$(shasum -a 256 gcli.tar.gz | awk '{ print $1 }')
/bin/sh: eval: line 187: shasum: not found
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 127

Un soucis de commande non dispo :slight_smile:

La pipeline a réussi j’ai réparé tout le reste, c’est juste que le dernier job homebrew qui échoue a cause de la clé ssh qui n’est pas bonne.

Je n’ai pas fait ce job et je ne souhaite pas m’en occuper.

2 Likes

J’ai pu récupérer la clé en local depuis gitlab; et j’ai fais des tests, elle est en fait correcte si on ajoute un dernier retour à la ligne après le footer.

Pour tester la clé, la commande qui fournit la clé publique (erreur si le format de la clé privée est incorrect)

ssh-keygen -y -f homebrew.key

J’ai ajouté ce retour à la ligne supplémentaire dans gitlab également.

Je continuerai à regarder ce soir, mais il faudra peut-être adapter aussi le script pour être sur qu’il garde bien exactement le bon format quand il remet cela dans un fichier .key.

D’après mes tests en local, l’utilisation de echo ne garde pas les retours à la ligne (avec ou sans l’argument “-e”).

Par contre, une commande du genre printf '%s' "$TEST_KEY" semble bien les garder.

2 Likes

Hum… je dois encore confirmer avec le prochain build ou j’ai ajouté du débug sur une nouvelle variable de test $TEST_KEY, mais on dirait que lorsque l’on spécifie le type “file” pour une variable ci/cd; cela nous donne un path vers le fichier qui contient le contenu; et pas le contenu lui même :smiley:

Project, group, and instance CI/CD variables are “variable” type by default, but can optionally be set as a “file” type (“variable_type”: “file” in the API). File type variables:

Consist of a key, value, and file.
Are made available in jobs as environment variables, with:
The CI/CD variable key as the environment variable name.
The CI/CD variable value saved to a temporary file.
The path to the temporary file as the environment variable value.

Par contre, le contenu est totalement vide (juste un retour de ligne qui est ajouté par le printf) ???

$ printf '%s\n' "$TEST_KEY" > ~/.ssh/id_rsa_test
$ echo "HexDump of the test key file for debugging purposes:"
HexDump of the test key file for debugging purposes:
$ hexdump -C ~/.ssh/id_rsa_test
00000000  0a                                                |.|
00000001
$ echo "Output sha256sum of the test key file for debugging purposes:"
Output sha256sum of the test key file for debugging purposes:
$ sha256sum ~/.ssh/id_rsa_test
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b  /root/.ssh/id_rsa_test

Je me demande si c’est pas du au setting “protected”’

EDIT:

J’ai retiré le “protected” de ma variable TEST_KEY pour voir; cela me donne ceci (c’est donc bien un path vers le fichier et non le contenu):

$ hexdump -C ~/.ssh/id_rsa_test
00000000  2f 62 75 69 6c 64 73 2f  63 6c 69 65 6e 74 73 2f  |/builds/clients/|
00000010  72 75 73 74 2f 67 63 6c  69 2d 76 32 73 2e 74 6d  |rust/gcli-v2s.tm|
00000020  70 2f 54 45 53 54 5f 4b  45 59 0a                 |p/TEST_KEY.|
0000002b

Et j’ai trouvé la doc pour GitLab qui parle des variables protégées:

@poka, @HugoTrentesaux vous pensez que je peux retirer le “protected” pour la clé Homebrew dans les variables CI/CD ?
Car sinon il faudrait à priori autoriser l’usage pour les merge request, mais il faut également que les branches source et destination soient protégées…

Et je pense qu’en général, la branche source est rarement protégée…

Un développeur (rôle GitLab) du projet pourrait accéder au contenu de la variable en créant une branche dans laquelle il y a un echo $VARIABLE dans le .gitlab-ci.yml.
Cette variable devrait être utilisée uniquement lors d’une release déclenché par un tag git (protégé) ou une branche protégée, à moins que le workflow du projet soit différent.

Il est possible de protéger les tags et les branches ici https://git.duniter.org/clients/rust/gcli-v2s/-/settings/repository#js-protected-tags-settings
J’ai configuré ainsi les dépôts Silkaj et DuniterPy.

1 Like

Ok, mais du coup, est-ce que tu sais me dire comment cela fonctionne pour créer un tag “protégé” quand on fait nos tests (sans MergeRequest derrière) ?

Et deuxième question; lorsque l’on fait une merge request depuis une branche que l’on a nous-même créée (et non protégée je suppose) est-ce que cela devrait fonctionner ? (je suppose que cela pourrait fonctionner gràce au tag que l’on réalise après également ?)

Tu peux protéger tes tags et branches temporairement pour tes tests.
Sinon, tu peux également déprotéger temporairement ta variable CI/CD le temps de tes tests.

1 Like

Et pour l’usage “normal”, via merge request, est-ce que tu peux vérifier si la configuration actuelle devrait être correcte ?

J’ai remarqué que Allow merge request pipelines to access protected variables and runners n’est pas coché actuellement.

Je ne sais plus s’il y a un tag automatique (?protégé) suite à une merge request acceptée & mergée - et si cela fonctionnerait correctement de base ?

Je ne suis pas sûr de comprendre quel workflow de release tu souhaites mettre en place. Peux-tu préciser ?

J’avoue que je ne suis pas sur du workflow de release actuel :slightly_smiling_face:

Je ne sais plus trop qu’est-ce qui est lancé automatiquement lors du merge d’une MergeRequest…

Quelle serait la meilleure configuration pour que cela soit cohérent ?

Est-ce que pour une release on préfère que ce soit un Maintainer qui crée un tag protected et du coup c’est en dehors du mécanisme des MergeRequests… ?