@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.
Files changed (54) hide show
  1. package/.checkov.yml +7 -0
  2. package/.env.example +61 -0
  3. package/.gitattributes +3 -0
  4. package/.github/actions/install-yq/action.yaml +80 -0
  5. package/.github/actions/install-yq/scripts/unixish.sh +112 -0
  6. package/.github/actions/install-yq/scripts/windowsish.ps1 +99 -0
  7. package/.github/actions/rust-config/action.yml +34 -0
  8. package/.github/actions/rust-init/action.yml +75 -0
  9. package/.github/ci-configs/dummy.yml +24 -0
  10. package/.github/ci-configs/rust/ai.yml +65 -0
  11. package/.github/ci-configs/rust-default.yml +115 -0
  12. package/.github/ci-configs/test/01.yml +9 -0
  13. package/.github/copilot-instructions.md +118 -0
  14. package/.github/dependabot.yml +26 -0
  15. package/.github/prompts/create-release-notes.prompt.md +29 -0
  16. package/.github/prompts/unit-test.prompt.md +77 -0
  17. package/.github/rust-ci.ts +5 -0
  18. package/.github/workflows/action-ci.yml +39 -0
  19. package/.github/workflows/action-review.yml +14 -0
  20. package/.github/workflows/dummy-release.yml +32 -0
  21. package/.github/workflows/dummy-test.yml +16 -0
  22. package/.github/workflows/pages.yml +59 -0
  23. package/.github/workflows/pr-review.yml +93 -0
  24. package/.github/workflows/release.yml +41 -0
  25. package/.github/workflows/rust-release.yml +133 -0
  26. package/.github/workflows/rust.yml +247 -0
  27. package/.node-version +1 -0
  28. package/AGENTS.md +13 -0
  29. package/Cargo.toml +6 -0
  30. package/LICENSE +21 -0
  31. package/README.md +58 -0
  32. package/action.yml +32 -0
  33. package/biome.jsonc +108 -0
  34. package/bun.lock +22 -0
  35. package/dist/ai.d.ts +11 -0
  36. package/dist/ai.d.ts.map +1 -0
  37. package/dist/ai.js +52 -0
  38. package/dist/ai.js.map +1 -0
  39. package/dist/index.d.ts +106 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +212 -0
  42. package/dist/index.js.map +1 -0
  43. package/docs/SUMMARY.md +3 -0
  44. package/docs/book.toml +49 -0
  45. package/docs/index.md +32 -0
  46. package/package.json +30 -0
  47. package/pre-commit +2 -0
  48. package/scripts/bump-version.ts +16 -0
  49. package/scripts/generate-rust.ts +9 -0
  50. package/src/ai.ts +61 -0
  51. package/src/index.ts +287 -0
  52. package/src/lib.rs +8 -0
  53. package/src/main.rs +11 -0
  54. package/tsconfig.json +25 -0
package/.checkov.yml ADDED
@@ -0,0 +1,7 @@
1
+ # See: https://www.checkov.io/1.Welcome/Quick%20Start.html
2
+
3
+ compact: true
4
+ quiet: true
5
+ skip-path:
6
+ - coverage
7
+ - node_modules
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,3 @@
1
+ * text=auto eol=lf
2
+
3
+ dist/** -diff linguist-generated=true
@@ -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
@@ -0,0 +1,9 @@
1
+ global:
2
+ packages:
3
+ Linux: 'curl'
4
+ rustlog: debug
5
+ fireblocks:
6
+ enabled: true
7
+ jobs:
8
+ coverage:
9
+ if: false