SPASE Monthly Errors Only Validation #56
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is a basic workflow to help you get started with Actions | |
name: SPASE Monthly Errors Only Validation | |
# Controls when the action will run. | |
# Use cron to run on the first of the month. | |
on: | |
schedule: | |
- cron: "0 0 1 * *" | |
# Triggers the workflow on push | |
# on: push | |
# push: | |
# branches: [ main ] | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
# This workflow contains a single job called "validate" | |
validate: | |
name: Validation and referential check | |
# The type of runner that the job will run on | |
runs-on: ubuntu-latest | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Install spase-resource-tools | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14' | |
- run: npm install | |
- name: Get current date | |
id: date | |
run: echo "::set-output name=date::$(date +'%Y-%m-%d')" | |
- name: Install SPASE-Resource-tools | |
run: npm install -g spase-resource-tools | |
# Checks out a copy of your repository on the ubuntu-latest machine | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
# Prepare for logs | |
- name: Prepare Log directory | |
run: mkdir -p logs | |
# Check descriptions for schema conformance | |
- name: Schema compliance ... | |
run: | | |
echo "Repo: ${{ github.repository }}" > logs/validate.log | |
echo "" >> logs/validate.log | |
echo "Schema compliance ..." >> logs/validate.log | |
spase-validate -e -r . >> logs/validate.log | |
# Check references | |
- name: Referential checks ... | |
run: | | |
echo "" >> logs/validate.log | |
echo "Referential checks ..." >> logs/validate.log | |
spase-refcheck -e -u -i -r . >> logs/validate.log | |
# Upload logs | |
- name: Upload log artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: validate-log | |
path: logs/validate.log | |
# Check if log contains any INVALID items | |
- name: Check for invalid items | |
run: | | |
if [ -f logs/validate.log ]; then | |
set +e | |
echo -n "Number of invalid files: " | |
# Turn off exit code - we handle it differently | |
grep -c "^ INVALID:" logs/validate.log | |
if [ `grep -c "^ INVALID:" logs/validate.log` -eq 0 ]; then | |
echo "No FAILURE found: $?" | |
exit 0 | |
else | |
echo "FAILURE found: $?" | |
exit 1 | |
fi | |
set -e | |
fi | |
- name: Send mail | |
# Define the following secrets for the repository: EMAIL_SERVER, EMAIL_USERNAME, EMAIL_PASSWORD, EMAIL_TO, EMAIL_LIST | |
# Only send e-mail when a 'failure' occurs. | |
# if: always() | |
if: job.status == 'failure' | |
uses: dawidd6/action-send-mail@v2 | |
with: | |
# mail server settings | |
server_address: ${{ secrets.EMAIL_SERVER }} | |
server_port: 465 | |
# user credentials | |
username: ${{ secrets.EMAIL_USERNAME }} | |
password: ${{ secrets.EMAIL_PASSWORD }} | |
# email subject | |
subject: ${{ steps.date.outputs.date }} ${{ job.status }} - ${{ github.job }} run on ${{ github.repository }} | |
# email body as text | |
body: | | |
Run date ${{ steps.date.outputs.date }} | |
${{ job.status }} of ${{ github.job }} run in workflow ${{ github.workflow }} of ${{ github.repository }} | |
-- | |
For details see attachment. | |
# comma-separated string, send email to | |
to: ${{ secrets.EMAIL_LIST }},${{ secrets.EMAIL_TO }} | |
# from email name | |
from: HPDE Mailer | |
# Attachements: | |
attachments: logs/validate.log |