0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lezione

Sviluppare GitHub Actions personalizzate

Impari a creare Actions personalizzate e riutilizzabili con JavaScript o Docker per estendere le funzionalità di GitHub Actions.

Sviluppare GitHub Actions personalizzate è una lezione CI/CD with GitHub Actions & DevOps Pipelines gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CI/CD with GitHub Actions & DevOps Pipelines, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

Estendere GitHub Actions

Avete bisogno di un'attività specifica nel vostro workflow che GitHub Actions non offre già? Oppure avete una logica complessa che desiderate riutilizzare?

Le custom action consentono di creare strumenti riutilizzabili per i workflow. Sono simili a mini-programmi che svolgono un'attività specifica, adattati alle vostre esigenze.

Il potere della personalizzazione

Le custom action offrono diversi vantaggi alle pipeline CI/CD:

  • Riutilizzabilità: scrivere una volta e utilizzare in molti workflow e repository.
  • Standardizzazione: garantire processi coerenti in tutta l'organizzazione.
  • Incapsulamento: nascondere la logica complessa dietro un'interfaccia semplice.
  • Integrazione: interagire con strumenti o API interni specifici.

JavaScript o Docker

GitHub Actions supporta due modalità principali per creare custom action:

  • JavaScript Actions: scritte in JavaScript (o TypeScript), vengono eseguite direttamente sulla macchina runner. Sono rapide e semplici per le attività elementari.
  • Docker Container Actions: incapsulano l'ambiente e il codice in un'immagine Docker. Sono ideali per le action che richiedono dipendenze o linguaggi specifici.

Definire la propria action

Ogni custom action richiede un file action.yml nella directory principale. Questo file YAML funge da manifest e descrive a GitHub Actions la vostra action:

  • name e description: cosa fa la vostra action.
  • inputs: i dati accettati dalla vostra action.
  • outputs: i dati prodotti dalla vostra action.
  • runs: come viene eseguita la vostra action (ad esempio tramite un file JavaScript o un'immagine Docker).

Esempio di una semplice action JS

Vediamo una semplice action JavaScript. Vi serviranno un file action.yml e un file index.js. Il file action.yml definisce i metadati dell'action e l'ambiente di esecuzione.

# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'World'
outputs:
  greeting-message:
    description: 'The greeting message generated'
runs:
  using: 'node16'
  main: 'index.js'

Scrivere il codice JavaScript

Il file index.js contiene la logica effettiva. Utilizziamo il toolkit @actions/core per ottenere gli input e impostare gli output.

Provate a eseguire questo semplice frammento JavaScript per capire concettualmente come funzionano input e output, anche al di fuori di un workflow completo:

// index.js (simplified for demonstration)
const core = require('@actions/core');

try {
  const name = core.getInput('who-to-greet');
  const message = `Hello, ${name}!`;
  console.log(message);
  core.setOutput('greeting-message', message);
} catch (error) {
  core.setFailed(error.message);
}

// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
  const name = inputName || 'World';
  const message = `Hello from runnable JS, ${name}!`;
  return message;
}

console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());

Nozioni di base sulle Docker action

Per gli ambienti più complessi, le Docker container action sono potenti. Includono un Dockerfile che definisce l'immagine del container e riunisce tutte le dipendenze necessarie.

Il vostro action.yml farà riferimento a questa immagine, indicando a GitHub Actions di crearla ed eseguirla.

# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'Docker'
outputs:
  greeting-message:
    description: 'The greeting message from Docker'
runs:
  using: 'docker'
  image: 'Dockerfile'

L'ambiente della vostra action

Il Dockerfile specifica l'immagine di base, installa le dipendenze e definisce l'entry point della vostra action. In questo modo l'action viene eseguita in un ambiente coerente e controllato.

# Dockerfile
FROM alpine:3.16

LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"

# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

Creare script per le Docker action

All'interno del container Docker, lo script entrypoint (ad esempio entrypoint.sh) riceve gli input come variabili d'ambiente (con prefisso INPUT_). Imposta gli output scrivendo nel file specificato dalla variabile d'ambiente $GITHUB_OUTPUT.

#!/bin/sh -l

# entrypoint.sh

echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"

Buone pratiche per le action

Quando sviluppate custom action, considerate questi suggerimenti per creare strumenti solidi e facilmente manutenibili:

  • Gestione delle versioni: utilizzare il versionamento semantico (ad esempio v1, v2) per garantire la stabilità.
  • Test: testare accuratamente l'action in locale e nei workflow.
  • Gestione degli errori: implementare messaggi di errore chiari e gestire i fallimenti in modo controllato.
  • Sicurezza: sanificare gli input ed evitare di esporre dati sensibili.
  • Documentazione: fornire istruzioni chiare per l'utilizzo nel README.

Verifica del tipo di action

Dovete creare una custom GitHub Action che richiede una specifica libreria Python non preinstallata nei runner GitHub Actions standard. Quale tipo di action è generalmente più adatto a questo scenario?

Riepilogo sulle custom action

Abbiamo visto come estendere GitHub Actions creando custom action. Avete appreso i due tipi principali, le action JavaScript e le Docker container action, nonché il ruolo fondamentale del file action.yml. Abbiamo inoltre illustrato come definire input, output e logica principale per ciascun tipo, insieme alle buone pratiche di sviluppo.

Le custom action sono strumenti potenti per favorire la riutilizzabilità e la standardizzazione nelle pipeline CI/CD.

Domande Frequenti

La lezione «Sviluppare GitHub Actions personalizzate» è gratuita?

Sì — il testo completo di «Sviluppare GitHub Actions personalizzate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CI/CD with GitHub Actions & DevOps Pipelines, passa a CoddyKit PRO. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

Cosa imparerò in «Sviluppare GitHub Actions personalizzate»?

Impari a creare Actions personalizzate e riutilizzabili con JavaScript o Docker per estendere le funzionalità di GitHub Actions. Eserciti CI/CD with GitHub Actions & DevOps Pipelines con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CI/CD with GitHub Actions & DevOps Pipelines?

Non è richiesta alcuna esperienza precedente. CI/CD with GitHub Actions & DevOps Pipelines su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Sviluppare GitHub Actions personalizzate»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CI/CD with GitHub Actions & DevOps Pipelines?

Sì. Ogni lezione CI/CD with GitHub Actions & DevOps Pipelines include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Sviluppare GitHub Actions personalizzate
  2. Runner self-hosted on-premise
  3. Integrazione con sistemi aziendali
  4. Composite action e pubblicazione nel Marketplace
← Torna a CI/CD with GitHub Actions & DevOps Pipelines