GitHub Actions: CRON gratuiti (o quasi)

GitHub Actions è un potente strumento che può aiutarti ad automatizzare il tuo flusso di lavoro. In questo articolo, ti mostreremo come utilizzare GitHub Actions per configurare un processo CRON gratuito o quasi.

Prima di cominciare, ci tengo a sottolineare la nota relativa al costo dei CRON utilizzati. Le GitHub Actions sono gratuite entro certi limiti legate al tuo profilo e tipo di abbonamento. Prima di abusarne ti invito a verificarne i limite della soglia gratuita.

GitHub Actions

Per creare una propria GitHub Actions dovete come prima cosa accedere al vostro repository presente su GitHub. Se ancora non lo avete e volete crearne uno, vi invito a visionare questa guida Github - Guida rapida e semplice alla creazione di un repository.

All’interno del proprio repository abbiamo il tab GitHub Actions ed una volta effettuato l’accesso non dovremmo fare altro che selezionare New Workflow.

Template

Prima di mostravi degli esempi è necessario capire come viene definito il template “minimale” di una Actions.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
name: [ACTION_NAME]

on:
  schedule:
    - cron: [ACTION_CRON]
     
jobs:  
  [JOB_NAME]:
    runs-on: [JOB_OS]
    
    steps:
      [LIST_OF_STEPS]     

In tutto questo, la parte degna di maggiore attenzione riguarda il valore di [ACTION_CRON] in quanto bisogna “calcolarlo” nel seguente modo:

[minute] [hour] [day_of_the_month] [month] [day_of_the_week]

Valori consentiti

  • [minute] : 0 - 59 or *
  • [hour] : 0 - 23 or *
  • [day_of_the_month] : 1 - 31 or *
  • [month] : 1 - 12 or *
  • [day_of_the_week] : 0 - 6 ( 0 is Sunday, 6 is Saturday) or *

Esempi

1
2
3
4
*/15 * * * * --> Every 15 minutes
* * * * 0 --> Every Minutes on Sunday
* * * 2 0 --> Every Minutes on Sunday on February
* 8 25 12 * --> Every minute past hour 8 on day-of-month 25 in December

Ora -dopo questa breve infarinatura- andremo a vedere due esempi pratici dove tramite curl chiameremo degli endpoint HTTP di una nostra API (in questo caso utilizzo quelli di jsonplaceholder)

http-get.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
name: "HTTP Get Action"
 
on:
  schedule:
    - cron:  '*/15 * * * *'
    
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
 
jobs:
  http-get:
    runs-on: ubuntu-latest
    steps:
    - name: Call HTTP Get EndPoint
      run: |
        curl -X GET "https://jsonplaceholder.typicode.com/posts/1"

http-post.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
name: "HTTP Post Action"
 
on:
  schedule:
    - cron:  '*/15 * * * *'

  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'    
 
jobs:
  http-post:
    runs-on: ubuntu-latest
    steps:
    - name: Call HTTP POST EndPoint
      run: |
        curl -X POST "https://jsonplaceholder.typicode.com/posts" -H 'Content-Type: application/json' -d '{"title": "foo","body":"bar","userId": "1"}'

Video Blog

Se vuoi muoverti al meglio nel mondo delle GitHub Actions per vivere l’articolo appena proposto in forma testuale, ti invito a vedere il relativo video sul mio canale YouTube!

Ti piace il video? Metti un like ed iscriviti al canale per non perdere i prossimi aggiornamenti!