Guia del professor — Sessió 5 (Fase 5)
«Crear apps amb IA, des de zero»
Munta la canonada: del merge al desplegament. Avui és la sessió més tècnica del curs (CI/CD), però amb un gir clau: no la lideres tu a la pantalla escrivint comandes. La munta l'agent de cada alumne: l'alumne li dona un prompt mestre i l'agent crea el
.clasp.json, el workflow de GitHub Actions i li diu quin secret afegir. Tu fas de xarxa de seguretat quan un agent s'encalla. L'objectiu: muntar una sola vegada una canonada de CI/CD perquè, cada cop que es fusioni un canvi amain, l'app es publiqui sola al/exec, sense tocar Apps Script. A partir d'avui: desplegar = fusionar. És presencial, com la S1 i la S3.
1. Fitxa de la sessió
| Camp | Detall |
|---|---|
| Sessió | 5 (Fase 5) — Munta la canonada: del merge al desplegament |
| Format | Presencial amb tu. És la sessió més tècnica del curs, però la fa l'agent; tu ets la xarxa de seguretat |
| Durada total | ~150 min (2 h 30 min), amb una pausa curta |
| Objectiu | Que cada alumne munti una vegada una canonada de CI/CD (GitHub Action amb clasp dins) perquè fusionar a main publiqui sol al /exec, i que entengui i sàpiga depurar aquest flux |
| Material de l'alumne | Portàtil (avui sí, de debò), compte personal de Google, compte i repo de GitHub (S3) amb la seva app, domini del flux branca → PR → revisió → merge (S4), el seu Script ID d'Apps Script a mà i el correu per autoritzar |
| Material teu | Projector/bona connexió, la canonada sencera ja muntada per tu abans (amb un agent, perquè coneguis cada error real), un repo de prova amb una app d'Apps Script, un workflow d'exemple que funcioni, i tenir localitzats: clasp login, l'activació de l'API d'Apps Script i la creació del secret (a mà i amb gh) |
Què s'enduen (resultats d'aprenentatge)
- Una canonada que publica sola: cada merge a
maindesplega l'app al/execsense tocar Apps Script. - Entendre el flux merge → deploy: el desplegament és només via merge → GitHub Action, i clasp viu DINS de l'Action (mai a mà a la terminal).
- Saber que hi ha 3 clics que només pot fer l'alumne (són del seu compte):
clasp login, activar l'API d'Apps Script i afegir el secret a GitHub. - Aplicar el bucle de depuració que ja dominen, ara al CI/CD: quan l'Action falla, enganxar el log vermell + el workflow a l'agent → ho arregla → tornar a executar.
- Interioritzar el lema: «desplegar = fusionar».
Requisits previs (comprova'ls a l'inici)
- El repositori de la S3/S4 amb la seva app a dins (
Codi.gs,Index.html, carpetacontext/). - Dominar el flux de la S4: branca → PR → revisió → merge. Avui hi posem el desplegament a sobre.
- El seu Script ID d'Apps Script a mà (a Apps Script: Configuració del projecte → ID) i el correu del compte amb què autoritzaran.
El que canvia respecte de la S4: fins ara, fusionar no publicava res —seguien copiant a Apps Script a mà—. Avui muntem la peça que faltava: el merge publica sol. El flux d'abans (branca → PR → revisió → merge) agafa tot el sentit.
Avui el portàtil no és opcional. Es treballa al Codespace, amb la terminal, el
ghi la pestanya Actions. Amb mòbil no es fa.
2. Preparació prèvia del professor (CRÍTICA — dedica-hi molt)
Aquesta és la part més important de la guia. La canonada fallarà la primera vegada gairebé sempre (nom del secret, API no activada, Script ID, versió de l'acció o de clasp, permisos). Si TU l'has muntada abans amb un agent, coneixeràs cada error real i podràs desencallar en segons. Si no, t'enxamparà en directe. Dedica-hi el temps que calgui: és el que farà que la sessió surti bé.
Munta la canonada sencera, de zero, amb un agent, abans de la classe:
- [ ] Tingues un repo de prova amb una app d'Apps Script senzilla (
Codi.gs+Index.html) lligada a un full de Google, i anota el seu Script ID (Apps Script → Configuració del projecte → ID). - [ ] Fes tu el
clasp loginuna vegada: instal·la clasp (l'agent et dirà com; sol ser vianpm), executa el login, autoritza al teu Google i enganxa el codi que et torna. Mira on es desa la credencial (.clasprc.json) i recorda que aquest valor és el que anirà al secret.
No t'inventis versions ni rutes. Les comandes de clasp, els noms de les accions de GitHub i les pantalles de Google canvien sovint. Quan ho muntis, apunta't les versions que et van funcionar a tu i digues a classe que cal comprovar-ho (deixa que l'agent porti l'última versió).
- [ ] Localitza on s'activa l'API d'Apps Script (a la configuració del Google de l'usuari, a
script.google.com/home/usersettings): hi ha un interruptor que cal posar a ON. Comprova'l tu i recorda on és exactament avui (la pantalla pot haver canviat). - [ ] Practica crear el secret de GitHub de les dues maneres:
1. A mà: repo → Settings → Secrets and variables → Actions → New repository secret → nom (p. ex.
CLASPRC_JSON) i el valor (la credencial del login). 2. Amb elgh(GitHub CLI, ja autenticat al Codespace): l'agent pot crear-lo amb una comandagh secret set .... Prova-la perquè sàpigues si funciona al vostre entorn. Encara que l'agent el creï, el valor surt del login de l'alumne: el clic d'autoritzar és irreductiblement humà. - [ ] Tingues un workflow d'exemple que FUNCIONI (
.github/workflows/deploy.yml) que faci, en fer push amain: instal·lar clasp → escriure la credencial des del secret →clasp push(puja el codi) →clasp deploy(publica una versió nova). No el dictis tu a classe: és perquè TU sàpigues com és un de bo i puguis comparar quan un agent en torni un de dolent. - [ ] Fes el cicle complet una vegada: canvi via branca → PR → merge → mirar Actions → comprovar que el
/execs'actualitza sol. Cronometra-ho. Si te'n surts en ~30 min, a classe ho desencallaràs bé. - [ ] Provoca un error a posta (canvia el nom del secret al workflow, o no activis l'API) i mira com és el log vermell: així reconeixeràs els errors reals quan els alumnes te'ls portin.
- [ ] Comprova projector, zoom i CONNEXIÓ. Tot va pel núvol (Codespaces, Actions, Google). Si la connexió de l'aula és justa, planteja't el Pla B abans de començar.
Prepara el missatge del dia: «Avui no us ensenyo jo comandes a la pantalla. Cada agent munta la canonada. Jo soc aquí per desencallar quan peti —i petarà, és normal—. I recordeu: clasp viu dins de l'Action, no a la vostra terminal. A partir d'avui, desplegar = fusionar.»
3. Minutat bloc a bloc (~150 min)
Porta el rellotge a la mà. El cor del dia és: l'agent munta la canonada (Bloc B) → els 3 clics de l'alumne (Bloc C) → provar-la (Bloc D) → depurar quan falla (Bloc E). El Bloc E NO és un imprevist: és part del pla, perquè gairebé sempre falla el primer cop. Protegeix-lo: si vas just, sacrifica l'obertura llarga, no la depuració.
| # | Bloc | Min | Acumulat |
|---|---|---|---|
| A | Obertura: per què (merge = deploy; clasp dins l'Action) | 15 | 15 |
| B | L'agent munta la canonada (el prompt mestre: .clasp.json + workflow) |
30 | 45 |
| C | Els 3 clics que només pot fer l'alumne (login, API, secret) | 30 | 75 |
| — | Pausa curta | 5 | 80 |
| D | Provar la canonada (branca → PR → merge → Actions → /exec) |
25 | 105 |
| E | Quan l'Action falla (el bucle de depuració del CI/CD) | 25 | 130 |
| F | Protegeix main (un ruleset: ningú hi puja directe, només via PR) |
10 | 140 |
| G | Tancament i pont a la Fase 6 | 10 | 150 |
Total: 150 minuts.
Per què el Bloc E és tan llarg: perquè és on s'aprèn de debò. La primera execució falla gairebé sempre, i corregir-la (amb l'agent) és exactament el bucle de depuració que ja dominen, ara aplicat al CI/CD. No el corris ni el tractis com un problema: és el contingut.
Bloc A — Obertura: per què (15 min)
Curta i clara. L'objectiu és que entenguin dues decisions abans de tocar res: merge = deploy i clasp dins de l'Action.
- Recupera d'on venen: «A la S4 vau aprendre a treballar amb branques, PRs i revisió amb IA… però publicar seguia sent a mà: copiar a Apps Script. Avui muntem la peça que faltava.»
- La idea, en una frase: «A partir d'avui, desplegar = fusionar. Cada cop que un canvi entri a
main, l'app es publicarà sola.» - Què és una canonada (CI/CD), sense tecnicismes: «Una cinta transportadora automàtica: quan poses el codi a
main, una màquina (la GitHub Action) l'agafa i el publica al/exec. La muntem una vegada; després funciona sola.» - Decisió clau 1 — clasp viu DINS de l'Action: «clasp és l'eina que publica a Apps Script. Però no l'executareu mai a la terminal a mà. Viu dins de l'Action. Per què? Perquè si publiquéssiu a mà, us saltaríeu les branques, els PRs i la revisió de la S4. Publicar a mà és un vici; nosaltres volem que tot passi pel merge.»
- Decisió clau 2 — ho fa el teu agent: «Avui no us dicto jo res a la pantalla. Cada agent munta la canonada. Vosaltres li doneu un prompt mestre, ell crea els fitxers i us diu què clicar. La filosofia del curs: demana-ho i entén-ho, no ho facis a mà.»
Frase per repetir: «Desplegar = fusionar. clasp viu dins de l'Action, no a la teva terminal.»
Bloc B — L'agent munta la canonada (30 min)
Aquí l'alumne dona el prompt mestre (Annex B) al seu agent i l'agent munta la infraestructura. Agnòstic d'eina: si l'agent té mode agent (executa ordres), fa la feina ell; si és només xat, dona els fitxers/ordres perquè l'alumne els enganxi (flux copiar-enganxar, com sempre).
- Enganxar el prompt mestre (Annex B) al xat de l'agent, amb el seu Script ID ben posat. El prompt demana a l'agent que creï:
- El
.clasp.json(apunta al seu Script ID i diu on són els fitxers). - El workflow.github/workflows/deploy.ymlque, en fer push amain, faclasp push(puja el codi a Apps Script) iclasp deploy(publica una versió nova). - I que li digui clarament quin secret afegir (nom i d'on surt el valor). - Si l'agent té mode agent: que el deixi crear els fitxers ell mateix al repo. Que comprovin que apareixen
.clasp.jsoni.github/workflows/deploy.ymla l'explorador. - Si l'agent és només xat: que copiï els fitxers que torna i els creï al repo a mà (a l'explorador del Codespace o per github.com). El mètode és copiar i enganxar, com sempre.
- El missatge central: «Tant és quin agent tingueu. Uns ho fan sols, altres us donen el text per enganxar. El resultat és el mateix: dos fitxers nous al repo i una instrucció clara de quin secret afegir.»
No revisis el workflow línia a línia a la pantalla. No és una classe de YAML. N'hi ha prou que el fitxer hi sigui i que l'alumne entengui què fa (en fer push a
main: puja + publica). El detall el portarà l'agent; tu valides que existeix i que apunta al Script ID correcte.Vigila el Script ID. L'error més silenciós del dia: que el
.clasp.jsonapunti a un projecte equivocat (o a un de nou que crea l'agent) en lloc del projecte real lligat al seu full. Recorda'ls: el Script ID surt de Apps Script → Configuració del projecte, del seu projecte.
Bloc C — Els 3 clics que només pot fer l'alumne (30 min)
El bloc més humà del dia. L'agent ho munta gairebé tot, però hi ha 3 coses que NO pot fer per ells, perquè són del seu compte de Google/GitHub. Insisteix: l'agent et DIU on clicar; tu només dius «sí, soc jo».
Clic 1 — clasp login (autoritzar + enganxar el codi):
- Que executin el clasp login (l'agent els dona la comanda exacta). S'obre una autorització de Google: han de triar el compte correcte (el del seu full) i acceptar els permisos.
- Els torna un codi: l'han d'enganxar on toqui per completar el login. Això genera la credencial (.clasprc.json) al seu Codespace.
- Aquest valor és el que anirà al secret (Clic 3).
Clic 2 — activar l'API d'Apps Script:
- Anar a la configuració del seu Google (script.google.com/home/usersettings) i posar a ON l'interruptor de l'API d'Apps Script.
- «Sense això, clasp no pot tocar el vostre projecte. És un interruptor de seguretat del vostre compte: l'heu d'activar vosaltres.»
No et garanteixo la ruta exacta d'aquesta pantalla: Google la canvia. Tingues localitzat on és avui (ho hauràs vist a la preparació) i digues a classe que pot tenir un aspecte una mica diferent.
Clic 3 — afegir el secret a GitHub:
- El workflow llegeix la credencial des d'un secret del repo (p. ex. CLASPRC_JSON). Cal crear-lo amb el valor del login (Clic 1).
- Dues vies (agnòstic d'eina):
- A mà: repo → Settings → Secrets and variables → Actions → New repository secret → nom (exactament el que demana el workflow) i valor (la credencial).
- Amb el gh: l'agent pot proposar una comanda gh secret set ... (el gh ja està autenticat al Codespace). Però el valor surt del SEU login: l'agent no el pot inventar.
- El nom ha de COINCIDIR amb el que diu el workflow. Aquest és l'error número 1 del bloc.
Frase per repetir: «L'agent ho fa; tu autoritzes. Aquests 3 clics són del teu compte: són teus i de ningú més.»
(Pausa curta de 5 min després d'aquest bloc: ve la part més intensa.)
Bloc D — Provar la canonada (25 min)
El moment «uau». Aquí es veu si la cinta transportadora funciona. Fan un canvi pel flux de la S4 i miren si l'app es publica sola.
- Un canvi petit i visible, pel flux que ja dominen: crear una branca → fer un canvi mínim amb l'agent (un text, un color) → commit + push a la branca → obrir un PR → (opcional, ràpid) revisió amb IA → merge a
main. - Mirar la pestanya Actions (a github.com): just després del merge, hi apareix l'execució del workflow en marxa (rodeta groga). «Aquesta és la màquina treballant: està agafant el vostre codi i publicant-lo.»
- El moment «uau»: quan l'Action es posa verda, obrir el
/exec(o recarregar-lo) i veure el canvi publicat, sense haver tocat Apps Script. «Acabeu de desplegar fusionant. Mai més copiar a mà.» - Tanca la idea: «El que fa estona era copiar i enganxar a Apps Script ara ho fa la canonada, sola. Vosaltres només heu fusionat.»
Si surt verda a la primera, celebra-ho fort —però avisa que és poc habitual—. El més probable és que falli, i això és el Bloc E. No ho visquis com un fracàs: estava previst.
Bloc E — Quan l'Action falla: el bucle de depuració del CI/CD (25 min) EL COR DEL DIA
Gairebé sempre falla el primer cop. I està molt bé: és exactament el bucle de depuració que dominen des de la S2, ara aplicat al CI/CD. El teu paper de xarxa de seguretat és aquí.
- L'Action es posa VERMELLA. Primer missatge: «Tranquils. Això NO és un problema, és el procés. Mai una canonada surt bé a la primera. Ara la depurem com hem depurat sempre.»
- El bucle, idèntic al de sempre:
- Obrir l'execució vermella a Actions i buscar el log vermell (el pas que ha fallat).
- Enganxar a l'agent: el log de l'error + el workflow (
deploy.yml) + el.clasp.jsonsi cal. Demanar-li què falla i com arreglar-ho (prompt de l'Annex B). - Aplicar el canvi que proposa (al workflow, al secret, a l'API…). - Tornar a executar (re-run de l'Action, o un nou push petit) i mirar si ara surt verda. - Repetir fins a verd. «Cada volta del bucle us acosta. És el que ja sabeu fer.» - Els errors típics que veuràs (vegeu la taula de la secció 4 per a la solució):
- Nom del secret que no coincideix amb el del workflow.
- API d'Apps Script no activada (Clic 2 oblidat).
- Script ID equivocat o d'un altre projecte.
- Versió de l'acció/clasp desfasada.
- Permisos del
gho del secret. - Action verda però el/execno canvia (faltaclasp deploy, o apunta a un deployment diferent). - El teu rol: circula. Quan algú s'encalli més de 2–3 voltes, mira-li el log amb ell, identifica de quin dels errors típics es tracta i guia'l a enganxar el material correcte a l'agent. No els ho arreglis tu en silenci: que ho facin ells amb l'agent, perquè aprenguin el bucle.
Frase per repetir: «Si peta, és el bucle. Enganxa el log vermell + el workflow a l'agent, arregla, torna a executar.»
Celebra cada verd. Quan a algú li surt la primera execució verda després de depurar, fes-ho públic: «Ho ha aconseguit! I fixeu-vos que no ho he arreglat jo: ho ha depurat ell amb el seu agent. Així és com es treballa de debò.»
Bloc F — Protegeix main (10 min)
Ara que fusionar publica, main és sagrada de debò: la bloquem perquè ningú hi pugui pujar codi directament. Així l'única manera d'arribar a main (i, per tant, de publicar) és un pull request — esdevé impossible desplegar saltant-se la revisió de la S4. És una automatització més de la canonada: a banda de publicar, ara protegeix la versió bona.
- Qui ho fa: el mateix agent (té un punt per a això al prompt mestre), amb el
gho dient a l'alumne on clicar. Tu, xarxa de seguretat. - Com: una regla per a
mainque no permetipushdirecte, només via PR. Agithub.com: repo → Settings → Branches (o Rules) → nova regla per amain. - Repos privats: la protecció «clàssica» pot demanar pla de pagament. Fes servir un
ruleset(gratuït també en repos privats) o posa el repo en públic. L'agent ho sap; si s'encalla pels permisos, ho feu a mà a Settings. - Comprovació en directe (potent): que provin de fer
commit + pushdirecte amaindes del Codespace → els ho ha de rebutjar . «Heu vist? Ja no podeu trencarmainni sense voler. L'única porta és un PR.» - Alumne sol → NO exigeixis aprovació: que la regla obligui a PR i prou; no activeu «require approval», perquè un alumne sol no es pot aprovar el seu propi PR i quedaria bloquejat. (L'aprovació creuada és cosa d'equip, més endavant.)
Bloc G — Tancament i pont a la Fase 6 (10 min)
- Checklist en veu alta:
- [ ] Tinc el
.clasp.json(al meu Script ID) i el workflowdeploy.ymlal repo. - [ ] He fet els 3 clics meus:
clasp login, API d'Apps Script ON i el secret a GitHub. - [ ] He provat la canonada: branca → PR → merge → Action verda →
/execactualitzat sol. - [ ] He protegit
main: unpushdirecte és rebutjat; només s'hi entra via PR. - [ ] Si va fallar, l'he depurada amb l'agent (log + workflow → arreglar → tornar a executar).
- El missatge que s'enduen: «A partir d'avui, desplegar = fusionar. Ja no copieu res a Apps Script: fusioneu i ja està.»
- Pont a la Fase 6 (secció 7) en una frase il·lusionant.
4. On s'encallaran i com desencallar-los (xarxa de seguretat)
Recorda el marc general: si peta, és el bucle (enganxar el log + workflow a l'agent). Aquesta taula és perquè TU reconeguis de seguida de quin error es tracta i guiïs l'alumne al material correcte.
| Símptoma | Causa | Solució ràpida |
|---|---|---|
clasp login no es completa |
No han autoritzat al Google correcte, o no han enganxat el codi | Repetir el login triant el compte del seu full i acceptant els permisos; copiar el codi que torna i enganxar-lo on toqui. La credencial (.clasprc.json) ha de quedar generada. |
| L'Action falla amb error d'autorització/API | API d'Apps Script desactivada (Clic 2) | Anar a script.google.com/home/usersettings i posar a ON l'interruptor de l'API d'Apps Script. Tornar a executar. |
| L'Action no troba la credencial / falla al llegir el secret | Nom del secret ≠ el que diu el workflow | Que coincideixin exactament (p. ex. CLASPRC_JSON). Comprovar-ho al workflow i al secret (Settings → Secrets → Actions). |
| clasp publica però a un projecte que no és el seu | Script ID equivocat al .clasp.json (o un de nou que ha creat l'agent) |
Posar l'Script ID real del projecte lligat al seu full (Apps Script → Configuració del projecte → ID). |
| L'agent ha creat un projecte d'Apps Script nou | Ha confós el projecte lligat al full amb un de nou | Apuntar el .clasp.json al projecte lligat al full (el que publica el /exec que ja coneixen), no a un de nou. |
Error de permisos del gh o del secret |
El gh no té permís per crear secrets, o el repo no ho permet |
Crear el secret a mà (Settings → Secrets and variables → Actions → New repository secret). El gh és una comoditat, no una obligació. |
No es pot protegir main / la protecció demana pagament |
Repo privat amb protecció «clàssica» (de pagament) | Fer servir un ruleset (gratuït en privats) o posar el repo públic. L'agent pot crear el ruleset amb gh; si no té permisos, fer-ho a Settings → Rules. |
Action VERDA però el /exec NO canvia |
Falta clasp deploy, o apunta a un deployment diferent del que miren |
Comprovar que el workflow fa clasp deploy (no només push) i que actualitza el mateix deployment del /exec que tenen obert. L'agent ho ajusta amb el log. |
| Versió de l'acció/clasp desfasada | Una versió antiga ja no funciona igual | Demanar a l'agent que actualitzi la versió de l'acció/clasp del workflow. (No memoritzis versions: canvien; deixa que l'agent porti l'actual.) |
| El log els espanta (molt text vermell) | No saben on mirar | El que importa és el pas vermell i les últimes línies de l'error. «No cal entendre-ho tot: enganxa-ho a l'agent amb el workflow.» |
Truc de prevenció: abans del Bloc D, fes que cadascú confirmi en veu alta els 3 clics: «He fet login? L'API està ON? El secret es diu igual que al workflow?» Aquests tres punts són la meitat dels errors del dia.
5. Pla B de contingències
Si a algú no li funciona la canonada avui
- No és un mur: que segueixi publicant a mà (copiar
Codi.gsiIndex.htmla Apps Script i Implementar → Versió nova), com a la S1–S4. La canonada és la «millora pro», no un requisit per continuar el curs. - Ho pot acabar a casa amb l'agent: té el prompt mestre (Annex B) i el de depuració; el bucle és el mateix sense pressa de classe.
Si un agent no té mode agent (només xat)
- Flux copiar-enganxar de tota la vida: l'agent dona els fitxers (
.clasp.json,deploy.yml) i les comandes; l'alumne els crea i executa ell. El resultat és idèntic; només canvia qui prem les tecles.
Si cap agent funciona
- Enganxar el prompt mestre i els logs a Gemini en una pestanya (que ja dominen de sessions anteriors) i copiar el resultat al Codespace/GitHub. El mètode —demanar, entendre, depurar— es manté.
Si la connexió de l'aula va justa
- Tot va pel núvol (Codespaces, Actions, Google). Si va lent, prioritza que tothom munti els fitxers i faci els 3 clics; provar i depurar la canonada es pot acabar a casa. El que no pot faltar és entendre el flux merge → deploy.
Objectiu mínim del dia: que tothom surti entenent que desplegar = fusionar i amb els fitxers + els 3 clics fets. Provar i depurar fins al verd, si avui no hi arriben, a casa amb l'agent.
6. Errors pedagògics a evitar (tu, professor)
- No ho converteixis en una classe de DevOps. Res d'explicar YAML línia a línia, ni la teoria del CI/CD, ni runners, ni matrius. Avui: l'agent munta, l'alumne autoritza i depura. Prou.
- No ensenyis clasp manual com a hàbit. Insisteix: desplegar = fusionar; clasp viu dins de l'Action. Si els ensenyes a fer
clasp pusha la terminal, es saltaran les branques/PR/revisió de la S4 i agafaran el vici de publicar a mà. - No els ho arreglis tu en silenci. La temptació serà gran (és tècnic). Però el valor és que ells depurin amb el seu agent. Tu guies cap al material correcte (log + workflow); l'agent i l'alumne ho resolen.
- Deixa que l'AGENT faci la feina. El teu paper és xarxa de seguretat, no protagonista a la pantalla. Demana-ho i entén-ho, no ho facis a mà.
- Recorda que els 3 clics són irreductiblement humans.
clasp login, l'API i el secret són del compte de l'alumne: l'agent diu on clicar, però no pot clicar per ells. Repeteix-ho: «l'agent et diu; tu autoritzes.» - Normalitza que falli. «La canonada falla la primera vegada gairebé sempre. No és un error vostre: és el procés. La depurem com sempre.» Si tu estàs tranquil, ells també.
7. Ponts amb la resta del curs
D'on venen — Sessió 4 (branques, PRs i revisió amb IA)
- Ja dominen branca → PR → revisió amb IA → merge, però publicar era a mà (copiar a Apps Script). Sabien treballar sense trencar
maini revisar abans de fusionar. - Avui posem l'última peça: el merge publica sol. Tot el que van aprendre a la S4 agafa el sentit complet: fusionar ja no és «un pas més», és desplegar. Per això clasp viu dins de l'Action: per protegir aquell flux (branques, PR, revisió) i no caure en el vici de publicar a mà.
Cap a on van — Fase 6 (online i INFINITA)
- La Fase 6 és online i no s'acaba mai: és un bucle de crear apps que es repeteix tant com vulguin. Amb tot el que ja saben —el mètode del context (S3), l'agent i el copiar-enganxar, les branques i PRs (S4), la revisió amb IA i ara el desplegament automàtic (S5)— ja tenen tot el necessari per fer apps de debò, una rere l'altra, sols.
- Deixa'ls amb ganes: «Heu muntat una canonada que publica sola. Ja no us falta res: tenim context, agent, branques, revisió i desplegament automàtic. A la Fase 6 no aprendreu una eina nova: fareu el que sabeu fer, una app i una altra i una altra, sense que ningú us porti de la mà. Aquest curs no acaba: comença.»
Annex A — Frases per a la pissarra
- «Desplegar = fusionar.»
- «clasp viu dins de l'Action, no a la teva terminal.»
- «L'agent ho fa; tu autoritzes.»
- «3 clics són teus: login, API d'Apps Script i el secret.»
- «Si peta, és el bucle: log + workflow → agent → torna a executar.»
- «La canonada falla la primera vegada. És el procés, no un error.»
- «El secret s'ha de dir EXACTAMENT igual que al workflow.»
- «Action verda però el /exec no canvia? Falta
clasp deploy.» - «La munto una vegada; després publica sola.»
- «
mainbloquejada: l'única porta és un PR.»
Annex B — Prompts per copiar-enganxar
Recordatori: no t'inventis versions ni rutes exactes (clasp, accions de GitHub i pantalles de Google canvien sovint). El prompt demana a l'agent que porti l'última versió i que expliqui cada pas. Si l'agent té mode agent, que faci la feina; si no, que doni els fitxers i comandes per enganxar.
Prompt MESTRE (per muntar la canonada):
Ets el meu agent i m'ajudes a muntar un desplegament automàtic per a la meva app
d'Apps Script. Explica-m'ho EN CATALÀ i senzill, pas a pas, com a principiant.
CONTEXT:
- La meva app és d'Apps Script: Codi.gs (motor) + Index.html (cara) + un full de Google.
- El meu Script ID és: <ENGANXO AQUÍ EL MEU SCRIPT ID>
- Treballo en un repositori de GitHub, dins d'un Codespace, i ja sé fer
branques → PR → merge.
VULL: que CADA COP QUE ES FUSIONI un canvi a `main`, l'app es publiqui SOLA al /exec,
SENSE que jo toqui mai Apps Script ni executi clasp a mà a la terminal.
FES (o dona'm els fitxers i comandes per enganxar, si no pots executar):
1. Un fitxer `.clasp.json` que apunti al MEU Script ID i als meus fitxers.
2. Un workflow `.github/workflows/deploy.yml` que, EN FER PUSH A `main`,
instal·li clasp, llegeixi la credencial des d'un SECRET del repo,
faci `clasp push` (puja el codi) i `clasp deploy` (publica una versió nova).
Fes servir l'ÚLTIMA versió de l'acció/clasp i digues-me quina és.
3. Digue'm CLARAMENT:
- Quina comanda he d'executar JO per al `clasp login` (l'he d'autoritzar amb
el meu Google i enganxar el codi).
- Que he d'activar l'API d'Apps Script al meu compte i ON es fa.
- Quin SECRET he d'afegir a GitHub (NOM exacte i d'on surt el VALOR), i la
comanda `gh secret set ...` si la puc fer servir.
4. PROTEGEIX la branca `main`: una regla (un `ruleset`) perquè NO es pugui fer
`push` directe a `main`, només via pull request. Si el repo és privat i la
protecció clàssica demana pagament, fes servir un `ruleset` (gratuït en privats).
Fes-ho amb el `gh` si pots; si no, digue'm on clicar.
Recorda'm que hi ha 3 coses que NOMÉS puc fer JO perquè són del meu compte:
el login, activar l'API i posar el secret. Tu em dius on clicar; jo autoritzo.
Prompt de DEPURACIÓ (quan l'Action falla):
La meva GitHub Action de desplegament ha FALLAT (s'ha posat vermella). Ajuda'm a
arreglar-la com un bucle de depuració. Explica-m'ho EN CATALÀ i senzill.
T'enganxo:
1. El LOG vermell de l'Action (el pas que ha fallat i les últimes línies de l'error).
2. El meu workflow `.github/workflows/deploy.yml`.
3. El meu `.clasp.json` (si cal).
Digue'm:
- QUÈ falla exactament i PER QUÈ (en una frase).
- Si és el NOM del secret, l'API d'Apps Script no activada, el Script ID,
la VERSIÓ de l'acció/clasp, els PERMISOS, o que falta `clasp deploy`.
- COM ho arreglo, pas a pas. Si has de canviar un fitxer, torna-me'l SENCER.
Acaba dient-me què he de fer per TORNAR A EXECUTAR l'Action i comprovar si ja va bé.
--- AQUÍ ENGANXO EL LOG, EL WORKFLOW I EL .clasp.json ---
Com fer servir aquests prompts a classe: el mestre és del Bloc B (muntar). El de depuració és del Bloc E (i del Pla B a casa). Tots dos són agnòstics d'eina: si l'agent no té mode agent, demana-li que torni els fitxers i les comandes i l'alumne els enganxa. Recorda sempre: demana-ho i entén-ho, no ho facis a mà.
Font editable: sessio_5/guia_professor_sessio5.md · aquesta pàgina web es genera automàticament des del Markdown.