9576dfd5e7
Scheduled builds now are triggered by a dummy "scheduled" workflow that is invoked by the timer. This gives forks an ability to disable scheduled builds while maintaining ability to perform CI builds in forked repository. Similarly static analysis is invoked on completion of "build" workflow, ensuring analysis is performed with every build. Also should build workflow triggers change, we do not need to replicate same changes in static analysis workflow file.
78 lines
3.3 KiB
YAML
78 lines
3.3 KiB
YAML
name: static-analysis
|
|
|
|
on:
|
|
workflow_run:
|
|
# Perform static analysis together with build workflow. Build triggers of "build" workflow do not need to be repeated here.
|
|
workflows:
|
|
- build
|
|
types:
|
|
- requested
|
|
|
|
jobs:
|
|
PVS-Studio:
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- name: Install Dependencies
|
|
env:
|
|
# The Secret variable setup in GitHub must be in format: "name_or_email key", on a single line
|
|
PVS_STUDIO_LICENSE: ${{ secrets.PVS_STUDIO_LICENSE }}
|
|
run: |
|
|
if [[ "$PVS_STUDIO_LICENSE" != "" ]];
|
|
then
|
|
wget -q https://files.viva64.com/etc/pubkey.txt
|
|
sudo apt-key add pubkey.txt
|
|
sudo wget -O /etc/apt/sources.list.d/viva64.list https://files.viva64.com/etc/viva64.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y pvs-studio
|
|
pvs-studio-analyzer credentials -o pvs-studio.lic $PVS_STUDIO_LICENSE
|
|
fi
|
|
|
|
- name: PVS-Studio static analysis
|
|
run: |
|
|
if [[ ! -f pvs-studio.lic ]];
|
|
then
|
|
echo "PVS Studio license is missing. No analysis will be performed."
|
|
echo "If you have a PVS Studio license please create a project secret named PVS_STUDIO_LICENSE with your license."
|
|
echo "You may use a free license. More information at https://www.viva64.com/en/b/0457/"
|
|
exit 0
|
|
fi
|
|
cd examples/example_null
|
|
pvs-studio-analyzer trace -- make WITH_EXTRA_WARNINGS=1
|
|
pvs-studio-analyzer analyze -e ../../imstb_rectpack.h -e ../../imstb_textedit.h -e ../../imstb_truetype.h -l ../../pvs-studio.lic -o pvs-studio.log
|
|
plog-converter -a 'GA:1,2;OP:1' -t errorfile -w pvs-studio.log
|
|
|
|
Discord-CI:
|
|
runs-on: ubuntu-18.04
|
|
needs: [PVS-Studio]
|
|
if: always()
|
|
steps:
|
|
- uses: dearimgui/github_discord_notifier@latest
|
|
with:
|
|
discord-webhook: ${{ secrets.DISCORD_CI_WEBHOOK }}
|
|
github-token: ${{ github.token }}
|
|
action-task: discord-jobs
|
|
discord-filter: "'{{ github.branch }}'.match(/master|docking/g) != null && '{{ run.conclusion }}' != '{{ last_run.conclusion }}'"
|
|
discord-username: GitHub Actions
|
|
discord-job-new-failure-message: ''
|
|
discord-job-fixed-failure-message: ''
|
|
discord-job-new-failure-embed: |
|
|
{
|
|
"title": "`{{ job.name }}` job is failing on `{{ github.branch }}`!",
|
|
"description": "Commit [{{ github.context.payload.head_commit.title }}]({{ github.context.payload.head_commit.url }}) pushed to [{{ github.branch }}]({{ github.branch_url }}) broke static analysis [{{ job.name }}]({{ job.url }}) job.\nFailing steps: {{ failing_steps }}",
|
|
"url": "{{ job.url }}",
|
|
"color": "0xFF0000",
|
|
"timestamp": "{{ run.updated_at }}"
|
|
}
|
|
discord-job-fixed-failure-embed: |
|
|
{
|
|
"title": "`{{ github.branch }}` branch is no longer failing!",
|
|
"description": "Static analysis failures were fixed on [{{ github.branch }}]({{ github.branch_url }}) branch.",
|
|
"color": "0x00FF00",
|
|
"url": "{{ github.context.payload.head_commit.url }}",
|
|
"timestamp": "{{ run.completed_at }}"
|
|
}
|