8 Commits
Author SHA1 Message Date
Tony Arcieri 69366f33c9 Prep for v2.0.0 release (#25)
Continuous integration / main (push) Failing after 1m29s
2024-09-23 08:24:55 -06:00
Tony Arcieri 7b350a127d npm audit fix (#24) 2024-09-23 08:21:39 -06:00
Charles Lechasseur 286a088f1c fix: update @clechasseur/rs-actions-core and other dependencies (#23)
This fixes a high-severity security vulnerability in the `braces` library.
2024-07-22 13:12:29 -06:00
Ross b7dc4ebf0c Added support for working-directory (#21) 2024-07-08 10:14:45 -06:00
Tillmann 6dc762e804 update to latest upstream and rebuild (#20) 2024-05-09 19:18:11 -06:00
Charles Lechasseur fe0359b3e1 Run on Node 20.x (#16)
Also move to @clechasseur/rs-actions-core for more up-to-date dependencies
2024-04-23 16:26:03 -06:00
pinkforest 4da312dd0f docs: Update repo link 2023-04-04 19:19:38 +10:00
pinkforest d6805b6463 docs: Bump version in README 2023-04-04 18:24:42 +10:00
12 changed files with 3371 additions and 19546 deletions
+9 -3
View File
@@ -6,10 +6,16 @@ jobs:
main: main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - name: Create npm configuration
- uses: actions/setup-node@v3 run: echo "//npm.pkg.github.com/:_authToken=${token}" >> ~/.npmrc
env:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: with:
node-version: 16 node-version-file: '.nvmrc'
cache: 'npm'
- run: npm ci - run: npm ci
# octokit types problem ? # octokit types problem ?
# - run: npm run lint # - run: npm run lint
+1 -1
View File
@@ -1 +1 @@
@actions-rs:registry=https://npm.pkg.github.com @clechasseur:registry=https://npm.pkg.github.com
+1 -1
View File
@@ -1 +1 @@
v16 v20
+5 -4
View File
@@ -26,8 +26,8 @@ jobs:
security_audit: security_audit:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: rustsec/audit-check@v1 - uses: rustsec/audit-check@v1.4.1
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
``` ```
@@ -86,8 +86,8 @@ jobs:
audit: audit:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions-rs/audit-check@v1 - uses: rustsec/audit-check@v1.4.1
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
``` ```
@@ -104,5 +104,6 @@ For each new advisory (including informal) an issue will be created:
| ------------| -------- | ---------------------------------------------------------------------------| ------ | --------| | ------------| -------- | ---------------------------------------------------------------------------| ------ | --------|
| `token` | ✓ | [GitHub token], usually a `${{ secrets.GITHUB_TOKEN }}` | string | | | `token` | ✓ | [GitHub token], usually a `${{ secrets.GITHUB_TOKEN }}` | string | |
| `ignore` | | Comma-separated list of advisory ids to ignore | string | | | `ignore` | | Comma-separated list of advisory ids to ignore | string | |
| `working-directory`| | The directory of the Cargo.toml / Cargo.lock files to scan. | string | `.` |
[GitHub token]: https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token [GitHub token]: https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token
+5 -1
View File
@@ -11,7 +11,11 @@ inputs:
ignore: ignore:
description: Comma-separated list of advisory ids to ignore description: Comma-separated list of advisory ids to ignore
required: false required: false
working-directory:
description: The directory of the Cargo.toml / Cargo.lock files to scan.
required: false
default: .
runs: runs:
using: 'node16' using: 'node20'
main: 'dist/index.js' main: 'dist/index.js'
BIN
View File
Binary file not shown.
+3 -1
View File
File diff suppressed because one or more lines are too long
+3298 -19491
View File
File diff suppressed because it is too large Load Diff
+16 -20
View File
@@ -1,6 +1,6 @@
{ {
"name": "rust-audit-check", "name": "rust-audit-check",
"version": "1.4.1", "version": "2.0.0",
"private": false, "private": false,
"description": "Security audit for security vulnerabilities", "description": "Security audit for security vulnerabilities",
"main": "lib/main.js", "main": "lib/main.js",
@@ -34,26 +34,22 @@
"url": "https://github.com/actions-rs/audit-check/issues" "url": "https://github.com/actions-rs/audit-check/issues"
}, },
"dependencies": { "dependencies": {
"@rinse-repeat/actions-rs-core": "0.1.8", "@clechasseur/rs-actions-core": "^3.0.5",
"@actions/core": "^1.2.6", "nunjucks": "^3.2.4"
"@actions/github": "^5.1.0",
"npm-check-updates": "^16.8.0",
"nunjucks": "^3.2.3"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.56.0", "@typescript-eslint/parser": "^6.21.0",
"ts-node": "^10.9.1", "@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^5.56.0", "ts-node": "^10.9.2",
"eslint": "^8.36.0", "eslint": "^8.56.0",
"eslint-config-prettier": "^6.11.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^3.1.3", "eslint-plugin-prettier": "^5.1.3",
"@types/jest": "^26.0.1", "@types/jest": "^29.5.12",
"@types/node": "^16.11.7", "@types/node": "^20.11.17",
"@vincentriemer/ncc": "^0.20.5", "@vercel/ncc": "0.38.1",
"jest": "^26.0.1", "jest": "^29.7.0",
"jest-circus": "^26.0.1", "ts-jest": "^29.1.2",
"ts-jest": "^26.0.1", "typescript": "^5.3.3",
"typescript": "^3.8.3", "prettier": "^3.2.5"
"prettier": "^2.0.5"
} }
} }
+4 -3
View File
@@ -2,18 +2,19 @@
* Parse action input into a some proper thing. * Parse action input into a some proper thing.
*/ */
import { input } from '@rinse-repeat/actions-rs-core'; import { input } from '@clechasseur/rs-actions-core';
import { getInputList } from '@rinse-repeat/actions-rs-core/dist/input';
// Parsed action input // Parsed action input
export interface Input { export interface Input {
token: string; token: string;
ignore: string[]; ignore: string[];
workingDirectory: string;
} }
export function get(): Input { export function get(): Input {
return { return {
token: input.getInput('token', { required: true }), token: input.getInput('token', { required: true }),
ignore: getInputList('ignore', { required: false }), ignore: input.getInputList('ignore', { required: false }),
workingDirectory: input.getInput('working-directory', { required: false }) ?? '.',
}; };
} }
+13 -5
View File
@@ -4,7 +4,7 @@ import * as os from 'os';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as github from '@actions/github'; import * as github from '@actions/github';
import { Cargo } from '@rinse-repeat/actions-rs-core'; import { Cargo } from '@clechasseur/rs-actions-core';
import * as input from './input'; import * as input from './input';
import * as interfaces from './interfaces'; import * as interfaces from './interfaces';
@@ -12,12 +12,11 @@ import * as reporter from './reporter';
async function getData( async function getData(
ignore: string[] | undefined, ignore: string[] | undefined,
workingDirectory: string,
): Promise<interfaces.Report> { ): Promise<interfaces.Report> {
const cargo = await Cargo.get(); const cargo = await Cargo.get();
await cargo.findOrInstall('cargo-audit'); await cargo.findOrInstall('cargo-audit');
await cargo.call(['generate-lockfile']);
let stdout = ''; let stdout = '';
try { try {
core.startGroup('Calling cargo-audit (JSON output)'); core.startGroup('Calling cargo-audit (JSON output)');
@@ -26,6 +25,7 @@ async function getData(
commandArray.push('--ignore', item); commandArray.push('--ignore', item);
} }
commandArray.push('--json'); commandArray.push('--json');
commandArray.push('--file', `${workingDirectory}/Cargo.lock`);
await cargo.call(commandArray, { await cargo.call(commandArray, {
ignoreReturnCode: true, ignoreReturnCode: true,
listeners: { listeners: {
@@ -46,9 +46,17 @@ async function getData(
return JSON.parse(stdout); return JSON.parse(stdout);
} }
function removeTrailingSlash(str) {
if (str[str.length - 1] === '/') {
return str.substr(0, str.length - 1);
}
return str;
}
export async function run(actionInput: input.Input): Promise<void> { export async function run(actionInput: input.Input): Promise<void> {
const ignore = actionInput.ignore; const ignore = actionInput.ignore;
const report = await getData(ignore); const workingDirectory = removeTrailingSlash(actionInput.workingDirectory);
const report = await getData(ignore, workingDirectory);
let shouldReport = false; let shouldReport = false;
if (!report.vulnerabilities.found) { if (!report.vulnerabilities.found) {
core.info('No vulnerabilities were found'); core.info('No vulnerabilities were found');
@@ -100,7 +108,7 @@ async function main(): Promise<void> {
const actionInput = input.get(); const actionInput = input.get();
await run(actionInput); await run(actionInput);
} catch (error) { } catch (error) {
core.setFailed(error.message); core.setFailed((error as Error).message);
} }
return; return;
+1 -1
View File
@@ -4,7 +4,7 @@ import * as core from '@actions/core';
import * as github from '@actions/github'; import * as github from '@actions/github';
import * as nunjucks from 'nunjucks'; import * as nunjucks from 'nunjucks';
import { checks } from '@rinse-repeat/actions-rs-core'; import { checks } from '@clechasseur/rs-actions-core';
import * as interfaces from './interfaces'; import * as interfaces from './interfaces';
import * as templates from './templates'; import * as templates from './templates';