Compare commits

...
4 Commits
Author SHA1 Message Date
Fabio 34a5d4177b Merge lavoro/cartella-progetti 2026-10-13 09:53:14 +02:00
FabioandClaude Opus 5.5 0705b6c0e7 progetti.sh e Claude chiedono dove scaricare, niente piu' ~/Work/workspace/oto
La cartella dei progetti era fissata in comune.sh su ~/Work/workspace/oto,
cioe' la cartella di chi ha scritto gli script, e il CLAUDE.md diceva di
clonare li' anche questo repository. Adesso la sceglie la persona:
progetti.sh la vuole con --in (o CARTELLA_PROGETTI), la chiede se puo' e
altrimenti si ferma; il CLAUDE.md ha la regola di chiederla sempre prima
di scaricare.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:48:41 +02:00
Fabio 042c550443 Merge lavoro/onboard-mac 2026-10-12 11:57:05 +02:00
FabioandClaude Opus 5.5 696b28083e onboard su Mac: brew nel PATH, e OpenVPN Connect lo installa la persona
Note di Giorgio, primo onboard su Mac: dopo Homebrew brew non e' nel PATH
di un terminale nuovo (aws non si trova), e brew install --cask
openvpn-connect chiede la password del Mac. comune.sh ora trova brew da
solo in /opt/homebrew o /usr/local.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:54:45 +02:00
4 changed files with 81 additions and 17 deletions
+33 -10
View File
@@ -27,7 +27,7 @@ La spiegazione per le persone sta in
com'è**: `cd` nel percorso vero della cartella su quel PC (quello in cui
l'hai scaricata, che conosci solo tu: la pagina per le persone non lo
scrive apposta) e `./configura.sh`, in un blocco di codice, per esempio
`cd "/c/Users/mario/Work/workspace/oto/_OTO_IT_onboard" && ./configura.sh`.
`cd "/c/Users/mario/oto/_OTO_IT_onboard" && ./configura.sh`.
Su Windows il percorso va nella forma di Git Bash (`/c/Users/...`), non
`C:\...`. Tu lanci tutto il resto: installazioni, `verifica.sh`,
`progetti.sh`, i comandi di sola lettura.
@@ -39,7 +39,15 @@ La spiegazione per le persone sta in
Lo dici e prosegui.
5. **Non copiare file da altri PC** e non proporlo: se a un progetto manca un
segreto, va messo su AWS SSM da un amministratore.
6. **Ogni volta che le chiedi qualcosa, le dici dove lo trova o dove lo
6. **Dove scaricare lo chiedi sempre, prima di scaricare.** Questo
repository e i progetti vanno nella cartella che sceglie la persona, non
in una che decidi tu: non esiste un posto di default (fino al 13/10/2026
le istruzioni dicevano `~/Work/workspace/oto`, che era la cartella di chi
le ha scritte). Chiedile in quale cartella vuole i progetti, proponendo
al massimo un esempio (sotto la sua cartella utente), e usa quella. Se
l'ha già scelta per questo repository, chiedile se i progetti vanno
accanto a lui, e non darlo per scontato.
7. **Ogni volta che le chiedi qualcosa, le dici dove lo trova o dove lo
crea.** Non "inserisci la chiave AWS", ma "la crei nella console AWS: il
tuo nome in alto a destra → Security credentials → …". Indirizzo, menu e
pulsante, con i nomi come li vede sullo schermo (in inglese, se la pagina
@@ -99,12 +107,22 @@ spiegala in una riga la prima volta.
- **Mac**: prima Homebrew. Il suo installatore chiede la password del Mac,
quindi quel comando lo lancia la persona nel Terminale:
`/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`.
Poi tu: `brew install git awscli` e `brew install --cask docker`.
**Homebrew non si mette da solo nel `PATH`** (sui Mac Apple Silicon sta
in `/opt/homebrew`): senza, in un terminale nuovo `brew` e `aws` non si
trovano. Lo aggiungi tu, una volta:
`echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile`
(su un Mac Intel sta in `/usr/local` e il passo non serve). Poi tu:
`eval "$(/opt/homebrew/bin/brew shellenv)" && brew install git awscli`
e `brew install --cask docker`. Se un'installazione `--cask` chiede la
password del Mac, la lancia la persona nel Terminale. Gli script di
questo repository trovano `brew` anche senza il `PATH` sistemato, il
terminale della persona no.
- Docker Desktop va **aperto una volta** a mano e le condizioni accettate:
finché non lo si fa, `docker info` non risponde.
2. **Questo repository sul PC**, se ci stai parlando da un link e non da
dentro la cartella: `git clone https://git.oto-farm.com/admin/_OTO_IT_onboard.git
~/Work/workspace/oto/_OTO_IT_onboard` (è pubblico, non ha segreti) e da lì
dentro la cartella. Prima le chiedi dove metterlo (regola 6), poi:
`git clone https://git.oto-farm.com/admin/_OTO_IT_onboard.git
"<cartella scelta>/_OTO_IT_onboard"` (è pubblico, non ha segreti) e da lì
continui.
3. **Niente login su AWS né su Gitea nel browser** (deciso il 07/10/2026):
le password sono già le definitive e l'MFA di AWS lo attiva chi
@@ -131,9 +149,11 @@ spiegala in una riga la prima volta.
non va mai tenuta "intanto che funziona": tutto quello che la persona fa
su AWS risulterebbe fatto dall'altro.
5. **VPN**, solo se su LastPass ha la scheda `OTO > VPN HK nome.cognome` (chiediglielo). Prima
installi tu OpenVPN Connect: su Windows
`winget install -e --id OpenVPNTechnologies.OpenVPNConnect`, su Mac
`brew install --cask openvpn-connect`. Poi lei, un passo alla volta: apre la scheda VPN su LastPass e scarica il file
va installato OpenVPN Connect: su Windows lo installi tu,
`winget install -e --id OpenVPNTechnologies.OpenVPNConnect`; su Mac
`brew install --cask openvpn-connect` chiede la password del Mac (installa
un componente di sistema), quindi lo lancia la persona nel Terminale e tu
le dai il comando. Poi lei, un passo alla volta: apre la scheda VPN su LastPass e scarica il file
`.ovpn` allegato; apre OpenVPN Connect → *Upload File* (o *Import
Profile* → *File*) → *Browse* → il file in *Download*; scrive utente e
password della VPN dalla stessa scheda, spunta *Save password*, *Connect*.
@@ -146,8 +166,11 @@ spiegala in una riga la prima volta.
elenco preciso di cosa manca e a chi chiederlo. Controlla anche che git
entri su Gitea con il token giusto e che la chiave AWS sia la sua
nell'account di OTO, non solo un utente con lo stesso nome.
8. **`./progetti.sh`**: scarica i progetti che la persona vede su Gitea (lo
lanci tu con i nomi: `./progetti.sh nome1 nome2`). Poi, in ogni progetto:
8. **`./progetti.sh`**: scarica i progetti che la persona vede su Gitea.
Prima le chiedi in quale cartella (regola 6), poi lo lanci tu con la
cartella e i nomi: `./progetti.sh --in "<cartella scelta>" nome1 nome2`.
Senza `--in` lo script non scarica niente: un posto di default non c'è
apposta. Poi, in ogni progetto:
`./start.sh` per i progetti con pannello, `bin/local-init.sh` per Drupal e
WordPress. Il resto lo spiega il `CLAUDE.md` di quel progetto.
+1 -1
View File
@@ -33,7 +33,7 @@ La spiegazione completa è su
```bash
./configura.sh # chiede quello che serve, una cosa per volta
./verifica.sh # dice verde o rosso per ogni accesso
./progetti.sh # scarica i progetti a cui hai accesso
./progetti.sh # chiede dove, e scarica i progetti a cui hai accesso
```
Si possono rilanciare quante volte si vuole: quello che è già a posto non
+8 -1
View File
@@ -17,7 +17,6 @@ CHIAVE_SSH="$HOME/.ssh/oto_ed25519"
# PRODUCTION_SSH_KEY in project.conf.sh): sono la stessa chiave, perche' sui
# server l'amministratore mette quella del profilo Gitea, cioe' questa.
CHIAVI_SSH_PROGETTI="$HOME/.ssh/oto_staging_ed25519 $HOME/.ssh/oto_production_ed25519"
CARTELLA_PROGETTI="${CARTELLA_PROGETTI:-$HOME/Work/workspace/oto}"
# I server, con i nomi che usano gli script dei progetti. Staging e la
# produzione nuova stanno su rete privata: senza VPN non rispondono. Le
@@ -51,6 +50,14 @@ titolo () { echo ; echo "${GRASSETTO}$*${FINE}" ; }
c_e () { command -v "$1" > /dev/null 2>&1 ; }
# Su Mac Homebrew non si mette da solo nel PATH: senza, git e aws installati
# con brew sembrano mancare anche se ci sono.
if ! c_e brew ; then
for B in /opt/homebrew/bin/brew /usr/local/bin/brew ; do
[ -x "$B" ] && eval "$("$B" shellenv)" && break
done
fi
token_gitea () {
[ -s "$TOKEN_GITEA_FILE" ] && tr -d '[:space:]' < "$TOKEN_GITEA_FILE"
}
+39 -5
View File
@@ -2,11 +2,14 @@
#
# SCARICA I PROGETTI A CUI HAI ACCESSO SU GITEA.
#
# ./progetti.sh # elenca e chiede quali scaricare
# ./progetti.sh nome1 nome2 # scarica questi
# ./progetti.sh # chiede dove e quali scaricare
# ./progetti.sh --in CARTELLA nome1 nome2 # scarica questi in CARTELLA
#
# Li mette in $CARTELLA_PROGETTI (di solito ~/Work/workspace/oto). Un progetto
# gia' scaricato non si tocca. Vedi solo i repository che l'amministratore ti
# La cartella la sceglie la persona, ogni volta: non c'e' un posto di default
# (fino al 13/10/2026 era ~/Work/workspace/oto, cioe' la cartella di chi ha
# scritto lo script). Si passa con --in o con CARTELLA_PROGETTI; senza, lo
# script la chiede, e se non puo' chiederla si ferma. Un progetto gia'
# scaricato non si tocca. Vedi solo i repository che l'amministratore ti
# ha dato: se ne manca uno, e' da chiedere a lui.
# Esce 1 se un progetto chiesto non e' stato scaricato.
@@ -14,6 +17,34 @@ set -u
cd "$(dirname "$0")" || exit 1
. ./comune.sh
if [ "${1:-}" = "--in" ] ; then
if [ -z "${2:-}" ] ; then
male "--in vuole una cartella: ./progetti.sh --in CARTELLA nome1 nome2"
exit 1
fi
CARTELLA_PROGETTI="$2"
shift 2
fi
CARTELLA_PROGETTI="${CARTELLA_PROGETTI:-}"
if [ -z "$CARTELLA_PROGETTI" ] ; then
if [ ! -t 0 ] ; then
male "manca la cartella in cui scaricare: ./progetti.sh --in CARTELLA nome1 nome2"
exit 1
fi
read -r -p "In quale cartella scarico i progetti? " CARTELLA_PROGETTI
if [ -z "$CARTELLA_PROGETTI" ] ; then
male "nessuna cartella scelta: non scarico niente"
exit 1
fi
fi
# La tilde fra virgolette la shell non la espande, e su Windows la persona
# puo' scrivere C:\Users\...: in Git Bash cygpath la porta nella forma /c/...
case "$CARTELLA_PROGETTI" in
"~") CARTELLA_PROGETTI="$HOME" ;;
"~/"*) CARTELLA_PROGETTI="$HOME/${CARTELLA_PROGETTI#\~/}" ;;
esac
c_e cygpath && CARTELLA_PROGETTI="$(cygpath -u "$CARTELLA_PROGETTI")"
if [ -z "$(token_gitea)" ] ; then
male "token Gitea mancante: lancia prima ./configura.sh"
exit 1
@@ -76,7 +107,10 @@ else
fi
ERRORI=0
mkdir -p "$CARTELLA_PROGETTI"
if ! mkdir -p "$CARTELLA_PROGETTI" ; then
male "non riesco a creare $CARTELLA_PROGETTI"
exit 1
fi
titolo "Scarico in $CARTELLA_PROGETTI"
for NOME in $SCELTI ; do
# Confronto esatto, non una regex: il nome lo scrive la persona.