You've already forked library-registry
mirror of
https://github.com/arduino/library-registry.git
synced 2025-11-23 03:22:23 +03:00
Merge pull request #6 from arduino/check-workflows
Enhance CI system for checking GitHub Actions workflows
This commit is contained in:
73
.github/.yamllint.yml
vendored
Normal file
73
.github/.yamllint.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
# See: https://yamllint.readthedocs.io/en/stable/configuration.html
|
||||
# The code style defined in this file is the official standardized style to be used in all Arduino projects and should
|
||||
# not be modified.
|
||||
# Note: Rules disabled solely because they are redundant to Prettier are marked with a "Prettier" comment.
|
||||
|
||||
rules:
|
||||
braces:
|
||||
level: error
|
||||
forbid: non-empty
|
||||
min-spaces-inside: -1 # Prettier
|
||||
max-spaces-inside: -1 # Prettier
|
||||
min-spaces-inside-empty: -1 # Prettier
|
||||
max-spaces-inside-empty: -1 # Prettier
|
||||
brackets:
|
||||
level: error
|
||||
forbid: non-empty
|
||||
min-spaces-inside: -1 # Prettier
|
||||
max-spaces-inside: -1 # Prettier
|
||||
min-spaces-inside-empty: -1 # Prettier
|
||||
max-spaces-inside-empty: -1 # Prettier
|
||||
colons: disable # Prettier
|
||||
commas: disable # Prettier
|
||||
comments: disable # Prettier
|
||||
comments-indentation: disable # Prettier
|
||||
document-end: disable # Prettier
|
||||
document-start: disable
|
||||
empty-lines: disable # Prettier
|
||||
empty-values: disable
|
||||
hyphens: disable # Prettier
|
||||
indentation: disable # Prettier
|
||||
key-duplicates: disable # Prettier
|
||||
key-ordering: disable
|
||||
line-length:
|
||||
level: warning
|
||||
max: 120
|
||||
allow-non-breakable-words: true
|
||||
allow-non-breakable-inline-mappings: true
|
||||
new-line-at-end-of-file: disable # Prettier
|
||||
new-lines: disable # Prettier
|
||||
octal-values:
|
||||
level: warning
|
||||
forbid-implicit-octal: true
|
||||
forbid-explicit-octal: false
|
||||
quoted-strings: disable
|
||||
trailing-spaces: disable # Prettier
|
||||
truthy:
|
||||
level: error
|
||||
allowed-values:
|
||||
- "true"
|
||||
- "false"
|
||||
- "on" # Used by GitHub Actions as a workflow key.
|
||||
check-keys: true
|
||||
|
||||
yaml-files:
|
||||
# Source: https://github.com/ikatyang/linguist-languages/blob/master/data/YAML.json (used by Prettier)
|
||||
- ".clang-format"
|
||||
- ".clang-tidy"
|
||||
- ".gemrc"
|
||||
- ".yamllint"
|
||||
- "glide.lock"
|
||||
- "*.yml"
|
||||
- "*.mir"
|
||||
- "*.reek"
|
||||
- "*.rviz"
|
||||
- "*.sublime-syntax"
|
||||
- "*.syntax"
|
||||
- "*.yaml"
|
||||
- "*.yaml-tmlanguage"
|
||||
- "*.yaml.sed"
|
||||
- "*.yml.mysql"
|
||||
|
||||
ignore: |
|
||||
/.git/
|
||||
58
.github/workflows/check-workflows.yml
vendored
Normal file
58
.github/workflows/check-workflows.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
name: Check Workflows
|
||||
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/*.yaml"
|
||||
- ".github/workflows/*.yml"
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/*.yaml"
|
||||
- ".github/workflows/*.yml"
|
||||
schedule:
|
||||
# Run every Tuesday at 8 AM UTC to catch breakage resulting from changes to the JSON schema.
|
||||
- cron: "0 8 * * TUE"
|
||||
workflow_dispatch:
|
||||
repository_dispatch:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download JSON schema for GitHub Actions workflows
|
||||
id: download-schema
|
||||
uses: carlosperate/download-file-action@v1.0.3
|
||||
with:
|
||||
# See: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/github-workflow.json
|
||||
file-url: https://json.schemastore.org/github-workflow
|
||||
location: ${{ runner.temp }}/github-workflow-schema
|
||||
file-name: github-workflow.json
|
||||
|
||||
- name: Get week number for use in cache key
|
||||
id: get-date
|
||||
run: |
|
||||
echo "::set-output name=week-number::$(date --utc '+%V')"
|
||||
|
||||
- name: Load dependencies cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-ajv-cli-${{ steps.get-date.outputs.week-number }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-ajv-cli-
|
||||
|
||||
- name: Install JSON schema validator
|
||||
run: sudo npm install --global ajv-cli
|
||||
|
||||
- name: Validate GitHub Actions workflows
|
||||
run: |
|
||||
# See: https://github.com/ajv-validator/ajv-cli#readme
|
||||
ajv validate \
|
||||
--strict=false \
|
||||
-s "${{ steps.download-schema.outputs.file-path }}" \
|
||||
-d "./.github/workflows/*.{yml,yaml}"
|
||||
78
.github/workflows/check-yaml.yml
vendored
Normal file
78
.github/workflows/check-yaml.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
name: Check YAML
|
||||
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/check-yaml.yml"
|
||||
- ".yamllint*"
|
||||
# Source: https://github.com/ikatyang/linguist-languages/blob/master/data/YAML.json (used by Prettier)
|
||||
- "**/.clang-format"
|
||||
- "**/.clang-tidy"
|
||||
- "**/.gemrc"
|
||||
- "**/glide.lock"
|
||||
- "**.yml"
|
||||
- "**.mir"
|
||||
- "**.reek"
|
||||
- "**.rviz"
|
||||
- "**.sublime-syntax"
|
||||
- "**.syntax"
|
||||
- "**.yaml"
|
||||
- "**.yaml-tmlanguage"
|
||||
- "**.yaml.sed"
|
||||
- "**.yml.mysql"
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/check-yaml.yml"
|
||||
- ".yamllint*"
|
||||
- "**/.clang-format"
|
||||
- "**/.clang-tidy"
|
||||
- "**/.gemrc"
|
||||
- "**/glide.lock"
|
||||
- "**.yml"
|
||||
- "**.mir"
|
||||
- "**.reek"
|
||||
- "**.rviz"
|
||||
- "**.sublime-syntax"
|
||||
- "**.syntax"
|
||||
- "**.yaml"
|
||||
- "**.yaml-tmlanguage"
|
||||
- "**.yaml.sed"
|
||||
- "**.yml.mysql"
|
||||
schedule:
|
||||
# Run every Tuesday at 8 AM UTC to catch breakage caused by changes to yamllint.
|
||||
- cron: "0 8 * * TUE"
|
||||
workflow_dispatch:
|
||||
repository_dispatch:
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: ${{ matrix.configuration.name }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
matrix:
|
||||
configuration:
|
||||
- name: Generate problem matcher output
|
||||
# yamllint's "github" output type produces annotated diffs, but is not useful to humans reading the log.
|
||||
format: github
|
||||
# The other matrix job is used to set the result, so this job is configured to always pass.
|
||||
continue-on-error: true
|
||||
- name: Check formatting
|
||||
# yamllint's "colored" output type is most suitable for humans reading the log.
|
||||
format: colored
|
||||
continue-on-error: false
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Check YAML
|
||||
continue-on-error: ${{ matrix.configuration.continue-on-error }}
|
||||
run: |
|
||||
yamllint \
|
||||
--config-file "${{ github.workspace }}/.github/.yamllint.yml" \
|
||||
--format ${{ matrix.configuration.format }} \
|
||||
.
|
||||
2
.github/workflows/spell-check.yml
vendored
2
.github/workflows/spell-check.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
uses: codespell-project/actions-codespell@master
|
||||
with:
|
||||
# In the event of a false positive, add the problematic word, in all lowercase, to a comma-separated list here:
|
||||
ignore_words_list:
|
||||
ignore_words_list: ""
|
||||
builtin: clear,informal,en-GB_to_en-US
|
||||
check_filenames: true
|
||||
check_hidden: true
|
||||
|
||||
Reference in New Issue
Block a user