Skip to content

Commit 2b697c4

Browse files
aleks-ivanovkulov
andauthored
Implement DevSecOps through GitHub's Dependabot and CodeQL (restsharp#1563)
* add Pipeline Foundation templates * add Dependabot, CodeQL and docs * switch build csproj from sln * move documentation to docs folder * add explicit shell declaration in build step Co-authored-by: Martin Kulov <martin@kulov.net>
1 parent be39346 commit 2b697c4

11 files changed

+126
-0
lines changed

.github/dependabot.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
# default location of `.github/workflows`
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
9+
- package-ecosystem: "nuget"
10+
# location of package manifests
11+
directory: "/"
12+
schedule:
13+
interval: "daily"
14+
15+
# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation)

.github/workflows/codeql-analysis.yml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: CodeQL Analysis
2+
3+
on:
4+
push:
5+
pull_request:
6+
workflow_dispatch:
7+
schedule:
8+
- cron: '0 8 * * *'
9+
10+
jobs:
11+
analyze:
12+
name: codeql-analysis
13+
runs-on: windows-latest
14+
steps:
15+
# Due to the insufficient memory allocated by default, CodeQL sometimes requires more to be manually allocated
16+
- name: Configure Pagefile
17+
id: config_pagefile
18+
uses: al-cheb/configure-pagefile-action@v1.2
19+
with:
20+
minimum-size: 8GB
21+
maximum-size: 32GB
22+
disk-root: "D:"
23+
24+
- name: Checkout repository
25+
id: checkout_repo
26+
uses: actions/checkout@v2
27+
28+
- name: Initialize CodeQL
29+
id: init_codeql
30+
uses: github/codeql-action/init@v1
31+
with:
32+
queries: security-and-quality
33+
34+
- name: Build project
35+
id: build_project
36+
shell: pwsh
37+
run: |
38+
dotnet build ./src/RestSharp/RestSharp.csproj -c Release
39+
40+
- name: Perform CodeQL Analysis
41+
id: analyze_codeql
42+
uses: github/codeql-action/analyze@v1
43+
44+
# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# RestSharp CI/CD documentation
2+
3+
## 1. Set up Dependabot
4+
5+
Dependabot is a GitHub native security tool that goes through the dependencies in the project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found.
6+
7+
- for PRs with version updates, this pipeline comes pre-configured for all current dependency sources in the project, so at "Insights" tab -> "Dependency graph" -> "Dependabot", you should be able to see all tracked sources of dependencies, when they have been checked last and view a full log of the last check
8+
9+
![Dependabot_tab](/docs/CI-CD_DOCUMENTATION/Dependabot_tab.png)
10+
11+
![Dependabot_log_page](/docs/CI-CD_DOCUMENTATION/Dependabot_log_page.png)
12+
13+
### Set up security alerts and updates
14+
##### - GitHub, through Dependabot, also natively offers a security check for vulnerable dependencies
15+
16+
1. Go to the project's GitHub repository and click on the **Settings** tab
17+
18+
2. Go to **Security & analysis** section
19+
20+
3. Click "Enable" for both "Dependabot alerts" and "Dependabot security updates"
21+
22+
- By enabling "Dependabot alerts", you would be notified for any vulnerable dependencies in the project. At "Security" tab -> "Dependabot alerts", you can manage all alerts. By clicking on an alert, you would be able to see a detailed explanation of the vulnerability and a viable solution.
23+
24+
![Dependabot_alerts_page](/docs/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png)
25+
26+
![Dependabot_alert_page](/docs/CI-CD_DOCUMENTATION/Dependabot_alert_page.png)
27+
28+
- By enabling "Dependabot security updates", you authorize Dependabot to create PRs specifically for **security updates**
29+
30+
![Dependabot_PRs](/docs/CI-CD_DOCUMENTATION/Dependabot_PRs.png)
31+
32+
### Set up Dependency graph
33+
##### - The "Dependency graph" option should be enabled by default for all public repos, but in case it isn't:
34+
35+
1. Go to the project's GitHub repository and click on the **Settings** tab
36+
37+
2. Go to **Security & analysis** section
38+
39+
3. Click "Enable" for the "Dependency graph" option
40+
41+
- this option enables the "Insights" tab -> "Dependency graph" section -> "Dependencies" tab, in which all the dependencies for the project are listed, under the different manifests they are included in
42+
43+
![Dependabot_dependency_graph](/docs/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png)
44+
45+
NOTE: **screenshots are only exemplary**
46+
47+
<br>
48+
49+
## 2. CodeQL
50+
51+
CodeQL is GitHub's own industry-leading semantic code analysis engine. CodeQL requires no setup, because it comes fully pre-configured by us.
52+
53+
To activate it and see its results, only a push commit or a merge of a PR to the default branch of your repository, is required.
54+
55+
We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically tests the code.
56+
57+
- you can see the results here at **Security** tab -> **Code scanning alerts** -> **CodeQL**:
58+
59+
![CodeQL_results](/docs/CI-CD_DOCUMENTATION/CodeQL_results.png)
60+
61+
- on the page of each result, you can see an explanation of what the problem is and also one or more solutions:
62+
63+
![CodeQL_alert_page](/docs/CI-CD_DOCUMENTATION/CodeQL_alert_page.png)
64+
65+
#
66+
67+
Built with ❤ by [Pipeline Foundation](https://pipeline.foundation)
54.1 KB
Loading
55.3 KB
Loading
63 KB
Loading
Loading
Loading
Loading
48.4 KB
Loading
41.9 KB
Loading

0 commit comments

Comments
 (0)