-
Notifications
You must be signed in to change notification settings - Fork 726
144 lines (125 loc) · 4.74 KB
/
Copy pathanalyzer.yml
File metadata and controls
144 lines (125 loc) · 4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
---
# SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme.
# Copyright (c) 2026 SUSE LLC
#
# Authors: Daniel Wagner <dwagner@suse.de>
# Nilay Shroff <nilay@linux.ibm.com>
name: Analyzers
on:
workflow_dispatch:
inputs:
ref:
description: 'Branch, tag, or ref to check out (leave empty for default branch)'
required: false
default: ''
schedule:
- cron: '0 01 * * *'
jobs:
build-with-clang-analyzer:
if: ${{ github.event_name == 'workflow_dispatch' || github.repository == 'linux-nvme/nvme-cli' }}
name: build with clang analyzer
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/fedora:latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.inputs.ref || github.ref }}
fetch-depth: 0
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run Clang Static Analyzer
continue-on-error: true
run: scripts/build.sh -a
- name: Upload scan result artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: clang-analyzer-report
path: .build-ci/scan-results/
upload-analyzer-report:
if: ${{ github.repository == 'linux-nvme/nvme-cli' }}
name: upload analyzer report to SFTP
runs-on: ubuntu-latest
needs: build-with-clang-analyzer
steps:
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
name: clang-analyzer-report
path: scan-results
- name: Archive analyzer report
run: |
REPORT="clang-analyzer-report-${GITHUB_RUN_NUMBER}-${GITHUB_SHA:0:12}.tar.gz"
tar cvzf "$REPORT" scan-results
echo "REPORT=$REPORT" >> "$GITHUB_ENV"
- name: upload to SFTP server
env:
SFTP_USERNAME: ${{ secrets.SFTP_USERNAME }}
SFTP_SERVER: ${{ secrets.SFTP_SERVER }}
SFTP_HOST_KEY: ${{ secrets.SFTP_HOST_KEY }}
SFTP_PRIVATE_KEY: ${{ secrets.SFTP_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "${SFTP_HOST_KEY}" > ~/.ssh/known_hosts
echo "${SFTP_PRIVATE_KEY}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
SFTP_BATCH=$(mktemp)
trap 'rm -f "$SFTP_BATCH"' EXIT
echo "cd /upload" > "$SFTP_BATCH"
echo "put ${REPORT}" >> "$SFTP_BATCH"
sftp -b "$SFTP_BATCH" "${SFTP_USERNAME}@${SFTP_SERVER}"
coverity:
if: github.repository == 'linux-nvme/nvme-cli'
name: coverity scan
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/debian:latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.inputs.ref || github.ref }}
fetch-depth: 0
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Get version info
id: version
run: |
VERSION="$(git describe --always --abbrev=12 --dirty)"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "Building version: ${VERSION}"
echo "Current SHA: $(git rev-parse HEAD)"
- name: Download Coverity Build Tool
run: |
curl -fsSL https://scan.coverity.com/download/linux64 \
--data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=linux-nvme%2Fnvme-cli" \
--output coverity_tool.tgz
mkdir coverity-tools
tar xzf coverity_tool.tgz --strip-components=1 -C coverity-tools
- name: Configure build
run: |
meson setup .build
- name: Build with Coverity
run: |
export PATH="$PWD/coverity-tools/bin:$PATH"
cov-build --dir cov-int ninja -C .build
- name: Create Coverity tarball
run: |
tar czvf nvme-cli-coverity.tgz cov-int
- name: Upload to Coverity Scan
run: |
curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \
--form email=${{ secrets.COVERITY_SCAN_EMAIL }} \
--form file=@nvme-cli-coverity.tgz \
--form version="${{ steps.version.outputs.version }}" \
--form description="Automated Coverity Scan from ${{ github.event_name }}" \
https://scan.coverity.com/builds?project=linux-nvme%2Fnvme-cli
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
name: upload coverity artifacts
if: failure()
with:
name: coverity-results
path: |
cov-int/
nvme-cli-coverity.tgz