Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📱🚀 GitHub : Preview à l'aide d'ExpoGo lors d'une PR (Sans EAS) #260

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

godetremy
Copy link
Contributor

@godetremy godetremy commented Oct 4, 2024

📱🚀 Preview à l'aide d'ExpoGo lors d'une PR

Warning

Cette pull request ne peut être merge en l'état ! Elle requiert la création de dépôt, de la création de token, et plus encore...

💪 Motivation

En résumé : J'ai la flemme de cloner le repo pour chaque modification

En plus long : Comme j'ai pu voir précédemment, il y a pas mal de réflexion concernant l'intégration d'EAS updates qui à conduit naturellement sur un non catégorique pour des raisons de budget. Pourtant cela aurais bien plusieurs avantages comme :

  • Pouvoir valider une pull request uniquement à l'aide de GitHub
  • Pouvoir faire valider une pull request même par les gens sans connaissance technique
  • Accélérer le processus de validation des pulls requests

C'est pour cela qu'avec beaucoup d'acharnement et de lecture de documentation, il y a belle et bien une commande qui rend la magie d'EAS update... Elle s'intitule expo export ! Cette commande est en fait utilisé dans le fonctionnement d'EAS et permet d'exporter les fichiers AppEntry.js utiliser par ExpoGo.

📝 Requis

Pour fonctionner, cette action requiert :

  • Un repo afin de stocker les fichiers AppEntry.js et les assets
  • Un serveur permettant à Expo de comprendre qu'elle fichier lire

⚙️ Fonctionnement du serveur

Note

Le serveur est disponible sur Github

Le serveur utilise Express et voici son fonctionnement :
Imaginons que vous ayez un QR Code Expo, dont le contenu est exp://example.com/0?platform=ios, lorsque vous scannez votre QR code à l'aide d'ExpoGo, celui-ci va faire une requête à l'url qui suit exp:// en remplacent cela par http://.
Le serveur reçois donc la requête http://example.com/0?platform=ios, où 0 correspond à l'identifiant de la pull request.
Il va donc regarder sur le repo ou son stocker les previews, regarde si il trouve le fichier app.json, puis en fonction de la réponse :

  • Il renvoie 404 si elle n'est pas trouvé
  • Sinon il retourne un ExpoUpdatesManifest compléter avec le fichier app.json

De cette réponse ExpoGo demandera au serveur de renvoyer le fichier AppEntry.js dont l'url se trouve dans la réponse précédente, mais cette fois ci le serveur ne se chargera que d'ajouter le header Content-Type : application/javascript

Et les assets ?

Lors de la requête de configuration, votre adresse IP sera enregistrée afin de pouvoir enregistrer le dernière ID de pull request auquel vous avez voulu accédez. ExpoGo ne demande que l'host des assets et l'implémentation d'ExpoGo ne permet pas de tricher en ajoutant des paramètre d'url.

ExpoGo ferra des requêtes à notre serveur puis redirigera vers une url https://raw.githubusercontent.com.

🚀 Fonctionnement de l'action

Cette action s'exécute lors de l'ouverture et de la synchronisation des pull request. Il utilise les runners ubuntu-latest, mais peuvent être replacé par des runners self-hosted.

Étapes par étapes

Checkout code

Cette action récupère le code avec les commits de la pull request

Setup Node.js

Cela initie NodeJS à la version 18

Install dependencies

Cela permet d'installer les dépendances.
Commandes :

npm i

Create dist folder

Crée les dossiers de rendu
Commandes :

mkdir dist
mkdir dist/expo

Export AppEntry

Utilise expo export pour exporter les fichiers pour iOS et Android. Les actions s'éxécute parallèlement afin de gagner du temps.
Commandes :

npx expo export --dev --platform ios --output-dir build_ios & npx expo export --dev --platform android --output-dir build_android

Important

npx est obligatoire dans ce cas, expo ne pouvant être lier sur des machines qui ne nous appartiennent pas.

Move iOS AppEntry

Déplace le fichier AppEntry.js vers le dossier dist. Cela le renomme également en AppEntry_ios.js
Commandes :

cd build_ios
PATH_TO_ENTRY="$(find . | grep 'AppEntry.js')"
mv $PATH_TO_ENTRY ./../dist/expo/AppEntry_ios.js
cd ..

Move Android AppEntry

Déplace le fichier AppEntry.js vers le dossier dist. Cela le renomme également en AppEntry_android.js
Commandes :

cd build_android
PATH_TO_ENTRY="$(find . | grep 'AppEntry.js')"
mv $PATH_TO_ENTRY ./../dist/expo/AppEntry_android.js
cd ..

Move assets

Déplace le dossier d'assets dans dist.
Commandes :

mv build_ios/assets dist/assets

Copy app.json

Copie le fichier app.json dans dist
Commandes :

cp app.json dist/app.json

Cleanup

Supprime les dossiers build_ios et build_android
Commandes :

rm -rf build_ios build_android

Cloning the PR repository

Clone le repo contenant les pulls requests
Commandes :

git clone "https://github.com/-- !!! REPO USER / REPO NAME !!! --.git" pr_repo

Transfering the build to PR repository

Crée le dossier de la PR, dans pr_repo, y déplace le contenu de dist, l'ajoute à git, le commit, et le push.
Commandes :

mkdir pr_repo/${{ github.event.pull_request.number }}
cp -r dist/* pr_repo/${{ github.event.pull_request.number }}
cd pr_repo
git config --global user.email "-- !!! COMMIT MAIL !!! --"
git config --global user.name "-- !!! COMMIT NAME !!! --"
git add .
git commit -m "Build PR#${{ github.event.pull_request.number }}"
git push https://${{ secrets.GH_TOKEN }}@github.com/-- !!! REPO USER / REPO NAME !!! --.git
cd ..

Commenting on PR

Ajouter un message à la PR, contenant les QR code.

Example ?

🎉 La preview est prête 🎉

iOS
iOS


Pour exécuter cette preview sur ton iPhone, tu auras besoin de l'application ExpoGo.
Une fois installée, scanne ce QR code à l'aide de l'appareil photo ou entre cette url dans Expo :
exp://expo.godetremy.com/15?platform=ios





Android
Android


Pour exécuter cette preview sur ton téléphone, tu auras besoin de l'application ExpoGo.
Télécharge-la depuis le Google PlayStore, puis une fois installée, scanne ce QR code à l'aide du scanneur de QR code
de ton mobile ou entre cette url dans Expo :
exp://expo.godetremy.com/15?platform=android


❗️ Avant de merge

Avant de merge, il faut :

  • Crée un repo contenant tout les builds.
  • Crée un token permettant à l'action d'ajouter du contenu au repo (autorisation: repo)
  • Héberger un serveur Express simulant le comportement d'Expo
  • Modifier le workflow en remplaçant -- !!! EXPO SERVER !!! -- avec l'url du serveur Expo
  • Modifier le workflow en remplaçant -- !!! REPO USER / REPO NAME !!! -- avec l'emplacement du repo des pull request
  • Modifier le workflow en remplaçant -- !!! COMMIT MAIL !!! -- avec un email valide
  • Modifier le workflow en remplaçant -- !!! COMMIT NAME !!! -- avec un nom valide
  • Ajouter le token au secret du repo de Papillon

🤔 FAQ

Quand le code du serveur sera public ?

Je vais tenter de faire ça au plus vite ! D'ici la semaine prochaine cela devrait être bon !

C'est fait ! Il se trouve sur Github

Mais les GitHub Actions c'est payant ? 🤓☝️

OUI, mais GitHub en lui même est payant déjà ! C'est pas pour autant qu'on héberge notre code sur Framagit (avec tout le respect pour ce projet) !
A savoir qu'un temps moyen pour toute cette actions et d'environ 2min30 (arrondi au supérieur), et que GitHub Actions en plan gratuit autorise 2000min par mois. Donc pour t'aider on va faire du calcul :

2min30 => 150s
2000min => 120 000s

120 000 / 150 = 800

Donc en un mois tu dois faire 800 PR, ce qui est colossal !
Tu es toujours pas convaincu?

800 PR
1 mois => 31j

800 / 31 = 25,806

Donc 25 PR PAR JOUR

De plus, comme dis précédemment tu peut héberger un runners self-hosted sur Github donc c'est chill.

Mais quand le repo sera pleins ?

Il manque beaucoup de cas a prendre en charge, mais le reverse d'Expo était l'étape clé de celle-ci. Pour l'instant nous devrons le faire à la mains ou bien ajouter une action pour supprimer les dossiers lorsque les PR sont fermé.

Sur ce, merci d'avoir lu tout ça. (Je sais que ta pas tout lu petit cachotier 🥸)

@godetremy godetremy added ✨ enhancement New feature or request 🤖 GitHub Actions Everything to do with GitHub Actions labels Oct 4, 2024
@Louis-htmlcss
Copy link
Contributor

utilise ca pour faire les commits: https://github.com/stefanzweifel/git-auto-commit-action

@godetremy
Copy link
Contributor Author

utilise ca pour faire les commits: https://github.com/stefanzweifel/git-auto-commit-action

Surtout pas justement ! Le but est de faire un commit dans un repo à part ! Pas dans le même ! Le but de ton action est de faire des commit sur le même repo pour par exemple y appliquer des modifications de style !

@Louis-htmlcss
Copy link
Contributor

Louis-htmlcss commented Oct 4, 2024

utilise ca pour faire les commits: https://github.com/stefanzweifel/git-auto-commit-action

Surtout pas justement ! Le but est de faire un commit dans un repo à part ! Pas dans le même ! Le but de ton action est de faire des commit sur le même repo pour par exemple y appliquer des modifications de style !

Ah ouais j'avais pas vu my bad

@tom-theret
Copy link
Contributor

Je pense qu'il n'y à pas besoins de tout ça car Expo donne une lib action expo/expo-github-action.

Ici on parle de EAS mais je pense que l'on peut l'utiliser en mode local comme je l'ai fait en V6.

@tom-theret
Copy link
Contributor

Je pense même qu'il y a moyen de faire tourner expo go de manier persistant !

@tom-theret
Copy link
Contributor

Mais le mieux à mon avis est :

  • Build iOS
  • Build Android
  • Expo GO QR

Puis une fois la PR effectué alors fermer le workflow avec une valeur positive

@godetremy
Copy link
Contributor Author

Je pense qu'il n'y à pas besoins de tout ça car Expo donne une lib action expo/expo-github-action.

Ici on parle de EAS mais je pense que l'on peut l'utiliser en mode local comme je l'ai fait en V6.

Comme on est pas sur des réactions d'EAS dans les cas de dépassement des limites, c'est une solution viable !

@godetremy
Copy link
Contributor Author

Je pense même qu'il y a moyen de faire tourner expo go de manier persistant !

Les GitHub Actions ont des limites de fonctionnement + c'est payant au dessus de 2000h !
Qui dit 10PR qui sont ouvertes pendant 24h dit 240h de GitHub Action donc obligatoirement payant !

Mais le mieux à mon avis est :

  • Build iOS
  • Build Android
  • Expo GO QR

Puis une fois la PR effectué alors fermer le workflow avec une valeur positive

Juste pourquoi faire des builds ? Si c'est des builds avec Expo, c'est exactement ce qui est fait, juste l'hébergement n'est pas fourni par Expo mais dans EAS qui lui est payant. Si c'est des builds Xcode, je vois pas l'interêt dans ce cas ! C'est lourd, long, chiant à installer... Bref tout les points positifs d'ExpoGo en fumée !

@Louis-htmlcss
Copy link
Contributor

Je pense même qu'il y a moyen de faire tourner expo go de manier persistant !

Les GitHub Actions ont des limites de fonctionnement + c'est payant au dessus de 2000h !
Qui dit 10PR qui sont ouvertes pendant 24h dit 240h de GitHub Action donc obligatoirement payant !

Mais le mieux à mon avis est :

  • Build iOS
  • Build Android
  • Expo GO QR

Puis une fois la PR effectué alors fermer le workflow avec une valeur positive

Juste pourquoi faire des builds ? Si c'est des builds avec Expo, c'est exactement ce qui est fait, juste l'hébergement n'est pas fourni par Expo mais dans EAS qui lui est payant. Si c'est des builds Xcode, je vois pas l'interêt dans ce cas ! C'est lourd, long, chiant à installer... Bref tout les points positifs d'ExpoGo en fumée !

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

@Louis-htmlcss
Copy link
Contributor

Louis-htmlcss commented Oct 8, 2024

📱🚀 Preview à l'aide d'ExpoGo lors d'une PR

[!WARNING]
Cette pull request ne peut être merge en l'état ! Elle requiert la création de dépôt, de la création de token, et plus encore...

💪 Motivation

En résumé : J'ai la flemme de cloner le repo pour chaque modification

En plus long : Comme j'ai pu voir précédemment, il y a pas mal de réflexion concernant l'intégration d'EAS updates qui à conduit naturellement sur un non catégorique pour des raisons de budget. Pourtant cela aurais bien plusieurs avantages comme :

  • Pouvoir valider une pull request uniquement à l'aide de GitHub
  • Pouvoir faire valider une pull request même par les gens sans connaissance technique
  • Accélérer le processus de validation des pulls requests

C'est pour cela qu'avec beaucoup d'acharnement et de lecture de documentation, il y a belle et bien une commande qui rend la magie d'EAS update... Elle s'intitule expo export ! Cette commande est en fait utilisé dans le fonctionnement d'EAS et permet d'exporter les fichiers AppEntry.js utiliser par ExpoGo.

📝 Requis

Pour fonctionner, cette action requiert :

  • Un repo afin de stocker les fichiers AppEntry.js et les assets
  • Un serveur permettant à Expo de comprendre qu'elle fichier lire

⚙️ Fonctionnement du serveur

[!NOTE]
Le serveur est disponible sur Github

Le serveur utilise Express et voici son fonctionnement :
Imaginons que vous ayez un QR Code Expo, dont le contenu est exp://example.com/0?platform=ios, lorsque vous scannez votre QR code à l'aide d'ExpoGo, celui-ci va faire une requête à l'url qui suit exp:// en remplacent cela par http://.
Le serveur reçois donc la requête http://example.com/0?platform=ios, où 0 correspond à l'identifiant de la pull request.
Il va donc regarder sur le repo ou son stocker les previews, regarde si il trouve le fichier app.json, puis en fonction de la réponse :

  • Il renvoie 404 si elle n'est pas trouvé
  • Sinon il retourne un ExpoUpdatesManifest compléter avec le fichier app.json

De cette réponse ExpoGo demandera au serveur de renvoyer le fichier AppEntry.js dont l'url se trouve dans la réponse précédente, mais cette fois ci le serveur ne se chargera que d'ajouter le header Content-Type : application/javascript

Et les assets ?

Lors de la requête de configuration, votre adresse IP sera enregistrée afin de pouvoir enregistrer le dernière ID de pull request auquel vous avez voulu accédez. ExpoGo ne demande que l'host des assets et l'implémentation d'ExpoGo ne permet pas de tricher en ajoutant des paramètre d'url.

ExpoGo ferra des requêtes à notre serveur puis redirigera vers une url https://raw.githubusercontent.com.

🚀 Fonctionnement de l'action

Cette action s'exécute lors de l'ouverture et de la synchronisation des pull request. Il utilise les runners ubuntu-latest, mais peuvent être replacé par des runners self-hosted.

Étapes par étapes

Checkout code

Cette action récupère le code avec les commits de la pull request

Setup Node.js

Cela initie NodeJS à la version 18

Install dependencies

Cela permet d'installer les dépendances.
Commandes :

npm i

Create dist folder

Crée les dossiers de rendu
Commandes :

mkdir dist
mkdir dist/expo

Export AppEntry

Utilise expo export pour exporter les fichiers pour iOS et Android. Les actions s'éxécute parallèlement afin de gagner du temps.
Commandes :

npx expo export --dev --platform ios --output-dir build_ios & npx expo export --dev --platform android --output-dir build_android

[!IMPORTANT]
npx est obligatoire dans ce cas, expo ne pouvant être lier sur des machines qui ne nous appartiennent pas.

Move iOS AppEntry

Déplace le fichier AppEntry.js vers le dossier dist. Cela le renomme également en AppEntry_ios.js
Commandes :

cd build_ios
PATH_TO_ENTRY="$(find . | grep 'AppEntry.js')"
mv $PATH_TO_ENTRY ./../dist/expo/AppEntry_ios.js
cd ..

Move Android AppEntry

Déplace le fichier AppEntry.js vers le dossier dist. Cela le renomme également en AppEntry_android.js
Commandes :

cd build_android
PATH_TO_ENTRY="$(find . | grep 'AppEntry.js')"
mv $PATH_TO_ENTRY ./../dist/expo/AppEntry_android.js
cd ..

Move assets

Déplace le dossier d'assets dans dist.
Commandes :

mv build_ios/assets dist/assets

Copy app.json

Copie le fichier app.json dans dist
Commandes :

cp app.json dist/app.json

Cleanup

Supprime les dossiers build_ios et build_android
Commandes :

rm -rf build_ios build_android

Cloning the PR repository

Clone le repo contenant les pulls requests
Commandes :

git clone "https://github.com/-- !!! REPO USER / REPO NAME !!! --.git" pr_repo

Transfering the build to PR repository

Crée le dossier de la PR, dans pr_repo, y déplace le contenu de dist, l'ajoute à git, le commit, et le push.
Commandes :

mkdir pr_repo/${{ github.event.pull_request.number }}
cp -r dist/* pr_repo/${{ github.event.pull_request.number }}
cd pr_repo
git config --global user.email "-- !!! COMMIT MAIL !!! --"
git config --global user.name "-- !!! COMMIT NAME !!! --"
git add .
git commit -m "Build PR#${{ github.event.pull_request.number }}"
git push https://${{ secrets.GH_TOKEN }}@github.com/-- !!! REPO USER / REPO NAME !!! --.git
cd ..

Commenting on PR

Ajouter un message à la PR, contenant les QR code.

Example ?

🎉 La preview est prête 🎉

iOS
iOS


Pour exécuter cette preview sur ton iPhone, tu auras besoin de l'application ExpoGo.
Une fois installée, scanne ce QR code à l'aide de l'appareil photo ou entre cette url dans Expo :
exp://expo.godetremy.com/15?platform=ios





Android
Android


Pour exécuter cette preview sur ton téléphone, tu auras besoin de l'application ExpoGo.
Télécharge-la depuis le Google PlayStore, puis une fois installée, scanne ce QR code à l'aide du scanneur de QR code
de ton mobile ou entre cette url dans Expo :
exp://expo.godetremy.com/15?platform=android


❗️ Avant de merge

Avant de merge, il faut :

  • Crée un repo contenant tout les builds.
  • Crée un token permettant à l'action d'ajouter du contenu au repo (autorisation: repo)
  • Héberger un serveur Express simulant le comportement d'Expo
  • Modifier le workflow en remplaçant -- !!! EXPO SERVER !!! -- avec l'url du serveur Expo
  • Modifier le workflow en remplaçant -- !!! REPO USER / REPO NAME !!! -- avec l'emplacement du repo des pull request
  • Modifier le workflow en remplaçant -- !!! COMMIT MAIL !!! -- avec un email valide
  • Modifier le workflow en remplaçant -- !!! COMMIT NAME !!! -- avec un nom valide
  • Ajouter le token au secret du repo de Papillon

🤔 FAQ

Quand le code du serveur sera public ?

Je vais tenter de faire ça au plus vite ! D'ici la semaine prochaine cela devrait être bon !

C'est fait ! Il se trouve sur Github

Mais les GitHub Actions c'est payant ? 🤓☝️

OUI, mais GitHub en lui même est payant déjà ! C'est pas pour autant qu'on héberge notre code sur Framagit (avec tout le respect pour ce projet) !
A savoir qu'un temps moyen pour toute cette actions et d'environ 2min30 (arrondi au supérieur), et que GitHub Actions en plan gratuit autorise 2000min par mois. Donc pour t'aider on va faire du calcul :

2min30 => 150s
2000min => 120 000s

120 000 / 150 = 800

Donc en un mois tu dois faire 800 PR, ce qui est colossal !
Tu es toujours pas convaincu?

800 PR
1 mois => 31j

800 / 31 = 25,806

Donc 25 PR PAR JOUR

De plus, comme dis précédemment tu peut héberger un runners self-hosted sur Github donc c'est chill.

Mais quand le repo sera pleins ?

Il manque beaucoup de cas a prendre en charge, mais le reverse d'Expo était l'étape clé de celle-ci. Pour l'instant nous devrons le faire à la mains ou bien ajouter une action pour supprimer les dossiers lorsque les PR sont fermé.

Sur ce, merci d'avoir lu tout ça. (Je sais que ta pas tout lu petit cachotier 🥸)

J'ai pas bien compris sur le serveur express, vous allez le self host ?

@godetremy
Copy link
Contributor Author

J'ai pas bien compris sur le serveur express, vous allez le self host ?

Pas totalement ! Les AppEntry seront sur GitHub dans un répondu dédié, ce qui doit être self host c'est le serveur "proxy" qui lui permet de fournir les informations requises concernant les packages.

@Louis-htmlcss
Copy link
Contributor

J'ai pas bien compris sur le serveur express, vous allez le self host ?

Pas totalement ! Les AppEntry seront sur GitHub dans un répondu dédié, ce qui doit être self host c'est le serveur "proxy" qui lui permet de fournir les informations requises concernant les packages.

vous allez le host comment

@Louis-htmlcss
Copy link
Contributor

Des nouvelles ?

@Louis-htmlcss
Copy link
Contributor

Des nouvelles ?

Sinon ya toujours mon action qui se lance indéfiniment mdrrr

@camarm-dev
Copy link
Member

camarm-dev commented Nov 10, 2024

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).

MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !

Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

@Louis-htmlcss
Copy link
Contributor

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).

MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !

Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

Comme les minutes sont infinies, pas besoin de serveur, ont peut lancer ndefiniment npx expo start en gh action

@raphckrman
Copy link
Contributor

GitHub Actions limite chaque job à un maximum de 6 heures d'exécution. @Louis-htmlcss
https://docs.github.com/en/actions/administering-github-actions/usage-limits-billing-and-administration

@Louis-htmlcss
Copy link
Contributor

GitHub Actions limite chaque job à un maximum de 6 heures d'exécution. @Louis-htmlcss https://docs.github.com/en/actions/administering-github-actions/usage-limits-billing-and-administration

il se relance lui meme

@camarm-dev
Copy link
Member

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).
MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !
Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

Comme les minutes sont infinies, pas besoin de serveur, ont peut lancer ndefiniment npx expo start en gh action

Ouais mais je trouve ça plus propre l'approche de Rémy, de séparer la preview, ça permet d'avoir une url stable et d'accéder à l'app même si le workflow tourne plus (fin de la PR ou jsp quoi)...

@Louis-htmlcss
Copy link
Contributor

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).
MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !
Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

Comme les minutes sont infinies, pas besoin de serveur, ont peut lancer ndefiniment npx expo start en gh action

Ouais mais je trouve ça plus propre l'approche de Rémy, de séparer la preview, ça permet d'avoir une url stable et d'accéder à l'app même si le workflow tourne plus (fin de la PR ou jsp quoi)...

ouais mais le probleme c'est qu'ils doivent utiliser un autre serveur

@camarm-dev
Copy link
Member

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).
MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !
Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

Comme les minutes sont infinies, pas besoin de serveur, ont peut lancer ndefiniment npx expo start en gh action

Ouais mais je trouve ça plus propre l'approche de Rémy, de séparer la preview, ça permet d'avoir une url stable et d'accéder à l'app même si le workflow tourne plus (fin de la PR ou jsp quoi)...

ouais mais le probleme c'est qu'ils doivent utiliser un autre serveur

ouais mais si j'ai bien compris ça tourne pas sur GH Actions, donc c'est mieux prcq les Actions c'est pas trop fait pour être utilisé comme un serveur, ce sont des "jobs" comme ils les appellent.

@tom-theret
Copy link
Contributor

Mais on ne pourrait pas pousser le preview PR sur Snack ? Au moins on est tranquille. Pas de serveur, pas de build à gérer...

En gros c'est la tranquillité, je peux m'en charger s'il faut.

@tom-theret
Copy link
Contributor

Ou alors regarder à ça :

https://docs.expo.dev/eas-update/github-actions/

@camarm-dev
Copy link
Member

Mais on ne pourrait pas pousser le preview PR sur Snack ? Au moins on est tranquille. Pas de serveur, pas de build à gérer...

En gros c'est la tranquillité, je peux m'en charger s'il faut.

Je connais pas je vais regarder

Ou alors regarder à ça :
https://docs.expo.dev/eas-update/github-actions/

Justement pas de EAS c'est le but de la PR je crois.

@camarm-dev
Copy link
Member

Pas mal snack mais bon le faite d'update le truc à chaque commit faut voir comment on peut se débrouiller... Aussi jsp si y'a un rate limit donc à creuser mais dans l'idée c'est un truc comme ça qu'il faut... Après je me dis queles requêtes vont peut être pas paser avec les cors tt ça...

@Louis-htmlcss
Copy link
Contributor

Ou alors regarder à ça :

https://docs.expo.dev/eas-update/github-actions/

On peut pas vu les limitations de eas

@godetremy
Copy link
Contributor Author

Pas mal snack mais bon le faite d'update le truc à chaque commit faut voir comment on peut se débrouiller... Aussi jsp si y'a un rate limit donc à creuser mais dans l'idée c'est un truc comme ça qu'il faut... Après je me dis queles requêtes vont peut être pas paser avec les cors tt ça...

Snack est un service d'EAS

@Louis-htmlcss
Copy link
Contributor

Pas mal snack mais bon le faite d'update le truc à chaque commit faut voir comment on peut se débrouiller... Aussi jsp si y'a un rate limit donc à creuser mais dans l'idée c'est un truc comme ça qu'il faut... Après je me dis queles requêtes vont peut être pas paser avec les cors tt ça...

Snack est un service d'EAS

Oui mais ya pas besoin de connexion

@Louis-htmlcss
Copy link
Contributor

Hey par contre ça veut dire que la preview doit se lancer à chaque nouveau commit de la PR pour actualiser les dernières modifications ? Je sais pas si c'est déjà le cas dans ton code... Ducoup les calculs sont faussés je pense (sauf si j'ai pas compris qqch).
MAIS

Les repos publics ont a nombre infini de minutes : https://github.com/orgs/community/discussions/70492

On dispose effectivement d'aucunes limitation, donc la preview peut s'actualiser à chaque commit !
Je sais pas trop où la PR en est, en tout cas c'est une très bonne idée et si tu arrives à la faire fonctionner ça aiderait tout le monde !

Comme les minutes sont infinies, pas besoin de serveur, ont peut lancer ndefiniment npx expo start en gh action

Ouais mais je trouve ça plus propre l'approche de Rémy, de séparer la preview, ça permet d'avoir une url stable et d'accéder à l'app même si le workflow tourne plus (fin de la PR ou jsp quoi)...

ouais mais le probleme c'est qu'ils doivent utiliser un autre serveur

ouais mais si j'ai bien compris ça tourne pas sur GH Actions, donc c'est mieux prcq les Actions c'est pas trop fait pour être utilisé comme un serveur, ce sont des "jobs" comme ils les appellent.

Oui mais ça veut dire qu'on a pas le contrôle sur ce serveur donc on peut nous refiler une version différente

@Kgeek33
Copy link
Contributor

Kgeek33 commented Nov 10, 2024

https://dev.to/rgomezp/how-to-set-up-an-eas-local-build-on-github-actions-1l0i
J'ai trouvé ça sur Google, c'est dans l'idée, mais bon

@Louis-htmlcss
Copy link
Contributor

https://dev.to/rgomezp/how-to-set-up-an-eas-local-build-on-github-actions-1l0i
J'ai trouvé ça sur Google, c'est dans l'idée, mais bon

Pas vraiment car ça build en apk, et nous on veut une preview

@Kgeek33
Copy link
Contributor

Kgeek33 commented Nov 10, 2024

ok oui, c'est vrai. Rappelez-moi, c'est quoi les limitations de EAS ?
GitHub Actions, c'est sûr, il n'y a pas de limite sur les repos publics

@Louis-htmlcss
Copy link
Contributor

Mais on ne pourrait pas pousser le preview PR sur Snack ? Au moins on est tranquille. Pas de serveur, pas de build à gérer...

En gros c'est la tranquillité, je peux m'en charger s'il faut.

comment, ca veut dire tu vas devoir tout reverse

@Louis-htmlcss
Copy link
Contributor

ok oui, c'est vrai. Rappelez-moi, c'est quoi les limitations de EAS ? GitHub Actions, c'est sûr, il n'y a pas de limite sur les repos publics

30 build par mois, mais je crois que c'est en fichier apk et pas preview

@Louis-htmlcss
Copy link
Contributor

voici une version fonctionnele de mon idée: https://github.com/Louis-htmlcss/test-du-workflows

@Louis-htmlcss
Copy link
Contributor

voici une version fonctionnele de mon idée: https://github.com/Louis-htmlcss/test-du-workflows

@Kgeek33 stv tester

@Kgeek33
Copy link
Contributor

Kgeek33 commented Nov 10, 2024

ok je teste et je te dis

@Louis-htmlcss
Copy link
Contributor

avec @Kgeek33 on est entrain de faire un workflow qui se charge de tout ca sans besoin de repliquer le fonctionnement de expo ou autre

@Kgeek33
Copy link
Contributor

Kgeek33 commented Nov 13, 2024

je pense qu'on peut closed cette pr, car en plus d'un nouveau worflow, on refait complètement le dossier .github
j'pense qu'une pr sera prête en fin de semaine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ enhancement New feature or request 🤖 GitHub Actions Everything to do with GitHub Actions
Projects
Status: À relancer
Development

Successfully merging this pull request may close these issues.

6 participants