diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..8329e28 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,42 @@ +name: Deploy Conference Web site + +on: + push: + branches: + - master +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v2 + with: + path: main + - name: Setup node + uses: actions/setup-node@v1 + with: + node-version: 10.x + - name: Install hexo dependencies + run: | + cd main + npm install + - name: Generate website + run: | + cd main + npm run generate + - name: Checkout gh-pages + uses: actions/checkout@v2 + with: + path: gh-pages-pre + ref: gh-pages + fetch-depth: 0 + - name: Publish to gh-pages + run: | + mv main/public gh-pages + cp -r gh-pages-pre/.git gh-pages/ + cd gh-pages + git config --local user.email "bot@grusp.org" + git config --local user.name "Bot" + git add . + git commit -m "Auto Deploy at `date +"%Y-%m-%d %H:%M"`" + git push origin gh-pages diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ca96be --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +Thumbs.db +db.json +*.log +node_modules +public/ +.deploy*/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2117f2d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,32 @@ +image: node:12.18.3 + +cache: + paths: + - node_modules/ + +# created for initial tests; not used +# deploy: +# stage: deploy +# before_script: +# - npm install netlify-cli -g +# - npm install +# script: +# - npx hexo clean && npx hexo g +# - "LIVE_URL=$(netlify deploy --json --dir=public/ -s $NETLIFY_SITE_ID -a $NETLIFY_AUTH_TOKEN | grep -oP '(?<=\"deploy_url\": \")[^\"]*')" +# - "curl -X POST -H 'Content-type: application/json' --data '{\"text\": \"$CI_PROJECT_NAME deployato con successo dal branch $CI_COMMIT_REF_NAME, $LIVE_URL\"}' $SLACK_WEBHOOK_URL" +# only: +# - branches +# when: manual + +deploy_prod: + stage: deploy + before_script: + - npm install netlify-cli -g + - npm install + script: + - npm run generate + - "LIVE_URL=$(netlify deploy --json --prod --dir=public/ -s $NETLIFY_SITE_ID -a $NETLIFY_AUTH_TOKEN | grep -oP '(?<=\"url\": \")[^\"]*')" + - "curl -X POST $SLACK_WEBHOOK_URL -H 'Content-type: application/json' --data '{\"text\": \"Una nuova versione del sito è stata pubblicata con successo\"}'" + only: + refs: + - master diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6294d9 --- /dev/null +++ b/README.md @@ -0,0 +1,1792 @@ +# Hexo/Bulma Grusp Themes + + +* [Installazione](#installazione) + * [Requirements](#requirements) + * [Setup](#setup) + * [Componenti aggiuntivi](#componenti-aggiuntivi) +* [Informazioni generali](#informazioni-generali) + * [Generare il sito](#generare-il-sito) +* [Configurazione](#configurazione) + * [Importante](#importante) + * [GitHub Pages](#github-pages) + * [Configurazione generale del sito](#configurazione-generale-del-sito) + * [Tema](#tema) + * [Configurazione generale del tema](#configurazione-generale-del-tema) +* [Conferenze online](#conferenze-online) +* [Contenuti](#contenuti) + * [Info base sulla conferenza](#info-base-sulla-conferenza) + * [Home page e componenti](#home-page-e-componenti) + * [Footer](#footer) + * [Welcome](#welcome) + * [Welcome/about](#welcomeabout) + * [Welcome/coc](#welcomecoc) + * [Welcome/scholarships](#welcomescholarships) + * [Welcome/where](#welcomewhere) + * [Welcome/cfp](#welcomecfp) + * [Talks](#talks) + * [Schedule](#schedule) + * [La logica](#la-logica) + * [Workshop](#workshop) + * [Sponsor](#sponsor) + * [Pagina "sponsor"](#pagina-sponsor) + * [Componente "sponsors"](#componente-sponsors) + * [Tickets](#tickets) + + +## Installazione + +### Pre-requirements + +I prerequisiti all'installazione di Hexo sono: + +* node.js 12.18.3 (LTS) + * npm +* git + +La [documentazione di Hexo](https://hexo.io/docs/) include le istruzioni per installare entrambi (Windows, Mac, Linux) e naturalmente le istruzioni per installare Hexo stesso. + +### Setup + +`npm install` + +## Componenti aggiuntivi + +Oltre al setup standard di Hexo sono stati aggiunti i seguenti plugins: + +* **Bulma** CSS framework +* hexo-filter-responsive-images +* hexo-render-pug +* hexo-renderer-markdown-it-plus +* hexo-renderer-sass +* markdown-it +* node-sass + +Essi vengono installati automaticamente dal setup come dipendenze. + +## Informazioni generali + +Il file di configurazione del sito si trova nella root directory del repo; i file di configurazione dei temi nelle rispettive directory (in `themes/[directory del tema]/`). + +Gli asset comuni (icone, immagini di sfondo delle testate, etc.) si trovano nei singoli temi. + +I contenuti (testi) invece si trovano in `/source/_data/`; gli asset specifici della singola conferenza (le foto degli speaker, i loghi dei partner, etc) si trovano in `/source/_data/img/`. Per i dettagli vedere [Contenuti](#contenuti). + +### Generare il sito + +Per generare il sito in locale: + +`npm run generate` + +Il comando svuota la directory `/public`, genera tutti i contenuti e li pubblica appunto in `/public`. + +Per testare in locale si può usare la funzionalità di Hexo che avvia un miniserver: + +`npm run server` + +La variante `watch` serve a lavorare sui contenuti senza dover riavviare continuamente il "server" di Hexo: + +`npm run watch` + +Il server ricarica dinamicamente i contenuti ogni volta che un file viene salvato. In questo modo si può lavorare sulla propria macchina con un'anteprima in tempo reale delle modifiche che si fanno. È necessario riavviare il server / rigenerare il sito solo se si fanno modifiche alla configurazione del tema o alla struttura dei template. + +## Configurazione + +### Importante + +Ci deve essere **almeno un post**, anche se vuoto, in `/source/_posts`, altrimenti **non viene generato l'`index` del sito** + +### GitHub Pages + +#### Build and deploy + +Il repository contiene lo script per la generazione del sito: `/.github/workflows/deploy.yml` che contiene le impostazioni per generare il sito e pubblicarlo su GitHub Pages. + +La "action" specificata nello script, che scatta quando si fa `push` su `master`, genera le pagine e gli assets e li pubblica in `gh-pages`. + +**Attenzione**: il file `CNAME` che specifica il dominio custom per GitHubPages deve essere incluso in `/source`, in modo che Hexo lo includa fra i file generati durante il deploy. Ovvero, in questo modo il file verrà copiato nel root directory di destinazione, e GitHub Pages potrà fare il redirect usando il dominio specificato. + +#### 404 page + +Quando si lavora in locale, la pagina 404 / Not Found viene generata, ma non utilizzata. Per utilizzarla sul server, seguire le [indicazioni fornite da GitHub](https://help.github.com/en/github/working-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site). + +È sufficiente specificare `404.html` (la pagina viene generata nel root directory del sito). + +### Configurazione generale del sito + +La configurazione generale si trova nel file `_config.yml` nella root directory del repo. + +Qui si definiscono: + +* il **tema** (cfr. capitolo successivo "Tema") +* i dati per schema.org e OpenGraph +* la visualizzazione (o no) della *breadcrumbs* nelle pagine interne +* l'URL del sito +* i formati delle date +* i parametri di configurazione standard di Hexo (separati da un commento "############# standard config: do not change") + +#### OpenGraph + +Tra i dati "interessanti" ci sono `title`, `description`, etc.; vengono usati per generare i microdata (json-ld) nelle varie pagine. vedere anche la [documentazione di Hexo](https://hexo.io/docs/configuration.html) + +``` +# Site / OG +type: website +title: "ruby day 2020" +description: "Ruby Day 2020, Verona, Italy" +# separate keywords by comma, no spaces +keywords: conference,software conference,ruby,ruby on rails +author: GrUSP +language: en +timezone: 'Europe/Rome' +# si può sostituire con il logo della conferenza (`img/conference-logo.png`) +image: 'img/grusp-logo-full.png' +open_graph: + # si può sostituire con il logo della conferenza (`img/conference-logo.png`) + image: 'img/grusp-logo-full.png' +``` + +C'è anche la sezione dove inserire gli account social: + +``` +twitter: + twitter_id: rubydayIT +fb: + fb_id: RubyDayIT +``` + +**NB** c'è una issue di Hexo per cui + +``` +open_graph: + image: 'img/grusp-logo-full.png' +``` + +a volte non viene interpretato correttamente, open_graph.js non genera tutti i tag `og:`, e in OpenGraph non risulta l'immagine. Stiamo monitorando la cosa... + +#### Breadcrumbs + +``` +# Breadcrumbs +breadcrumb: + display: true +``` + +Basta cambiare `true` con `false` per nascondere le *breadcrumbs* in tutte le pagine + +#### URL del sito + +Es.: `url: https://grusp.isunder.review/` è il valore predefinito nel repo originale, ed è l'URL completo del sito di staging + +Viene usato per generare FQURLs dagli URI relativi. + +#### Formati data + +Usati sia nel frontend, sia per generare i valori dei tag `