Skip to content

Commit 9905ef4

Browse files
chore: update
1 parent 2dad66d commit 9905ef4

30 files changed

+263
-128
lines changed

.github/CODEOWNERS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# aignostics code owners
2+
3+
* @helmut-hoffer-von-ankershoffen
4+
5+
# Reference: <https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners>

.github/workflows/_install_dev_tools.bash

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ log "Starting installation of development tools..."
1313
# Disable man-db updates to speed up package installation
1414
sudo rm /var/lib/man-db/auto-update
1515

16+
# Install APT packages
1617
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
1718
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
1819
sudo apt-get update
19-
sudo apt-get install --no-install-recommends -y curl gnupg2 imagemagick jq trivy xsltproc
20+
sudo apt-get install --no-install-recommends -y curl gnupg2 jq trivy xsltproc
2021

22+
# Install further tools not project specific
23+
curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="2.57.0" sh
24+
25+
# Install project specific tools
2126
.github/workflows/_install_dev_tools_project.bash
2227

2328
log "Completed installation of development tools."

.github/workflows/_install_dev_tools_project.bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ log "Starting installation of development tools specific to Aignostics Python SD
1212

1313
# Add your project specific installation commands below
1414
# sudo apt-get install --no-install-recommends -y YOUR_PACKAGE
15-
sudo apt-get install --no-install-recommends -y p7zip-rar
15+
sudo apt-get install --no-install-recommends -y p7zip-rar imagemagick
1616

1717
log "Completed installation of development tools specific to Aignostics Python SDK."

.github/workflows/_package-publish.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ on:
99
type: string
1010
secrets:
1111
UV_PUBLISH_TOKEN:
12-
required: false
12+
required: true
1313
SLACK_WEBHOOK_URL_RELEASE_ANNOUNCEMENT:
14-
required: false
14+
required: true
1515
SLACK_CHANNEL_ID_RELEASE_ANNOUNCEMENT:
16-
required: false
16+
required: true
17+
SENTRY_AUTH_TOKEN:
18+
required: true
1719

1820
env:
1921
# https://gist.github.com/NodeJSmith/e7e37f2d3f162456869f015f842bcf15
@@ -220,6 +222,16 @@ jobs:
220222
gh release create ${{ github.ref_name }} ./dist/* ./dist_native_zipped/* ./audit-results/* \
221223
--notes-file ${{ steps.git-cliff.outputs.changelog }}
222224
225+
- name: Inform Sentry about release
226+
uses: getsentry/action-release@4f502acc1df792390abe36f2dcb03612ef144818 # v3.3.0
227+
env:
228+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
229+
SENTRY_ORG: ${{ vars.SENTRY_ORG }}
230+
SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }}
231+
with:
232+
environment: production
233+
release: ${{ github.ref_name }}
234+
223235
- name: Release Announcement
224236
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
225237
with:

.github/workflows/_scheduled-test-daily.yml

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,27 @@ on:
1010
type: string
1111
secrets:
1212
AIGNOSTICS_CLIENT_ID_DEVICE_STAGING:
13-
required: false
13+
required: true
1414
AIGNOSTICS_REFRESH_TOKEN_STAGING:
15-
required: false
15+
required: true
1616
GCP_CREDENTIALS_STAGING:
17-
required: false
17+
required: true
1818
BETTERSTACK_HEARTBEAT_URL_FLOWS_STAGING:
19-
required: false
19+
required: true
2020
AIGNOSTICS_CLIENT_ID_DEVICE_PRODUCTION:
21-
required: false
21+
required: true
2222
AIGNOSTICS_REFRESH_TOKEN_PRODUCTION:
23-
required: false
23+
required: true
2424
GCP_CREDENTIALS_PRODUCTION:
25-
required: false
25+
required: true
2626
BETTERSTACK_HEARTBEAT_URL_FLOWS_PRODUCTION:
27-
required: false
27+
required: true
2828
CODECOV_TOKEN:
29-
required: false
29+
required: true
3030
SONAR_TOKEN:
31-
required: false
31+
required: true
32+
SENTRY_DSN:
33+
required: true
3234

3335
env:
3436
# https://gist.github.com/NodeJSmith/e7e37f2d3f162456869f015f842bcf15
@@ -37,7 +39,7 @@ env:
3739

3840
jobs:
3941

40-
test:
42+
test-scheduled-daily:
4143
runs-on: "ubuntu-latest"
4244
permissions:
4345
attestations: write
@@ -59,7 +61,6 @@ jobs:
5961
cache-dependency-glob: uv.lock
6062

6163
- name: Install dev tools
62-
if: ${{ matrix.runner == 'ubuntu-latest' || matrix.runner == 'ubuntu-24.04-arm' }}
6364
shell: bash
6465
run: .github/workflows/_install_dev_tools.bash
6566

@@ -177,7 +178,7 @@ jobs:
177178
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
178179
if: ${{ always() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
179180
with:
180-
name: test-results-${{ matrix.runner }}
181+
name: test-results-ubuntu-latest
181182
path: |
182183
reports/mypy_junit.xml
183184
reports/junit_*.xml
@@ -245,11 +246,15 @@ jobs:
245246
if: always()
246247
env:
247248
BETTERSTACK_HEARTBEAT_URL: "${{ inputs.platform_environment == 'staging' && secrets.BETTERSTACK_HEARTBEAT_URL_FLOWS_STAGING || secrets.BETTERSTACK_HEARTBEAT_URL_FLOWS_PRODUCTION }}"
249+
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
248250
shell: bash
249251
run: |
250252
EXIT_CODE=${{ steps.test-status.outputs.exit_code }}
251253
FAILED_TESTS="${{ steps.test-status.outputs.failed_tests }}"
252254
255+
# Send heartbeat to Sentry, defining the schedule on the fly
256+
SENTRY_EXIT_CODE=$(sentry-cli monitors run -e CI --schedule "0 12 * * *" --check-in-margin 30 --max-runtime 1 scheduled-testing-${{ inputs.platform_environment }}-hourly --timezone "Europe/Berlin" -- sh -c "exit $EXIT_CODE")
257+
253258
# Provide heartbeat to BetterStack for monitoring/alerting if heartbeat url is configured as secret
254259
if [ -n "$BETTERSTACK_HEARTBEAT_URL" ]; then
255260
BETTERSTACK_METADATA_PAYLOAD=$(jq -n \
@@ -293,9 +298,9 @@ jobs:
293298
smoke: $smoke_status,
294299
unit: $unit_status,
295300
integration: $integration_status,
296-
e2e: $e2e_status,
297-
e2e_long_running: $e2e_long_status,
298-
e2e_very_long_running: $e2e_very_long_status
301+
e2e_regular: $e2e_regular_status,
302+
e2e_long_runnin: $e2e_long_running_status,
303+
e2e_very_long_running: $e2e_very_long_running_status
299304
},
300305
timestamp: $timestamp,
301306
}'
@@ -314,19 +319,19 @@ jobs:
314319
315320
- name: Upload coverage reports to Codecov
316321
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
317-
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') && matrix.runner == 'ubuntu-latest' }}
322+
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT')}}
318323
with:
319324
token: ${{ secrets.CODECOV_TOKEN }}
320325
slug: aignostics/python-sdk
321326

322327
- name: Upload test results to Codecov
323-
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') && matrix.runner == 'ubuntu-latest' }}
328+
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
324329
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
325330
with:
326331
token: ${{ secrets.CODECOV_TOKEN }}
327332

328333
- name: SonarQube Scan
329-
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') && matrix.runner == 'ubuntu-latest' }}
334+
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
330335
uses: SonarSource/sonarqube-scan-action@fd88b7d7ccbaefd23d8f36f73b59db7a3d246602 # v6.0.0
331336
env:
332337
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/_scheduled-test-hourly.yml

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,31 @@ on:
1515
type: string
1616
secrets:
1717
AIGNOSTICS_CLIENT_ID_DEVICE_STAGING:
18-
required: false
18+
required: true
1919
AIGNOSTICS_REFRESH_TOKEN_STAGING:
20-
required: false
20+
required: true
2121
GCP_CREDENTIALS_STAGING:
22-
required: false
22+
required: true
2323
BETTERSTACK_HEARTBEAT_URL_STAGING:
24-
required: false
24+
required: true
2525
AIGNOSTICS_CLIENT_ID_DEVICE_PRODUCTION:
26-
required: false
26+
required: true
2727
AIGNOSTICS_REFRESH_TOKEN_PRODUCTION:
28-
required: false
28+
required: true
2929
GCP_CREDENTIALS_PRODUCTION:
30-
required: false
30+
required: true
3131
BETTERSTACK_HEARTBEAT_URL_PRODUCTION:
32-
required: false
32+
required: true
33+
SENTRY_DSN:
34+
required: true
3335

3436
env:
3537
# https://gist.github.com/NodeJSmith/e7e37f2d3f162456869f015f842bcf15
3638
PYTHONIOENCODING: "utf8"
3739
AIGNOSTICS_PLATFORM_ENVIRONMENT: ${{ inputs.platform_environment }}
3840

3941
jobs:
40-
test-scheduled:
42+
test-scheduled-hourly:
4143
runs-on: ubuntu-latest
4244
permissions:
4345
contents: read
@@ -84,6 +86,7 @@ jobs:
8486
- name: Test / scheduled
8587
env:
8688
BETTERSTACK_HEARTBEAT_URL: "${{ inputs.platform_environment == 'staging' && secrets.BETTERSTACK_HEARTBEAT_URL_STAGING || secrets.BETTERSTACK_HEARTBEAT_URL_PRODUCTION }}"
89+
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
8790
shell: bash
8891
run: |
8992
set +e
@@ -110,6 +113,10 @@ jobs:
110113
echo "# No test coverage computed." >> $GITHUB_STEP_SUMMARY
111114
echo "" >> $GITHUB_STEP_SUMMARY
112115
fi
116+
117+
# Send heartbeat to Sentry, defining the schedule on the fly
118+
SENTRY_EXIT_CODE=$(sentry-cli monitors run -e CI --schedule "0 * * * *" --check-in-margin 30 --max-runtime 1 scheduled-testing-${{ inputs.platform_environment }}-hourly --timezone "Europe/Berlin" -- sh -c "exit $EXIT_CODE")
119+
113120
# Provide heartbeat to BetterStack for monitoring/alerting if heartbeat url is configured as secret
114121
if [ -n "$BETTERSTACK_HEARTBEAT_URL" ]; then
115122
BETTERSTACK_METADATA_PAYLOAD=$(jq -n \

.github/workflows/ci-cd.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ jobs:
156156
UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
157157
SLACK_WEBHOOK_URL_RELEASE_ANNOUNCEMENT: ${{ secrets.SLACK_WEBHOOK_URL_RELEASE_ANNOUNCEMENT }}
158158
SLACK_CHANNEL_ID_RELEASE_ANNOUNCEMENT: ${{ secrets.SLACK_CHANNEL_ID_RELEASE_ANNOUNCEMENT }}
159+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
159160

160161
docker_publish:
161162
needs: [get-commit-message, ketryx_report_and_check]

.github/workflows/claude-code-automation-operational-excellence-weekly.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
platform_environment: ${{ inputs.platform_environment || 'staging' }}
2323
mode: 'automation'
2424
track_progress: ${{ github.event_name != 'workflow_dispatch' && true || false }}
25-
allowed_tools: 'Read,Write,Edit,Glob,Grep,LS,Bash(git:*),Bash(gh:*)'
25+
allowed_tools: 'Read,Write,Edit,Glob,Grep,LS,,WebFetch,WebSearch,Bash(git:*),Bash(gh:*)'
2626
prompt: |
2727
# 🎯 AI-POWERED OPERATIONAL EXCELLENCE AUDIT
2828
@@ -35,9 +35,18 @@ jobs:
3535
tools (Ruff, MyPy, PyRight, Codecov, SonarQube, etc.) cannot assess.
3636
3737
Read and apply standards from:
38-
- **CODE_STYLE.md** - Coding standards for humans and AI
38+
- **CODE_STYLE.md** - Coding standards for humans and AI assistants
3939
- **CONTRIBUTING.md** - Development workflow
4040
- **OPERATIONAL_EXCELLENCE.md** - Toolchain overview
41+
- **Best practices** - Research independently, using web search and loading web pages as needed
42+
43+
Be critical, do never just rubber-stamp.
44+
- Getting 5 stars must be challenging; look for subtle issues.
45+
- Insist to raise the bar; aim for excellence in every aspect.
46+
- Provide clear examples to illustrate your points; don't just state opinions.
47+
- Apply radical candor in your feedback; care personally while challenging directly.
48+
- Prioritize findings by impact on customer experience, maintainability, and security
49+
- Ultrathink to find patterns and learnings; don't settle for surface-level observations.
4150
4251
## Audit Areas
4352

.github/workflows/scheduled-audit-hourly.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ name: "+ Scheduled Audit (Hourly)"
33
on:
44
schedule:
55
- cron: '0 * * * *'
6+
workflow_dispatch:
7+
inputs:
8+
branch:
9+
description: 'Branch to test (leave empty for main)'
10+
required: false
11+
type: string
12+
default: ''
613

714
jobs:
815
audit-scheduled:

.github/workflows/scheduled-testing-production-daily.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313

1414
jobs:
1515

16-
test:
16+
scheduled-testing-production-daily:
1717
uses: ./.github/workflows/_scheduled-test-daily.yml
1818
with:
1919
platform_environment: "production"
@@ -33,3 +33,4 @@ jobs:
3333
BETTERSTACK_HEARTBEAT_URL_FLOWS_PRODUCTION: ${{ secrets.BETTERSTACK_HEARTBEAT_URL_FLOWS_PRODUCTION }}
3434
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
3535
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
36+
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} # For heartbeat only

0 commit comments

Comments
 (0)