Fai il deploy su Square Cloud da GitHub Actions
A ogni push, release o avvio manuale, l’action ufficiale installa la CLI di Square Cloud sul runner, la verifica e invia il tuo codice alla tua applicazione.
Deploy a ogni push in tre passaggi
Due valori salvati nel tuo repository e un file di workflow. Da lì in poi, ogni push su main invia il codice alla tua applicazione e la riavvia.
- 1
Salva una chiave API come secret
Crea una chiave API nelle impostazioni di sicurezza del tuo account e salvala nel repository come secret SQUARECLOUD_API_KEY.
- 2
Salva l’ID dell’applicazione
Copia l’ID dalla pagina dell’applicazione nella dashboard e salvalo come variabile del repository SQUARECLOUD_APP_ID.
- 3
Aggiungi il workflow
Fai il commit del file qui sotto come .github/workflows/deploy.yml. Il prossimo push su main fa il deploy della tua applicazione.
name: Deployon: push: branches: [main]jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} command: commit ${{ vars.SQUARECLOUD_APP_ID }} --restartMantieni lo step di checkout
Senza
actions/checkout, il runner non ha file da inviare.Ferma? Parte comunque
--restartriavvia l’applicazione dopo l’upload e la avvia se era ferma. Senza, i nuovi file entrano in uso al prossimo riavvio.L’ID può stare nella cartella
Senza ID,
commitlegge la rigaID=del filesquarecloud.appnella cartella, se esiste, quindi bastacommit --restart.
Cosa fa l’action sul runner
Quattro passaggi, in quest’ordine, su ogni runner. Se uno fallisce, fallisce anche lo step, così un deploy che non è avvenuto non appare mai verde.
- 1
Scarica la build giusta
Sceglie la release della CLI per il sistema e il processore del runner: la più recente o la versione che fissi tu. I runner self-hosted la tengono nella loro tool cache.
- 2
La verifica prima di installarla
Lo SHA-256 del download viene confrontato con il
checksums.txtdella release. Un file che non corrisponde non viene mai installato né avviato. - 3
Passa la chiave senza salvarla
La chiave viene mascherata nei log e impostata come
SQUARECLOUD_API_KEYper il resto del job. Niente viene scritto sul disco del runner. - 4
Avvia il tuo comando
squarecloudseguito dal tuocommandparte inworkdir. Se il comando fallisce, fallisce anche lo step.
Un workflow per ogni modo di rilasciare
Quattro schemi dalla documentazione dell’action, pronti da copiare. Le righe evidenziate sono quelle che cambiano rispetto al workflow qui sopra.
Staging e produzione
I push su
mainvanno in produzione e quelli sudevelopin staging, ognuno sulla propria applicazione.- Il pulsante Run workflow nella scheda Actions fa il deploy del branch che scegli
concurrencymette in fila i deploy dello stesso branch invece di sovrapporli
.github/workflows/deploy.ymlname: Deployon: push: branches: [main, develop] workflow_dispatch:concurrency: group: deploy-${{ github.ref_name }}jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} command: commit ${{ github.ref_name == 'main' && vars.PRODUCTION_APP_ID || vars.STAGING_APP_ID }} --restartPiù applicazioni in un repository
Ogni cartella è un’applicazione a sé. Una matrice fa il deploy di tutte fianco a fianco, un job per cartella.
workdirindirizza ogni deploy alla sua cartellafail-fast: falseevita che un deploy fallito annulli gli altri
.github/workflows/deploy.ymlname: Deployon: push: branches: [main]jobs: deploy: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - folder: bot app: ${{ vars.BOT_APP_ID }} - folder: website app: ${{ vars.WEBSITE_APP_ID }} steps: - uses: actions/checkout@v7 - uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} workdir: ${{ matrix.folder }} command: commit ${{ matrix.app }} --restartDeploy alla pubblicazione di una release
Solo il codice di una release pubblicata arriva all’applicazione.
- I push e le release in bozza non fanno il deploy
.github/workflows/deploy.ymlname: Deployon: release: types: [published]jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} command: commit ${{ vars.SQUARECLOUD_APP_ID }} --restartVariabili d’ambiente dai secret
Tieni token e password nei secret di GitHub e inviali all’applicazione prima di ogni deploy.
env setaggiunge o aggiorna solo le variabili che elenca, e il riavvio dopo il commit le carica.- Dalla CLI 3.1.1, i valori con spazi o caratteri come
$,&,;o|arrivano esattamente come salvati nel secret - Con la CLI 3.1.0, racchiudi tu ogni valore tra apici singoli
- Passare i secret tramite
envtiene i loro valori fuori dallo script che GitHub avvia
jobs.deploy.steps- uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} install-only: true- name: Update environment variables run: squarecloud app env set --app "$APP_ID" "DISCORD_TOKEN=$DISCORD_TOKEN" "DATABASE_URL=$DATABASE_URL" env: APP_ID: ${{ vars.SQUARECLOUD_APP_ID }} DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} DATABASE_URL: ${{ secrets.DATABASE_URL }}- run: squarecloud commit ${{ vars.SQUARECLOUD_APP_ID }} --restart- Dalla CLI 3.1.1, i valori con spazi o caratteri come
Cinque input
Solo token è obbligatorio. Gli altri hanno valori predefiniti che puoi lasciare così.
tokenObbligatorio- La tua chiave API di Square Cloud. Tienila in un secret, mai nel file del workflow.
command- Il comando della CLI da avviare, senza il prefisso
squarecloud, per esempiocommit --restart. Senza, l’action installa solo la CLI. versionPredefinitolatest- La versione della CLI da installare:
latest, oppure 3.1.0 o successive. Trovare l’ultima versione non chiama l’API di GitHub, quindi il suo limite di richieste non è mai d’intralcio. workdirPredefinito.- La cartella in cui parte il comando, relativa alla radice del repository.
install-onlyPredefinitofalse- Installa solo la CLI e imposta la chiave, così gli step successivi del job possono avviare
squarecloudda soli.
Fissa la versione della CLI
Fa il deploy della cartella bot con la CLI 3.1.1 a ogni avvio, qualunque sia l’ultima release.
jobs.deploy.steps- uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} version: 3.1.1 workdir: bot command: commit ${{ vars.SQUARECLOUD_APP_ID }} --restartAvvia più comandi
Con install-only, la CLI e la sua chiave restano disponibili per gli step successivi: build, deploy e poi lo stato in JSON.
jobs.deploy.steps- uses: squarecloudofc/github-action@v2 with: token: ${{ secrets.SQUARECLOUD_API_KEY }} install-only: true- run: npm ci && npm run build- run: squarecloud commit ${{ vars.SQUARECLOUD_APP_ID }} --restart- run: squarecloud app status ${{ vars.SQUARECLOUD_APP_ID }} --json
Qualsiasi runner di GitHub
L’action è testata sui runner Linux, Windows e macOS di GitHub, su x64 e arm64. Funzionano anche i tuoi runner self-hosted, purché la loro versione supporti le action node24.
Linux
x64 e arm64 sui runner ospitati da GitHub. I tuoi runner possono essere anche x86 o ARMv7.
- Testata su ubuntu-latest e ubuntu-24.04-arm
Windows
x64 e arm64 sui runner ospitati da GitHub. I tuoi runner possono essere anche x86.
- Testata su windows-latest e windows-11-arm
macOS
Intel e Apple silicon, sia sui runner ospitati da GitHub sia sui tuoi.
- Testata su macos-latest
La tua chiave resta segreta
L’action tratta la chiave API come la password che è.
Mascherata nei log
La chiave viene registrata come secret prima che parta qualsiasi cosa, quindi appare come *** in ogni riga di log.
Mai sul disco
La CLI la legge da SQUARECLOUD_API_KEY. Non viene salvata sul runner né passata dalla riga di comando.
Limitata a un job
Gli step successivi dello stesso job possono usarla, gli altri job no. Avvia le action di cui non ti fidi in un job separato.
Una chiave per repo
Dai a ogni repository la sua chiave, così puoi revocarne una senza toccare le altre.
Una CLI pensata per i workflow
Ogni comando che l’action avvia è un comando della CLI di Square Cloud, e la CLI è fatta per funzionare senza terminale.
Conferma con -y
I comandi che modificano o eliminano dati chiedono conferma. Un workflow non può rispondere, quindi aggiungi
-y: senza, il comando termina con codice 1 e non cambia nulla.JSON per gli script
I comandi che stampano dati accettano
--json, per un output che lo step successivo può leggere.Traccia ogni richiesta
Imposta
SQUARECLOUD_DEBUG: 1nell’envdello step per registrare metodo, percorso, stato e durata di ogni richiesta all’API, mai header o body.Scegli cosa inviare
commitesclude ciò che elencasquarecloud.ignore, con la sintassi di gitignore.node_modules,.gite i lockfile restano fuori, a meno che tu non li riaggiunga con!.
Usi già @v2?
@v2 ora punta alla nuova versione, quindi il tuo workflow continua a funzionare senza modifiche. Ecco cosa è cambiato.
workdirviene applicato. Fino alla 2.1.2 veniva ignorato e i comandi partivano dalla radice del repository.- La chiave non viene più passata dalla riga di comando né salvata sul runner.
- I runner Windows, macOS e arm64 sono supportati.
- Il download della CLI viene verificato con i suoi checksum, e il nuovo input
versionne fissa la versione. - Trovare l’ultima CLI non chiama più l’API di GitHub, quindi il limite di richieste dell’API non la riguarda.
- L’action gira su Node 24.
La CLI 3.1 esclude anche i lockfile dagli upload. Per continuare a inviare il tuo, aggiungi !package-lock.json (o il tuo lockfile) a squarecloud.ignore.
Un piano per ogni fase del tuo progetto
Inizia in piccolo e scala quando ne hai bisogno, senza contratti di permanenza.
Hobby
Per validare idee, bot e progetti personali
A partire da 12,49 BRL/mese ≈ 2,00 €
- 1 GB di RAM
- 1 vCPU
- Fino a 4 progetti
- Scala fino a 2 GB nello stesso piano
Standard
ConsigliatoPer la produzione, con database e dominio personalizzato
A partire da 44,99 BRL/mese ≈ 7,20 €
- 4 GB di RAM
- 4 vCPU
- Fino a 16 progetti
- Scala fino a 8 GB nello stesso piano
Pro
Per l'alta scala, con snapshot giornalieri delle applicazioni e analytics avanzati
A partire da 124,99 BRL/mese ≈ 20,00 €
- 12 GB di RAM
- 6 vCPU
- Fino a 48 progetti
- Scala fino a 24 GB nello stesso piano
4,9 su 5 · 402 recensioni su Google + TrustpilotTrustpilot