apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/destiny.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: 2fbd923bcef1a4a0a31aa1a623419205 creationTimestamp: "2026-05-28T08:45:35Z" generation: 6 labels: branch: main build: "39" context: release created-by-lighthouse: "true" event-GUID: 929e858a-5a71-11f1-801f-d3af2e7bda22 lighthouse.jenkins-x.io/baseSHA: f6008384738ad53eb598b0b0834a7ad5f9ca1e4d lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1779957934922" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-destiny-main-release-t5nkz lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: f6008384738ad53eb598b0b0834a7ad5f9ca1e4d lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: destiny lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: apitaltrade-destiny-main-release-gbcdq-from-build-pack-pod provider: github repository: destiny tekton.dev/pipeline: apitaltrade-destiny-main-release-gbcdq managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.18 operation: Update time: "2026-05-28T08:48:31Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:buildLogsUrl: {} f:completedTimestamp: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-05-28T08:52:04Z" name: greencapitaltrade-destiny-main-39 namespace: jx resourceVersion: "56681867" uid: f6421612-3663-41c2-b586-306be218e778 spec: baseSHA: f6008384738ad53eb598b0b0834a7ad5f9ca1e4d batchPipelineActivity: {} build: "39" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/destiny/main/39.log completedTimestamp: "2026-05-28T08:49:20Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: destiny gitUrl: https://github.com/greencapitaltrade/destiny.git lastCommitMessage: | feat: per-org integration credentials infrastructure Add the storage layer for per-organization Digio credentials, encrypted at rest with the existing helpers/vault AES-256-GCM key. This is the substrate for the upcoming Digio KYC / eSign / eNACH per-org cutover (PR2-5); no runtime behaviour changes yet. - New integration_credentials table keyed by (organization_id, integration, environment) with a partial unique index where active=true. Single active credential row per (org, integration, env), rotations and sandbox/prod pairs allowed. - IntegrationCredential model: virtual credentials getter/setter wraps helpers/vault. Static resolve(integration, orgId, opts) for the runtime lookup path. timestamps:false to opt out of the gct utils paranoid default (matches blacklist convention). - provider/digio.js: getCredentials() validates inputs and resolves through the model, throwing typed GcError codes (unknown_integration, missing_organization_id, credentials_not_configured). Also exposes basicAuthHeader() so later PRs can mint Digio's Basic auth header from decrypted creds. - routes/integration_credentials.js: admin CRUD scoped to x-gct-org-id, mounted at /v1/integration_credentials. Credentials are always masked on read (returns client_id_hint = last 4 of client_id). Niyamika enforces admin role upstream, matching the /flows and /blacklist convention in app.js. - 39 jest cases across three files: encryption round-trip, ciphertext-never-leaks-plaintext, fresh-nonce-per-update, default values, validation, partial unique constraint behaviour, resolver error paths, admin CRUD, masking, cross-org isolation, 409 on duplicate active row. lastCommitSHA: a6732d145e5b2080ac1d4a71ef22d0dacc095080 message: 'Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/destiny/main releaseNotesURL: https://github.com/greencapitaltrade/destiny/releases/tag/v1.54.0 startedTimestamp: "2026-05-28T08:45:35Z" status: Failed steps: - kind: Stage stage: completedTimestamp: "2026-05-28T08:49:20Z" name: from build pack startedTimestamp: "2026-05-28T08:45:39Z" status: Failed steps: - completedTimestamp: "2026-05-28T08:45:51Z" name: Git Clone startedTimestamp: "2026-05-28T08:45:39Z" status: Succeeded - completedTimestamp: "2026-05-28T08:45:55Z" name: Next Version startedTimestamp: "2026-05-28T08:45:51Z" status: Succeeded - completedTimestamp: "2026-05-28T08:45:58Z" name: Jx Variables startedTimestamp: "2026-05-28T08:45:56Z" status: Succeeded - completedTimestamp: "2026-05-28T08:46:55Z" name: Build Npm Install startedTimestamp: "2026-05-28T08:45:59Z" status: Succeeded - completedTimestamp: "2026-05-28T08:48:10Z" name: Build Container Build startedTimestamp: "2026-05-28T08:46:55Z" status: Succeeded - completedTimestamp: "2026-05-28T08:48:31Z" name: Promote Changelog startedTimestamp: "2026-05-28T08:48:10Z" status: Succeeded - completedTimestamp: "2026-05-28T08:48:34Z" name: Promote Helm Release startedTimestamp: "2026-05-28T08:48:31Z" status: Succeeded - completedTimestamp: "2026-05-28T08:49:20Z" name: Promote Jx Promote startedTimestamp: "2026-05-28T08:48:35Z" status: Failed - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4020 startedTimestamp: "2026-05-28T08:49:14Z" status: Succeeded startedTimestamp: "2026-05-28T08:49:14Z" status: Succeeded version: 1.54.0 status: {}