-Cleaned up CI targets:

* Restricted Linux CI build to only run on changes to code,
  translations, software lists, and build scripts.
* Restricted Windows/macOS CO to only run on changes to code and build
  scripts.  They provide nothing over Linux for the other stuff.
* Added plugin properties and controller file validation to the "hash"
  workflow.
* Added a workflow for building documentation, so pull requests that
  affect documentation will at least get a basic check in advance.

-plugins/autofire: Bumped version as configuration format has changed.
This commit is contained in:
Vas Crabb 2021-10-22 02:46:52 +11:00
parent 3b57161f33
commit 33f5ab983d
8 changed files with 135 additions and 8 deletions

View File

@ -1,6 +1,26 @@
name: CI (Linux)
on: [push, pull_request]
on:
push:
paths:
- '.github/**'
- '3rdparty/**'
- 'hash/**'
- 'language/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
pull_request:
paths:
- '.github/**'
- '3rdparty/**'
- 'hash/**'
- 'language/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
jobs:
build-linux:

View File

@ -1,6 +1,22 @@
name: CI (macOS)
on: [push, pull_request]
on:
push:
paths:
- '.github/**'
- '3rdparty/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
pull_request:
paths:
- '.github/**'
- '3rdparty/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
jobs:
build-macos:

View File

@ -1,6 +1,22 @@
name: CI (Windows)
on: [push, pull_request]
on:
push:
paths:
- '.github/**'
- '3rdparty/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
pull_request:
paths:
- '.github/**'
- '3rdparty/**'
- 'scripts/**'
- 'src/**'
- 'COPYING'
- 'makefile'
jobs:

30
.github/workflows/docs.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Build documentation
on:
push:
paths:
- 'docs/**'
pull_request:
paths:
- 'docs/**'
jobs:
build-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y librsvg2-bin latexmk python3-pip python3-sphinx texlive texlive-formats-extra texlive-science
pip3 install sphinxcontrib-svg2pdfconverter
- name: Build HTML
run: make -C docs html
- name: Build PDF
run: make -C docs latexpdf
- uses: actions/upload-artifact@master
with:
name: mame-docs-${{ github.sha }}
path: |
docs/build/html
docs/build/latex/MAME.pdf

View File

@ -1,12 +1,18 @@
name: XML validation
name: XML/JSON validation
on:
push:
paths:
- '.github/**'
- 'ctrlr/*'
- 'hash/*'
- 'plugins/**'
pull_request:
paths:
- '.github/**'
- 'ctrlr/*'
- 'hash/*'
- 'plugins/**'
jobs:
validate:
@ -16,8 +22,12 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libxml2-utils
sudo apt-get install -y libxml2-utils python3-jsonschema
- name: Validate (controller configuration)
run: for x in ctrlr/*.cfg ; do xmllint --noout "$x" ; done
- name: Validate (HSI)
run: for x in hash/*.hsi ; do xmllint --noout "$x" ; done
- name: Validate (XML)
- name: Validate (software list)
run: for x in hash/*.xml ; do xmllint --noout --valid "$x" ; done
- name: Validate (plugin properties)
run: for x in plugins/*/plugin.json ; do jsonschema -i "$x" plugins/plugin.schema ; done

View File

@ -2,7 +2,7 @@
-- copyright-holders:Jack Li
local exports = {
name = 'autofire',
version = '0.0.3',
version = '0.0.4',
description = 'Autofire plugin',
license = 'The BSD 3-Clause License',
author = { name = 'Jack Li' } }

View File

@ -2,7 +2,7 @@
"plugin": {
"name": "autofire",
"description": "Autofire plugin",
"version": "0.0.3",
"version": "0.0.4",
"author": "Jack Li",
"type": "plugin",
"start": "false"

35
plugins/plugin.schema Normal file
View File

@ -0,0 +1,35 @@
{
"type": "object",
"properties": {
"plugin": {
"type": "object",
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z][0-9A-Za-z_]*$"
},
"description": {
"type": "string"
},
"version": {
"type": "string"
},
"author": {
"type": "string"
},
"type": {
"type": "string",
"pattern": "^(plugin|library)$"
},
"start": {
"type": "string",
"pattern": "^(true|false)$"
}
},
"additionalProperties": false,
"required": [ "name", "description", "version", "author", "type" ]
}
},
"additionalProperties": false,
"required": [ "plugin" ]
}