@dougefresh/ci 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.checkov.yml +7 -0
- package/.env.example +61 -0
- package/.gitattributes +3 -0
- package/.github/actions/install-yq/action.yaml +80 -0
- package/.github/actions/install-yq/scripts/unixish.sh +112 -0
- package/.github/actions/install-yq/scripts/windowsish.ps1 +99 -0
- package/.github/actions/rust-config/action.yml +34 -0
- package/.github/actions/rust-init/action.yml +75 -0
- package/.github/ci-configs/dummy.yml +24 -0
- package/.github/ci-configs/rust/ai.yml +65 -0
- package/.github/ci-configs/rust-default.yml +115 -0
- package/.github/ci-configs/test/01.yml +9 -0
- package/.github/copilot-instructions.md +118 -0
- package/.github/dependabot.yml +26 -0
- package/.github/prompts/create-release-notes.prompt.md +29 -0
- package/.github/prompts/unit-test.prompt.md +77 -0
- package/.github/rust-ci.ts +5 -0
- package/.github/workflows/action-ci.yml +39 -0
- package/.github/workflows/action-review.yml +14 -0
- package/.github/workflows/dummy-release.yml +32 -0
- package/.github/workflows/dummy-test.yml +16 -0
- package/.github/workflows/pages.yml +59 -0
- package/.github/workflows/pr-review.yml +93 -0
- package/.github/workflows/release.yml +41 -0
- package/.github/workflows/rust-release.yml +133 -0
- package/.github/workflows/rust.yml +247 -0
- package/.node-version +1 -0
- package/AGENTS.md +13 -0
- package/Cargo.toml +6 -0
- package/LICENSE +21 -0
- package/README.md +58 -0
- package/action.yml +32 -0
- package/biome.jsonc +108 -0
- package/bun.lock +22 -0
- package/dist/ai.d.ts +11 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +52 -0
- package/dist/ai.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +212 -0
- package/dist/index.js.map +1 -0
- package/docs/SUMMARY.md +3 -0
- package/docs/book.toml +49 -0
- package/docs/index.md +32 -0
- package/package.json +30 -0
- package/pre-commit +2 -0
- package/scripts/bump-version.ts +16 -0
- package/scripts/generate-rust.ts +9 -0
- package/src/ai.ts +61 -0
- package/src/index.ts +287 -0
- package/src/lib.rs +8 -0
- package/src/main.rs +11 -0
- package/tsconfig.json +25 -0
package/.checkov.yml
ADDED
package/.env.example
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# dotenv-linter:off IncorrectDelimiter
|
|
2
|
+
|
|
3
|
+
# Do not commit your actual .env file to Git! This may contain secrets or other
|
|
4
|
+
# private information.
|
|
5
|
+
|
|
6
|
+
# Enable/disable step debug logging (default: `false`). For local debugging, it
|
|
7
|
+
# may be useful to set it to `true`.
|
|
8
|
+
ACTIONS_STEP_DEBUG=true
|
|
9
|
+
|
|
10
|
+
# GitHub Actions inputs should follow `INPUT_<name>` format (case-sensitive).
|
|
11
|
+
# Hyphens should not be converted to underscores!
|
|
12
|
+
INPUT_MILLISECONDS=2400
|
|
13
|
+
|
|
14
|
+
# GitHub Actions default environment variables. These are set for every run of a
|
|
15
|
+
# workflow and can be used in your actions. Setting the value here will override
|
|
16
|
+
# any value set by the local-action tool.
|
|
17
|
+
# https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
|
|
18
|
+
|
|
19
|
+
# CI="true"
|
|
20
|
+
# GITHUB_ACTION=""
|
|
21
|
+
# GITHUB_ACTION_PATH=""
|
|
22
|
+
# GITHUB_ACTION_REPOSITORY=""
|
|
23
|
+
# GITHUB_ACTIONS=""
|
|
24
|
+
# GITHUB_ACTOR=""
|
|
25
|
+
# GITHUB_ACTOR_ID=""
|
|
26
|
+
# GITHUB_API_URL=""
|
|
27
|
+
# GITHUB_BASE_REF=""
|
|
28
|
+
# GITHUB_ENV=""
|
|
29
|
+
# GITHUB_EVENT_NAME=""
|
|
30
|
+
# GITHUB_EVENT_PATH=""
|
|
31
|
+
# GITHUB_GRAPHQL_URL=""
|
|
32
|
+
# GITHUB_HEAD_REF=""
|
|
33
|
+
# GITHUB_JOB=""
|
|
34
|
+
# GITHUB_OUTPUT=""
|
|
35
|
+
# GITHUB_PATH=""
|
|
36
|
+
# GITHUB_REF=""
|
|
37
|
+
# GITHUB_REF_NAME=""
|
|
38
|
+
# GITHUB_REF_PROTECTED=""
|
|
39
|
+
# GITHUB_REF_TYPE=""
|
|
40
|
+
# GITHUB_REPOSITORY=""
|
|
41
|
+
# GITHUB_REPOSITORY_ID=""
|
|
42
|
+
# GITHUB_REPOSITORY_OWNER=""
|
|
43
|
+
# GITHUB_REPOSITORY_OWNER_ID=""
|
|
44
|
+
# GITHUB_RETENTION_DAYS=""
|
|
45
|
+
# GITHUB_RUN_ATTEMPT=""
|
|
46
|
+
# GITHUB_RUN_ID=""
|
|
47
|
+
# GITHUB_RUN_NUMBER=""
|
|
48
|
+
# GITHUB_SERVER_URL=""
|
|
49
|
+
# GITHUB_SHA=""
|
|
50
|
+
# GITHUB_STEP_SUMMARY=""
|
|
51
|
+
# GITHUB_TRIGGERING_ACTOR=""
|
|
52
|
+
# GITHUB_WORKFLOW=""
|
|
53
|
+
# GITHUB_WORKFLOW_REF=""
|
|
54
|
+
# GITHUB_WORKFLOW_SHA=""
|
|
55
|
+
# GITHUB_WORKSPACE=""
|
|
56
|
+
# RUNNER_ARCH=""
|
|
57
|
+
# RUNNER_DEBUG=""
|
|
58
|
+
# RUNNER_NAME=""
|
|
59
|
+
# RUNNER_OS=""
|
|
60
|
+
# RUNNER_TEMP=""
|
|
61
|
+
# RUNNER_TOOL_CACHE=""
|
package/.gitattributes
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: Install YQ
|
|
2
|
+
description: |
|
|
3
|
+
Installs a version of YQ into the job tool cache using simple shell scripts
|
|
4
|
+
|
|
5
|
+
branding:
|
|
6
|
+
icon: copy
|
|
7
|
+
color: orange
|
|
8
|
+
|
|
9
|
+
inputs:
|
|
10
|
+
version:
|
|
11
|
+
required: true
|
|
12
|
+
description: 'Version of YQ to install'
|
|
13
|
+
default: 'v4.49.2'
|
|
14
|
+
download-compressed:
|
|
15
|
+
required: false
|
|
16
|
+
description: "If 'true', downloads .tar.gz of binary rather than raw binary. Save the tubes."
|
|
17
|
+
default: 'true'
|
|
18
|
+
force:
|
|
19
|
+
required: false
|
|
20
|
+
description: "If 'true', does not check for existing yq installation before continuing."
|
|
21
|
+
default: 'false'
|
|
22
|
+
|
|
23
|
+
outputs:
|
|
24
|
+
found:
|
|
25
|
+
description: "If 'true', yq was already found on this runner"
|
|
26
|
+
value: "${{ steps.yq-check-unix.outputs.found == 'true' || steps.yq-check-windows.outputs.found == 'true' }}"
|
|
27
|
+
installed:
|
|
28
|
+
description: "If 'true', yq was installed by this action"
|
|
29
|
+
value:
|
|
30
|
+
"${{ inputs.force == 'true' || steps.yq-check-unix.outputs.found == 'false' ||
|
|
31
|
+
steps.yq-check-windows.outputs.found == 'false' }}"
|
|
32
|
+
|
|
33
|
+
runs:
|
|
34
|
+
using: composite
|
|
35
|
+
steps:
|
|
36
|
+
- name: 'Check for yq - Unix-ish'
|
|
37
|
+
id: yq-check-unix
|
|
38
|
+
if: (runner.os == 'Linux' || runner.os == 'macOS')
|
|
39
|
+
shell: bash +e {0}
|
|
40
|
+
# language=bash
|
|
41
|
+
run: |
|
|
42
|
+
_yq_bin="$(which yq)"
|
|
43
|
+
if [ -f "${_yq_bin}" ]; then
|
|
44
|
+
echo "found=true" >> $GITHUB_OUTPUT
|
|
45
|
+
else
|
|
46
|
+
echo "found=false" >> $GITHUB_OUTPUT
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
- name: 'Install yq - Unix-ish'
|
|
50
|
+
if:
|
|
51
|
+
(runner.os == 'Linux' || runner.os == 'macOS') && (steps.yq-check-unix.outputs.found == 'false' || inputs.force
|
|
52
|
+
== 'true')
|
|
53
|
+
shell: bash
|
|
54
|
+
env:
|
|
55
|
+
DL_COMPRESSED: "${{ inputs.download-compressed == 'true' }}"
|
|
56
|
+
YQ_VERSION: '${{ inputs.version }}'
|
|
57
|
+
run: $GITHUB_ACTION_PATH/scripts/unixish.sh
|
|
58
|
+
|
|
59
|
+
- name: 'Check for yq - Windows-ish'
|
|
60
|
+
id: yq-check-windows
|
|
61
|
+
if: runner.os == 'Windows'
|
|
62
|
+
shell: powershell
|
|
63
|
+
# language=powershell
|
|
64
|
+
run: |
|
|
65
|
+
if (Get-Command "yq.exe" -ErrorAction SilentlyContinue)
|
|
66
|
+
{
|
|
67
|
+
Add-Content $Env:GITHUB_OUTPUT "found=true"
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
{
|
|
71
|
+
Add-Content $Env:GITHUB_OUTPUT "found=false"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
- name: 'Install yq - Windows-ish'
|
|
75
|
+
if: runner.os == 'Windows' && (steps.yq-check-windows.outputs.found == 'false' || inputs.force == 'true')
|
|
76
|
+
shell: powershell
|
|
77
|
+
env:
|
|
78
|
+
DL_COMPRESSED: "${{ inputs.download-compressed == 'true' }}"
|
|
79
|
+
YQ_VERSION: '${{ inputs.version }}'
|
|
80
|
+
run: '& $Env:GITHUB_ACTION_PATH\scripts\windowsish.ps1'
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
echo '::group::Prep'
|
|
6
|
+
|
|
7
|
+
# validate input and prepare some vars
|
|
8
|
+
|
|
9
|
+
_base_url='https://github.com/mikefarah/yq/releases/download'
|
|
10
|
+
|
|
11
|
+
_os=
|
|
12
|
+
_arch=
|
|
13
|
+
|
|
14
|
+
_root_name=
|
|
15
|
+
_dl_name=
|
|
16
|
+
_dl_path=
|
|
17
|
+
_dl_url=
|
|
18
|
+
|
|
19
|
+
case $RUNNER_OS in
|
|
20
|
+
Linux)
|
|
21
|
+
_os='linux'
|
|
22
|
+
;;
|
|
23
|
+
macOS)
|
|
24
|
+
_os='darwin'
|
|
25
|
+
;;
|
|
26
|
+
|
|
27
|
+
*)
|
|
28
|
+
echo "Cannot handle OS of type $RUNNER_OS"
|
|
29
|
+
echo "Expected one of: [ Linux macOS ]"
|
|
30
|
+
exit 1
|
|
31
|
+
;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
case $RUNNER_ARCH in
|
|
35
|
+
'X86')
|
|
36
|
+
_arch='386'
|
|
37
|
+
;;
|
|
38
|
+
'X64')
|
|
39
|
+
_arch='amd64'
|
|
40
|
+
;;
|
|
41
|
+
'ARM')
|
|
42
|
+
_arch='arm'
|
|
43
|
+
;;
|
|
44
|
+
'ARM64')
|
|
45
|
+
_arch='arm64'
|
|
46
|
+
;;
|
|
47
|
+
|
|
48
|
+
*)
|
|
49
|
+
echo "Cannot handle arch of type $RUNNER_ARCH"
|
|
50
|
+
echo "Expected one of: [ X86 X64 ARM ARM64 ]"
|
|
51
|
+
exit 1
|
|
52
|
+
;;
|
|
53
|
+
esac
|
|
54
|
+
|
|
55
|
+
_root_name="yq_${_os}_${_arch}"
|
|
56
|
+
|
|
57
|
+
echo "Creating temporary directory $RUNNER_TEMP/${_root_name}"
|
|
58
|
+
mkdir -p "$RUNNER_TEMP/${_root_name}"
|
|
59
|
+
|
|
60
|
+
if [[ $DL_COMPRESSED == 'true' ]]; then
|
|
61
|
+
_dl_name="${_root_name}.tar.gz"
|
|
62
|
+
_dl_path="$RUNNER_TEMP/${_dl_name}"
|
|
63
|
+
else
|
|
64
|
+
_dl_name="${_root_name}"
|
|
65
|
+
_dl_path="$RUNNER_TEMP/${_root_name}/${_dl_name}"
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# default to _something_...
|
|
69
|
+
_version="${YQ_VERSION}"
|
|
70
|
+
|
|
71
|
+
if [ -z "${YQ_VERSION}" ]; then
|
|
72
|
+
_version='v4.44.3'
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
_dl_url="${_base_url}/${_version}/${_dl_name}"
|
|
76
|
+
|
|
77
|
+
echo '::endgroup::'
|
|
78
|
+
|
|
79
|
+
echo "::group::Downloading yq ${_version}"
|
|
80
|
+
|
|
81
|
+
echo "Src: ${_dl_url}"
|
|
82
|
+
echo "Dst: ${_dl_path}"
|
|
83
|
+
|
|
84
|
+
curl -L "${_dl_url}" -o "${_dl_path}"
|
|
85
|
+
|
|
86
|
+
echo '::endgroup::'
|
|
87
|
+
|
|
88
|
+
if [[ $DL_COMPRESSED == 'true' ]]; then
|
|
89
|
+
echo '::group::Expanding archive'
|
|
90
|
+
tar -xzv -C "$RUNNER_TEMP/${_root_name}" -f "${_dl_path}"
|
|
91
|
+
echo "Removing ${_dl_path}"
|
|
92
|
+
rm -rf "${_dl_path}"
|
|
93
|
+
echo '::endgroup::'
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
echo '::group::Copying to tool cache'
|
|
97
|
+
|
|
98
|
+
echo "Creating tool cache directory $RUNNER_TOOL_CACHE/yq"
|
|
99
|
+
mkdir -p "$RUNNER_TOOL_CACHE/yq"
|
|
100
|
+
|
|
101
|
+
echo "Installing into tool cache:"
|
|
102
|
+
echo "Src: $RUNNER_TEMP/${_root_name}/${_root_name}"
|
|
103
|
+
echo "Dst: $RUNNER_TOOL_CACHE/yq/yq"
|
|
104
|
+
mv "$RUNNER_TEMP/${_root_name}/${_root_name}" "$RUNNER_TOOL_CACHE/yq/yq"
|
|
105
|
+
|
|
106
|
+
echo "Removing $RUNNER_TEMP/${_root_name}"
|
|
107
|
+
rm -rf "$RUNNER_TEMP/${_root_name}"
|
|
108
|
+
|
|
109
|
+
echo "Adding $RUNNER_TOOL_CACHE/yq to path..."
|
|
110
|
+
echo "$RUNNER_TOOL_CACHE/yq" >> $GITHUB_PATH
|
|
111
|
+
|
|
112
|
+
echo '::endgroup::'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
$ErrorActionPreference = 'Stop'
|
|
2
|
+
Set-StrictMode -Version Latest
|
|
3
|
+
|
|
4
|
+
Write-Host "::group::Prep"
|
|
5
|
+
|
|
6
|
+
# validate input and prepare some vars
|
|
7
|
+
|
|
8
|
+
switch ($Env:RUNNER_ARCH)
|
|
9
|
+
{
|
|
10
|
+
"X86" {
|
|
11
|
+
$_arch = "386"
|
|
12
|
+
}
|
|
13
|
+
"X64" {
|
|
14
|
+
$_arch = "amd64"
|
|
15
|
+
}
|
|
16
|
+
default {
|
|
17
|
+
Write-Host "Cannot handle arch of type $Env:RUNNER_ARCH"
|
|
18
|
+
Write-Host "Expected one of: [ X86 X64 ]"
|
|
19
|
+
exit 1
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
$_base_url = "https://github.com/mikefarah/yq/releases/download"
|
|
24
|
+
|
|
25
|
+
$_root_name = "yq_windows_${_arch}"
|
|
26
|
+
$_bin_name = "${_root_name}.exe"
|
|
27
|
+
|
|
28
|
+
Write-Host "Creating temporary directory $Env:RUNNER_TEMP\${_root_name}\"
|
|
29
|
+
New-Item "$Env:RUNNER_TEMP\${_root_name}\" -ItemType Directory -Force
|
|
30
|
+
|
|
31
|
+
if ($Env:DL_COMPRESSED -eq "true")
|
|
32
|
+
{
|
|
33
|
+
$_dl_name = "${_root_name}.zip"
|
|
34
|
+
$_dl_path = "$Env:RUNNER_TEMP\${_dl_name}"
|
|
35
|
+
}
|
|
36
|
+
else
|
|
37
|
+
{
|
|
38
|
+
$_dl_name = "${_bin_name}"
|
|
39
|
+
$_dl_path = "$Env:RUNNER_TEMP\${_root_name}\${_dl_name}"
|
|
40
|
+
Write-Host "Creating temporary directory $Env:RUNNER_TEMP\${_root_name}\"
|
|
41
|
+
New-Item "$Env:RUNNER_TEMP\${_root_name}\" -ItemType Directory -Force
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
$_version = "$Env:YQ_VERSION"
|
|
45
|
+
|
|
46
|
+
# default to _something_...
|
|
47
|
+
if ($_version -eq "")
|
|
48
|
+
{
|
|
49
|
+
$_version = "v4.44.3"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
$_dl_url = "${_base_url}/${_version}/${_dl_name}"
|
|
53
|
+
|
|
54
|
+
Write-Host "::endgroup::"
|
|
55
|
+
|
|
56
|
+
# download artifact
|
|
57
|
+
|
|
58
|
+
Write-Host "::group::Downloading yq ${_version}"
|
|
59
|
+
|
|
60
|
+
Write-Host "Src: ${_dl_url}"
|
|
61
|
+
Write-Host "Dst: ${_dl_path}"
|
|
62
|
+
|
|
63
|
+
Invoke-WebRequest -Uri "${_dl_url}" -OutFile "${_dl_path}"
|
|
64
|
+
|
|
65
|
+
Write-Host "::endgroup::"
|
|
66
|
+
|
|
67
|
+
# expand archive, if necessary
|
|
68
|
+
|
|
69
|
+
if ($Env:DL_COMPRESSED -eq "true")
|
|
70
|
+
{
|
|
71
|
+
Write-Host "::group::Expanding archive"
|
|
72
|
+
|
|
73
|
+
Expand-Archive -LiteralPath "${_dl_path}" -DestinationPath "$Env:RUNNER_TEMP\${_root_name}\"
|
|
74
|
+
|
|
75
|
+
Write-Host "Removing ${_dl_path}"
|
|
76
|
+
Remove-Item -Force -Path "${_dl_path}"
|
|
77
|
+
|
|
78
|
+
Write-Host "::endgroup::"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# install into tool cache
|
|
82
|
+
|
|
83
|
+
Write-Host "::group::Copying to tool cache"
|
|
84
|
+
|
|
85
|
+
Write-Host "Creating tool cache directory $Env:RUNNER_TOOL_CACHE\yq\"
|
|
86
|
+
New-Item "$Env:RUNNER_TOOL_CACHE\yq\" -ItemType Directory -Force
|
|
87
|
+
|
|
88
|
+
Write-Host "Installing into tool cache:"
|
|
89
|
+
Write-Host "Src: $Env:RUNNER_TEMP\${_root_name}\${_bin_name}"
|
|
90
|
+
Write-Host "Dst: $Env:RUNNER_TOOL_CACHE\yq\yq.exe"
|
|
91
|
+
Move-Item -Force -LiteralPath "$Env:RUNNER_TEMP\${_root_name}\${_bin_name}" -Destination "$Env:RUNNER_TOOL_CACHE\yq\yq.exe"
|
|
92
|
+
|
|
93
|
+
Write-Host "Removing $Env:RUNNER_TEMP\${_root_name}"
|
|
94
|
+
Remove-Item -Force -Recurse -Path "$Env:RUNNER_TEMP\${_root_name}"
|
|
95
|
+
|
|
96
|
+
Write-Host "Adding $Env:RUNNER_TOOL_CACHE\yq\ to path..."
|
|
97
|
+
Add-Content "$Env:GITHUB_PATH" "$Env:RUNNER_TOOL_CACHE\yq\"
|
|
98
|
+
|
|
99
|
+
Write-Host "::endgroup::"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Rust CI Config
|
|
2
|
+
description: Merge Rust CI Config
|
|
3
|
+
inputs:
|
|
4
|
+
git_token:
|
|
5
|
+
description: 'Token to authenticate for git'
|
|
6
|
+
required: false
|
|
7
|
+
arm64:
|
|
8
|
+
default: "ubicloud-standard-8-arm"
|
|
9
|
+
required: false
|
|
10
|
+
amd64:
|
|
11
|
+
default: "ubicloud-standard-4"
|
|
12
|
+
required: false
|
|
13
|
+
outputs:
|
|
14
|
+
config:
|
|
15
|
+
description: 'Configuration JSON output'
|
|
16
|
+
value: ${{ steps.config.outputs.config }}
|
|
17
|
+
runs:
|
|
18
|
+
using: composite
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout code
|
|
21
|
+
uses: actions/checkout@v6
|
|
22
|
+
with:
|
|
23
|
+
token: ${{ inputs.git_token || github.token }}
|
|
24
|
+
- name: generate
|
|
25
|
+
id: generate
|
|
26
|
+
uses: dougefresh/ci@main
|
|
27
|
+
- name: replace runners
|
|
28
|
+
id: config
|
|
29
|
+
shell: bash
|
|
30
|
+
run: |
|
|
31
|
+
CONFIG="$(echo '${{ steps.generate.outputs.config }}' | sed \
|
|
32
|
+
-e 's/vars.RUNNER_ARM64/${{ inputs.arm64 }}/g' \
|
|
33
|
+
-e 's/vars.RUNNER_AMD64/${{ inputs.amd64 }}/g')"
|
|
34
|
+
echo "config=$CONFIG" >> $GITHUB_OUTPUT
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: Rust Init
|
|
2
|
+
description: Initialize a Rust project with a basic structure and dependencies.
|
|
3
|
+
inputs:
|
|
4
|
+
git_token:
|
|
5
|
+
description: 'Token to authenticate for git'
|
|
6
|
+
required: false
|
|
7
|
+
packages:
|
|
8
|
+
description: 'Packages to install per OS, see .github/ci-configs/rust-default.yml'
|
|
9
|
+
required: false
|
|
10
|
+
default: ''
|
|
11
|
+
ref:
|
|
12
|
+
description: 'Ref to checkout'
|
|
13
|
+
required: false
|
|
14
|
+
default: ''
|
|
15
|
+
runs:
|
|
16
|
+
using: composite
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v6
|
|
20
|
+
with:
|
|
21
|
+
token: ${{ inputs.git_token || github.token }}
|
|
22
|
+
ref: ${{ inputs.ref }}
|
|
23
|
+
- name: cache
|
|
24
|
+
uses: ubicloud/rust-cache@v2
|
|
25
|
+
with:
|
|
26
|
+
cache-on-failure: 'true'
|
|
27
|
+
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
28
|
+
with:
|
|
29
|
+
toolchain: stable,nightly
|
|
30
|
+
components: rustfmt,clippy
|
|
31
|
+
# - name: Install nightyly
|
|
32
|
+
# id: toolchain-nightly
|
|
33
|
+
# uses: dtolnay/rust-toolchain@nightly
|
|
34
|
+
# with:
|
|
35
|
+
# components: "rustfmt,clippy"
|
|
36
|
+
# - name: Install stable
|
|
37
|
+
# id: toolchain-stable
|
|
38
|
+
# shell: bash
|
|
39
|
+
# run: |
|
|
40
|
+
# rustup toolchain install stable --component clippy --profile minimal --no-self-update
|
|
41
|
+
# rustup default stable
|
|
42
|
+
# echo "name=stable" >> $GITHUB_OUTPUT
|
|
43
|
+
- name: Debug versions
|
|
44
|
+
shell: bash
|
|
45
|
+
run: |
|
|
46
|
+
cargo +nightly --version
|
|
47
|
+
cargo +stable --version
|
|
48
|
+
|
|
49
|
+
- name: packages
|
|
50
|
+
shell: bash
|
|
51
|
+
if: ${{ inputs.packages }}
|
|
52
|
+
run: |
|
|
53
|
+
set -x
|
|
54
|
+
packages=""
|
|
55
|
+
case $RUNNER_OS in
|
|
56
|
+
Linux)
|
|
57
|
+
packages="${{ fromJSON(inputs.packages).Linux }}"
|
|
58
|
+
;;
|
|
59
|
+
macOS)
|
|
60
|
+
packages="${{ fromJSON(inputs.packages).macOS }}"
|
|
61
|
+
;;
|
|
62
|
+
*)
|
|
63
|
+
echo "Cannot handle OS of type $RUNNER_OS"
|
|
64
|
+
echo "Expected one of: [ Linux macOS ]"
|
|
65
|
+
exit 0
|
|
66
|
+
;;
|
|
67
|
+
esac
|
|
68
|
+
|
|
69
|
+
if [ -z "$packages" ]; then
|
|
70
|
+
echo "No packages to install"
|
|
71
|
+
exit 0
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
echo "Installing packages: $packages"
|
|
75
|
+
sudo $packages
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'$schema': https://github.com/CarteraMesh/ci/raw/refs/heads/main/schemas/rust-ci-config.schema.json
|
|
2
|
+
|
|
3
|
+
release:
|
|
4
|
+
cargo-publish: false
|
|
5
|
+
debian: false
|
|
6
|
+
profile: release
|
|
7
|
+
bin: dummy
|
|
8
|
+
os:
|
|
9
|
+
- target: 'aarch64-unknown-linux-gnu'
|
|
10
|
+
os: 'ubicloud-standard-8-arm64'
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
semver:
|
|
14
|
+
if: false
|
|
15
|
+
continue-on-error: true
|
|
16
|
+
extra:
|
|
17
|
+
if: true
|
|
18
|
+
continue-on-error: false
|
|
19
|
+
name: extra-dummy
|
|
20
|
+
run: echo "Running extra job"
|
|
21
|
+
|
|
22
|
+
pages:
|
|
23
|
+
mdbook:
|
|
24
|
+
if: true
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
ai:
|
|
2
|
+
enabled: true
|
|
3
|
+
allowed_bots: '*'
|
|
4
|
+
claude_args: ''
|
|
5
|
+
use_sticky_comment: false
|
|
6
|
+
track_progress: true
|
|
7
|
+
prompt: |
|
|
8
|
+
Perform a comprehensive code review with the following focus areas:
|
|
9
|
+
Provide detailed feedback using inline comments for ONLY issues, no praise inline comments.
|
|
10
|
+
Use top-level comments for general observations or praise
|
|
11
|
+
Do not be shy, I am a big boy and can handle criticism gracefully. I welcome feedback and suggestions.
|
|
12
|
+
|
|
13
|
+
Review this PR against our team checklist:
|
|
14
|
+
|
|
15
|
+
## Code Quality
|
|
16
|
+
- [ ] Code follows our style guide
|
|
17
|
+
- [ ] No commented-out code
|
|
18
|
+
- [ ] Meaningful variable names
|
|
19
|
+
- [ ] DRY principle followed
|
|
20
|
+
|
|
21
|
+
## Testing
|
|
22
|
+
- [ ] Unit tests for new functions
|
|
23
|
+
- [ ] Integration tests for new endpoints
|
|
24
|
+
- [ ] Edge cases covered
|
|
25
|
+
- [ ] Test coverage > 80%
|
|
26
|
+
|
|
27
|
+
## Documentation
|
|
28
|
+
- [ ] README updated if needed
|
|
29
|
+
- [ ] API docs updated
|
|
30
|
+
- [ ] Inline comments for complex logic
|
|
31
|
+
- [ ] CHANGELOG.md updated
|
|
32
|
+
|
|
33
|
+
## Security
|
|
34
|
+
- [ ] No hardcoded credentials
|
|
35
|
+
- [ ] Input validation implemented
|
|
36
|
+
- [ ] Proper error handling
|
|
37
|
+
- [ ] No sensitive data in logs
|
|
38
|
+
|
|
39
|
+
For each item, check if it is satisfied and comment on any that need attention.
|
|
40
|
+
Post a summary comment with checklist results.
|
|
41
|
+
# https://code.claude.com/docs/en/settings
|
|
42
|
+
# https://www.schemastore.org/claude-code-settings.json
|
|
43
|
+
settings:
|
|
44
|
+
attribution:
|
|
45
|
+
commit: 'Generated with JobsTaker'
|
|
46
|
+
pr: ''
|
|
47
|
+
permissions:
|
|
48
|
+
allow:
|
|
49
|
+
- mcp__github_inline_comment__create_inline_comment,
|
|
50
|
+
- Bash(gh pr comment:*),
|
|
51
|
+
- Bash(gh pr diff:*),
|
|
52
|
+
- Bash(gh pr view:*),
|
|
53
|
+
- Bash(grep .*),
|
|
54
|
+
- Bash(rg .*),
|
|
55
|
+
- Bash(npm run lint)
|
|
56
|
+
- Bash(npm run test:*)
|
|
57
|
+
- Bash(cargo .*)
|
|
58
|
+
deny:
|
|
59
|
+
- Bash(cargo publis.*)
|
|
60
|
+
# - Read(./.env)
|
|
61
|
+
# - Read(./.env.*)
|
|
62
|
+
# - Read(./secrets/**)
|
|
63
|
+
env:
|
|
64
|
+
CLAUDE_CODE_ENABLE_TELEMETRY: '0'
|
|
65
|
+
OTEL_METRICS_EXPORTER: otlp
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
global:
|
|
2
|
+
# to match $RUNNER_OS
|
|
3
|
+
packages:
|
|
4
|
+
Linux: ''
|
|
5
|
+
macOS: ''
|
|
6
|
+
Windows: ''
|
|
7
|
+
toolchains:
|
|
8
|
+
- stable
|
|
9
|
+
- nightly
|
|
10
|
+
features:
|
|
11
|
+
- default
|
|
12
|
+
rustlog: info
|
|
13
|
+
fireblocks:
|
|
14
|
+
enabled: false
|
|
15
|
+
set-env-vars: true
|
|
16
|
+
|
|
17
|
+
pages:
|
|
18
|
+
mdbook:
|
|
19
|
+
if: false
|
|
20
|
+
path: docs
|
|
21
|
+
version: latest
|
|
22
|
+
command: mdbook build
|
|
23
|
+
|
|
24
|
+
release:
|
|
25
|
+
cargo-publish: true # release to cargo, otherwise just tag
|
|
26
|
+
debian: false
|
|
27
|
+
profile: 'release'
|
|
28
|
+
os:
|
|
29
|
+
- target: aarch64-unknown-linux-gnu
|
|
30
|
+
os: ubicloud-standard-8-arm
|
|
31
|
+
- target: x86_64-unknown-linux-gnu
|
|
32
|
+
os: ubicloud-standard-4
|
|
33
|
+
- target: aarch64-apple-darwin
|
|
34
|
+
os: macos-latest
|
|
35
|
+
# - target: x86_64-pc-windows-msvc
|
|
36
|
+
# os: windows-latest
|
|
37
|
+
jobs:
|
|
38
|
+
coverage:
|
|
39
|
+
if: true
|
|
40
|
+
continue-on-error: false
|
|
41
|
+
args:
|
|
42
|
+
test: ''
|
|
43
|
+
llvm: ''
|
|
44
|
+
run: |
|
|
45
|
+
cmd="cargo llvm-cov ${LLVM_ARGS} --locked --lcov --output-path lcov-${FEATURES}.info --no-fail-fast"
|
|
46
|
+
if [ "$FEATURES" == "default" ]; then
|
|
47
|
+
$cmd -- --no-capture $CARGO_ARGS
|
|
48
|
+
else
|
|
49
|
+
$cmd --features "$FEATURES" -- --no-capture $CARGO_ARGS
|
|
50
|
+
fi
|
|
51
|
+
matrix:
|
|
52
|
+
os: []
|
|
53
|
+
toolchains:
|
|
54
|
+
- stable
|
|
55
|
+
features:
|
|
56
|
+
- default
|
|
57
|
+
fmt:
|
|
58
|
+
if: true
|
|
59
|
+
continue-on-error: false
|
|
60
|
+
run: cargo +nightly fmt --check --all
|
|
61
|
+
clippy:
|
|
62
|
+
if: true
|
|
63
|
+
continue-on-error: false
|
|
64
|
+
flags: ''
|
|
65
|
+
matrix:
|
|
66
|
+
os: []
|
|
67
|
+
toolchains:
|
|
68
|
+
- stable
|
|
69
|
+
features:
|
|
70
|
+
- default
|
|
71
|
+
|
|
72
|
+
semver:
|
|
73
|
+
if: true
|
|
74
|
+
continue-on-error: false
|
|
75
|
+
hack:
|
|
76
|
+
if: true
|
|
77
|
+
continue-on-error: false
|
|
78
|
+
run: cargo hack --feature-powerset check
|
|
79
|
+
doc:
|
|
80
|
+
if: true
|
|
81
|
+
continue-on-error: false
|
|
82
|
+
run: cargo +nightly docs-rs
|
|
83
|
+
|
|
84
|
+
cargo-sort:
|
|
85
|
+
if: true
|
|
86
|
+
continue-on-error: false
|
|
87
|
+
run: |
|
|
88
|
+
if [ -f ./scripts/cargo-sort.sh ]; then
|
|
89
|
+
./scripts/cargo-sort.sh
|
|
90
|
+
else
|
|
91
|
+
cargo sort -c -g
|
|
92
|
+
fi
|
|
93
|
+
dependencies:
|
|
94
|
+
if: true
|
|
95
|
+
continue-on-error: false
|
|
96
|
+
run: cargo machete --with-metadata
|
|
97
|
+
|
|
98
|
+
sanitizers:
|
|
99
|
+
enabled: true
|
|
100
|
+
matrix:
|
|
101
|
+
os: []
|
|
102
|
+
features:
|
|
103
|
+
- default
|
|
104
|
+
address:
|
|
105
|
+
if: true
|
|
106
|
+
continue-on-error: false
|
|
107
|
+
run: cargo test --lib --tests --no-fail-fast --target x86_64-unknown-linux-gnu -- --no-capture
|
|
108
|
+
leak:
|
|
109
|
+
if: true
|
|
110
|
+
continue-on-error: false
|
|
111
|
+
run: cargo test --target x86_64-unknown-linux-gnu -- --no-capture
|
|
112
|
+
thread:
|
|
113
|
+
if: false
|
|
114
|
+
continue-on-error: false
|
|
115
|
+
run: cargo test --target x86_64-unknown-linux-gnu -- --test-threads=1
|