chore(github): Aggiunti file di github (actions e templates)

This commit is contained in:
Maicol Battistini 2021-07-30 18:58:14 +02:00
parent 7ce18cdbab
commit 284367307a
No known key found for this signature in database
GPG Key ID: 4FDB0F87CDB1D34A
5 changed files with 313 additions and 0 deletions

96
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,96 @@
---
currentMenu: contribuire
---
# Contribuire
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community.
Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione, ...
Non serve essere degli esperti programmatori per aiutarci! :smile_cat:
Leggi le seguenti sezioni per scoprire come ti consigliamo di procedere.
Se ti serve un aiuto, crea una issue su GitHub.
## Linee guida
Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone.
### Standard del codice
Per lo standard ufficiale riguardante i nomi e le strutture da utilizzare, visita la sezione [Standard](STANDARD.md).
### Codice di condotta
Per il momento non abbiamo adottato un vero e proprio codice di condotta, ma ti chiediamo di essere il più civile possibile nel comunicare con gli altri per questo progetto.
### Stile del codice
Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo stile del codice:
- [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)
- [EditorConfig](https://editorconfig.org)
PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità.
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
La configurazione può essere trovata nel file [.editorconfig](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
## Prima contribuzione
Sei insicuro su cosa potresti lavorare per contribuire al progetto?
Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare.
## Problemi di sicurezza
Se trovi un problema di sicurezza, NON aprire una issue. Inviaci un'email all'indirizzo `info at openstamanager dot com`.
Per capire se hai individuato un problema di sicurezza, prova a farti queste domande:
* Posso accedere a qualcosa a cui non dovrei avere accesso?
* Posso disabilitare qualcosa per altre persone?
Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza.
Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email.
## Segnalare un bug
Se hai individuato un bug e desideri segnalarlo, apri una nuova issue provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/ISSUE_TEMPLATE.md).
Se vuoi suggerire una miglioramento di qualche tipo oppure una nuova funzionalità, sentiti libero di aprire una issue apposita dove spieghi dettagliatamente la modifica che vorresti, la sua utilità e il suo funzionamento generale
## Pull Request
Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nuova funzionalità, apri una nuova Pull Request provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
## Community
Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo <http://www.openstamanager.com/forum/>.
Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente.
## Testing
Il progetto presenta, a partire dalla versione 2.4.2, un insieme di test per facilitare il controllo sul corretto funzionamento del gestionale.
E' innanzitutto necessario configurare correttamente l'ambiente locale per l'esecuzione dei test:
- Impostare l'URL del web server locale nel file `codeception.yml` per Codeception
```yml
modules:
config:
WebDriver:
url: http://localhost/openstamanager
```
- Scaricare (ChromeDriver)[https://sites.google.com/a/chromium.org/chromedriver/getting-started], rendendolo eseguibile da riga di comando (su Windows, aggiungerlo al PATH)
E' quindi possibile eseguire i tests avviando dapprima il server ChromeDriver e poi Codeception in shell differenti:
```bash
chromedriver --url-base=/wd/hub
php codecept.phar run --steps
```

38
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,38 @@
## Comportamento richiesto
Descrivi il comportamento che ti aspetti dal progetto.
## Comportamento attuale
Qual è il comportamento attuale, e come ti aspetti che venga migliorato?
## Possibile soluzione
[Non obbligatorio] Hai suggerimenti su come risolvere il bug o individuarne le cause?
## Passi per riprodurre il comportamento
[Per i bug] Descrivi dettagliatamente i singoli passi per riprodurre il malfunzionamento.
1.
2.
3.
Eventuale codice rilevante:
```php
Se serve, aggiungi qui il codice che vuoi farci testare
```
Eventuali log relativi (cartella **logs/**):
```
Se presenti, aggiungi qui i log relativi al malfunzionamento
```
## Contesto
Inserisci le informazioni riguardanti il tuo ambiente di esecuzione. Può essere utile per individuare problemi riproducibili solo con condizioni specifiche.
* Modulo:
* Versione del progetto:
* Versione PHP:
* Tipo di server:

22
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,22 @@
## Descrizione
Includi un sommario dei cambiamenti introdotti, con il relativo contesto.
Elenca anche le eventuali dipendenze aggiuntive richieste per questa modifica.
Risolve: #(issue)
## Tipologia
Rimuovi le opzioni non rilevanti.
- [ ] Bug fix (cambiamenti minori che risolvono una issue)
- [ ] Nuova funzionalità (cambiamenti minori che aggiungono una nuova funzionalità)
- [ ] Cambiamento maggiore (fix o funzionalità che richiede una revisione prima di essere pubblicata)
- [ ] Questo cambiamenti richiede un aggiornamento della documentazione
# Checklist
- [ ] Il codice segue le linee guida del progetto
- [ ] Ho commentato il codice, in particolare nelle parti più complesse
- [ ] Ho aggiornato di conseguenza la documentazione (se presente)
- [ ] Il codice non genera warnings

28
.github/STANDARD.md vendored Normal file
View File

@ -0,0 +1,28 @@
# Standard del codice
Lo standard prevede l'utilizzo di nomi in italiano per la maggior parte dei contenuti, esclusi i sistemi di gestione interna del gestionale (tabelle `zz_*` e codici particolarmente rilevanti).
I nomi delle variabili devono seguire uno standard comune, che prevede la sostituzione degli spazi con `_` (*underscore*) e la rimozione delle lettere accentate a favore di quelle semplici.
Le variabili devono possedere nomi completi e chiari.
Esempio:
- Partita IVA -> `partita_iva` nel database, `$partita_iva` in PHP
## Database
Gli identificatori devono iniziare per `id_*` e i flag per `is_*`.
E' fondamentale ricordarsi di impostare correttamente le **FOREIGN KEYS** delle relative tabelle.
Ci sono inoltre alcuni campi utilizzati in modo riccorrente all'interno del gestionale:
- `default boolean NOT NULL DEFAULT 0` per i valori di default, non cancellabili e con modificabilità limitata
- `predefined boolean NOT NULL DEFAULT 0` per i valori predefiniti in selezioni o gruppi
- `visible boolean NOT NULL DEFAULT 1` per nascondere gli elementi
- `deleted_at timestamp NULL DEFAULT NULL,` per segnare un elemento come eliminato
Per tabelle non presenti all'interno della lista ufficiale di OpenSTAManager (file **update/tables.php**), è necessario inoltre provvedere all'aggiunta dei seguenti campi:
- `updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`
- `created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP`
## Note
Malgrado una buona parte del codice ufficiale non segua completamente queste buone pratiche, è consigliato l'implementazione di queste linee guida per nuove funzioni e strutture mentre il sistema di base viene lentamente standardizzato.

129
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,129 @@
name: OpenSTAManager CI
on:
workflow_dispatch
jobs:
tests:
runs-on: ubuntu-18.04
strategy:
matrix:
python-version: [3.9]
php-version: ['7.4']
steps:
- uses: actions/checkout@v2
# - name: Set up PHP ${{ matrix.php-version }}
# uses: shivammathur/setup-php@v2
# with:
# php-version: ${{ matrix.php-version }}
# extensions: zip, mbstring, pdo_mysql, mysql, dom, xsl, openssl, intl, curl, soap, gd
- name: Setup PHP
run: |
sudo apt install libapache2-mod-php7.4
sudo sed -i 's,^post_max_size =.*$,post_max_size = 32M,' /etc/php/7.4/apache2/php.ini
sudo sed -i 's,^upload_max_filesize =.*$,upload_max_filesize = 32M,' /etc/php/7.4/apache2/php.ini
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install SeleniumBase
uses: actions/checkout@v2
with:
repository: seleniumbase/SeleniumBase
path: selenium-base
- name: Configure SeleniumBase
run: |
cd selenium-base
python setup.py install
- name: Install Chrome and Firefox
run: |
sudo apt install google-chrome-stable
sudo apt-get install firefox
- name: Check the console scripts interface
run: |
seleniumbase
sbase
- name: Install chromedriver and geckodriver (Firefox Webdriver)
run: |
seleniumbase install chromedriver
seleniumbase install geckodriver
- name: Make sure pytest is working
run: |
echo "def test_1(): pass" > nothing.py
pytest nothing.py
- name: Make sure nosetests is working
run: |
echo "def test_2(): pass" > nothing2.py
nosetests nothing2.py
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v2
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install Composer dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Use NPM and Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install NPM and compile assets
run: |
yarn install
npm run build-OSM
- name: Copy OSM to www root
run: |
sudo cp -R /home/runner/work/openstamanager/openstamanager /var/www/html/
sudo chmod -R 0777 /var/www/html/openstamanager
sudo rm /var/www/html/openstamanager/.htaccess
- name: Check out test repository
uses: actions/checkout@v2
with:
repository: devcode-it/openstamanager-tests
path: python-tests
- name: Install Python dependencies
run: |
cd python-tests/
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Restart apache
run: sudo service apache2 restart
- name: Restart MySQL
run: sudo service mysql restart
- name: Init test configuration
run: |
curl http://localhost/openstamanager/
sudo cat /var/log/apache2/access.log
cd python-tests/
echo -ne "{\n \"login\": {\n \"password\": \"adminadmin\",\n \"username\": \"admin\"\n },\n \"database\": {\n \"host\": \"localhost\",\n \"user\": \"root\",\n \"pass\": \"root\",\n \"name\": \"osm\"\n },\n \"server\": \"http://localhost/openstamanager/\",\n \"browser\": \"firefox\",\n \"headless\": true\n}" > config.json
pytest Init.py
- name: Execute tests
run: |
cd python-tests/
pytest tests