From bf8e8153f991cfd161789f0172e2f7d32fec8707 Mon Sep 17 00:00:00 2001 From: bhumi46 Date: Fri, 13 Feb 2026 22:40:24 +0530 Subject: [PATCH 01/11] [MOSIP-44447]updated to take secret from gh secret Signed-off-by: bhumi46 --- .github/workflows/image-transfer.yml | 54 ++++++++++++++++------------ release/vidivi/README.md | 42 ++++++++++++++++++---- 2 files changed, 67 insertions(+), 29 deletions(-) diff --git a/.github/workflows/image-transfer.yml b/.github/workflows/image-transfer.yml index 032b267d..3f20fd73 100644 --- a/.github/workflows/image-transfer.yml +++ b/.github/workflows/image-transfer.yml @@ -8,11 +8,6 @@ on: required: true default: '' type: string - TOKEN: - description: 'provide docker hub token' - required: false - default: '' - type: string DESTINATION_ORGANIZATION: description: 'provide docker hub destination org' required: true @@ -43,27 +38,40 @@ jobs: runs-on: ubuntu-latest outputs: TOKEN: ${{ steps.ORG_TOKEN.outputs.TOKEN }} - USERNAME: ${{ steps.ORG_TOKEN.outputs.USERNAME }} steps: - - name: Check if input TOKEN is empty - if: ${{ inputs.TOKEN == '' }} + - name: Set organization secrets dynamically id: ORG_TOKEN run: | - if [[ ${{ inputs.DESTINATION_ORGANIZATION }} == mosipqa ]]; then - echo "TOKEN=QA_NAMESPACE_DOCKER_HUB" >> $GITHUB_OUTPUT - echo "USERNAME=DOCKER_USERNAME" >> $GITHUB_OUTPUT - fi - if [[ ${{ inputs.DESTINATION_ORGANIZATION }} == mosipint ]]; then - echo "TOKEN=INT_NAMESPACE_DOCKER_HUB" >> $GITHUB_OUTPUT - echo "USERNAME=DOCKER_USERNAME" >> $GITHUB_OUTPUT - fi - - name: Print Secret Name + ORG="${{ inputs.DESTINATION_ORGANIZATION }}" + + # Convert organization name to uppercase for secret name + ORG_UPPER=$(echo "$ORG" | tr '[:lower:]' '[:upper:]') + + # Dynamically construct secret name based on organization + TOKEN_SECRET="${ORG_UPPER}_DOCKER_TOKEN" + + echo "TOKEN=${TOKEN_SECRET}" >> $GITHUB_OUTPUT + + - name: Validate secret configuration + env: + TOKEN_EXISTS: ${{ secrets[steps.ORG_TOKEN.outputs.TOKEN] != '' }} run: | - echo "ORGANIZATION NAME : ${{ inputs.DESTINATION_ORGANIZATION }} " - echo "SECRET NAME : ${{ steps.ORG_TOKEN.outputs.TOKEN }}" - echo "USERNAME : ${{ steps.ORG_TOKEN.outputs.USERNAME }}" - echo "REGISTRY URL : ${{ inputs.REGISTRY_URL }}" - + SECRET_NAME="${{ steps.ORG_TOKEN.outputs.TOKEN }}" + + if [ "$TOKEN_EXISTS" != "true" ]; then + echo "❌ ERROR: Secret '$SECRET_NAME' is not configured or is empty" + echo "" + echo "Please configure the following secret in GitHub repository settings:" + echo " Secret name: $SECRET_NAME" + echo " Path: Settings → Secrets and variables → Actions → New repository secret" + echo "" + echo "For organization '${{ inputs.DESTINATION_ORGANIZATION }}', you need:" + echo " - Secret: $SECRET_NAME" + echo " - Value: Your Docker registry token/password" + exit 1 + fi + + echo "✅ Secret '$SECRET_NAME' is configured" Image-transfer: needs: chk_token uses: mosip/kattu/.github/workflows/image-transfer.yml@master @@ -74,6 +82,6 @@ jobs: ENABLE_WIREGUARD: ${{ inputs.ENABLE_WIREGUARD }} USERNAME: ${{ inputs.USERNAME }} secrets: - TOKEN: "${{ secrets[needs.chk_token.outputs.TOKEN] || inputs.TOKEN }}" + TOKEN: "${{ secrets[needs.chk_token.outputs.TOKEN] }}" SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_DEVOPS }} WIREGUARD_CONFIG: ${{ secrets.WIREGUARD_CONFIG }} diff --git a/release/vidivi/README.md b/release/vidivi/README.md index 0de7e6de..f29e01e5 100644 --- a/release/vidivi/README.md +++ b/release/vidivi/README.md @@ -192,19 +192,43 @@ Execute the [Manual workflow to transfer images](https://github.com/mosip/releas | Input | Description | Required | Default | Example | |-------|-------------|----------|---------|---------| | `USERNAME` | Registry username | Yes | - | `robot$mosipdev+release-bot` (Harbor)
`myusername` (Docker Hub) | -| `TOKEN` | Registry token/password | Yes (secret) | - | Robot account token or personal access token | -| `DESTINATION_ORGANIZATION` | Destination org/project | Yes | - | `mosipid`, `library`, `myproject` | +| `DESTINATION_ORGANIZATION` | Destination org/project | Yes | - | `mosipid`, `mosipqa`, `myproject` | | `REGISTRY_URL` | Destination registry URL | Yes | `https://index.docker.io/v1/` | `https://harbor.example.com` | | `REGISTRY_TYPE` | Registry type | Yes | `dockerhub` | `dockerhub`, `harbor`, `other` | | `ENABLE_WIREGUARD` | Enable VPN for private networks | No | `false` | `true` or `false` | ### Workflow Secrets -Configure these in GitHub repository settings → Secrets: +Configure these GitHub secrets dynamically based on your destination organization: -- `TOKEN`: Registry authentication token -- `SLACK_WEBHOOK_URL`: Slack notification webhook -- `WIREGUARD_CONFIG`: (Optional) WireGuard VPN configuration for private registries +**Secret Naming Convention:** +- Token: `_DOCKER_TOKEN` +- Examples: + - For `mosipqa` org → `MOSIPQA_DOCKER_TOKEN` + - For `mosipdev` org → `MOSIPDEV_DOCKER_TOKEN` + - For `acmecorp` org → `ACMECORP_DOCKER_TOKEN` + +**Required Secrets:** +1. **`_DOCKER_TOKEN`**: Registry authentication token for the specific organization + - Docker Hub: Personal Access Token or Account Password + - Harbor: Robot account token + - Other registries: Appropriate authentication token + +2. **`SLACK_WEBHOOK_DEVOPS`**: Slack notification webhook (shared across all workflows) + +3. **`WIREGUARD_CONFIG`**: (Optional) WireGuard VPN configuration for private registries + +**How to Add Secrets:** +1. Go to GitHub repository → Settings → Secrets and variables → Actions +2. Click "New repository secret" +3. Add secrets following the naming convention above +4. For a new organization `myorg`, create: `MYORG_DOCKER_TOKEN` + +**Security Benefits:** +- Tokens are never exposed in workflow logs +- Each organization has isolated credentials +- No hardcoded credentials in workflow files +- Automatic secret selection based on destination organization ### Running the Workflow @@ -221,6 +245,12 @@ Configure these in GitHub repository settings → Secrets: ``` 5. Click "Run workflow" +**Note:** The workflow automatically selects the correct token secret based on the `DESTINATION_ORGANIZATION` input: +- Organization `mosipqa` uses secret `MOSIPQA_DOCKER_TOKEN` +- Organization `mosipdev` uses secret `MOSIPDEV_DOCKER_TOKEN` +- Organization `acmecorp` uses secret `ACMECORP_DOCKER_TOKEN` +- And so on... + ### Workflow Features ✅ **Automated Verification**: Checks source image existence before transfer From 6f99b66f696843db7e2e4548bbe06e29067504ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Feb 2026 17:20:51 +0000 Subject: [PATCH 02/11] Image transfer: 2 completed, 00 failed to bn46 --- release/vidivi/logs/vidivi.log | 208 ++++++++++++++++++------------ release/vidivi/transfer_report.md | 11 +- 2 files changed, 135 insertions(+), 84 deletions(-) diff --git a/release/vidivi/logs/vidivi.log b/release/vidivi/logs/vidivi.log index 3fa47d90..5b21c30c 100644 --- a/release/vidivi/logs/vidivi.log +++ b/release/vidivi/logs/vidivi.log @@ -1,80 +1,130 @@ - 12-Dec-25 13:27:10 INFO LOGFILE CREATED : vidivi.log - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO ******************** Check Images List ************************************************************************************ - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO IMAGES= [['mosipdev/partner-onboarder:release-1.3.x-beta.2', '1.3.x-beta.2']] - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO ******************** Check existence of Source Images ******************************************************************* - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO src = "mosipdev/partner-onboarder" tag = "release-1.3.x-beta.2" - 12-Dec-25 13:27:10 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 12-Dec-25 13:27:10 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:mosipdev/partner-onboarder:pull HTTP/1.1" 200 None - 12-Dec-25 13:27:10 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 - 12-Dec-25 13:27:10 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/mosipdev/partner-onboarder/tags/release-1.3.x-beta.2 HTTP/1.1" 200 None - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO ******************** Check existence of Destination Docker Account *************************************************************** - 12-Dec-25 13:27:10 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 - 12-Dec-25 13:27:10 DEBUG https://hub.docker.com:443 "GET /v2/users/mosipqa HTTP/1.1" 308 0 - 12-Dec-25 13:27:10 DEBUG https://hub.docker.com:443 "GET /v2/orgs/mosipqa HTTP/1.1" 200 None - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO ******************** Check existence of Destination Images *************************************************************** - 12-Dec-25 13:27:10 INFO - 12-Dec-25 13:27:10 INFO [ mosipqa/partner-onboarder ] - 12-Dec-25 13:27:11 WARNING Crane digest failed for index.docker.io/mosipqa/partner-onboarder:1.3.x-beta.2: 2025/12/12 13:27:10 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/mosipqa/partner-onboarder/manifests/1.3.x-beta.2: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) -Error: GET https://index.docker.io/v2/mosipqa/partner-onboarder/manifests/1.3.x-beta.2: MANIFEST_UNKNOWN: manifest unknown; unknown tag=1.3.x-beta.2 + 13-Feb-26 17:20:43 INFO LOGFILE CREATED : vidivi.log + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO ******************** Check Images List ************************************************************************************ + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO IMAGES= [['injistackdev2/inji-web:release-0.16.x', '0.16.x'], ['injistackdev2/mimoto:release-0.21.x', '0.21.x']] + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO ******************** Check existence of Source Images ******************************************************************* + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO src = "injistackdev2/inji-web" tag = "release-0.16.x" + 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 13-Feb-26 17:20:43 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/inji-web:pull HTTP/1.1" 200 None + 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 + 13-Feb-26 17:20:43 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/inji-web/tags/release-0.16.x HTTP/1.1" 200 None + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO src = "injistackdev2/mimoto" tag = "release-0.21.x" + 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 13-Feb-26 17:20:43 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/mimoto:pull HTTP/1.1" 200 None + 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 + 13-Feb-26 17:20:43 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/mimoto/tags/release-0.21.x HTTP/1.1" 200 None + 13-Feb-26 17:20:43 INFO + 13-Feb-26 17:20:43 INFO ******************** Check existence of Destination Docker Account *************************************************************** + 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 + 13-Feb-26 17:20:44 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None + 13-Feb-26 17:20:44 INFO + 13-Feb-26 17:20:44 INFO ******************** Check existence of Destination Images *************************************************************** + 13-Feb-26 17:20:44 INFO + 13-Feb-26 17:20:44 INFO [ bn46/inji-web ] + 13-Feb-26 17:20:44 WARNING Crane digest failed for index.docker.io/bn46/inji-web:0.16.x: 2026/02/13 17:20:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/inji-web/manifests/0.16.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) +Error: GET https://index.docker.io/v2/bn46/inji-web/manifests/0.16.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.16.x - 12-Dec-25 13:27:11 INFO Destination Image = "mosipqa/partner-onboarder" Destination Image tag = "1.3.x-beta.2" IMAGE_ID : - 12-Dec-25 13:27:11 INFO Destination image mosipqa/partner-onboarder:1.3.x-beta.2 does not exist - 12-Dec-25 13:27:11 INFO - 12-Dec-25 13:27:11 INFO ******************** HASH Operation Results ********************************************************************** - 12-Dec-25 13:27:11 INFO - 12-Dec-25 13:27:11 INFO Below Destination Images doesn't exists; CONTINUE; - [['mosipqa/partner-onboarder:1.3.x-beta.2']] - 12-Dec-25 13:27:11 INFO - 12-Dec-25 13:27:11 INFO ******************** Start Image Transfer operation *********************************************************************** - 12-Dec-25 13:27:11 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] - 12-Dec-25 13:27:11 DEBUG Found file at path: /home/runner/.docker/config.json - 12-Dec-25 13:27:11 DEBUG Found 'auths' section - 12-Dec-25 13:27:11 DEBUG Found entry (registry='https://index.docker.io/v1/', username='gsasikumar') - 12-Dec-25 13:27:11 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 - 12-Dec-25 13:27:11 DEBUG Looking for auth entry for 'docker.io' - 12-Dec-25 13:27:11 DEBUG Found 'https://index.docker.io/v1/' - 12-Dec-25 13:27:11 INFO Using 3 parallel workers for image transfers - 12-Dec-25 13:27:11 INFO - 12-Dec-25 13:27:11 INFO ********** [ mosipqa/partner-onboarder:1.3.x-beta.2 ] **************************************************** - 12-Dec-25 13:27:11 INFO Transferring image using crane... - 12-Dec-25 13:27:11 INFO Source uses tag reference: mosipdev/partner-onboarder:release-1.3.x-beta.2 - 12-Dec-25 13:27:11 INFO Analyzing source image manifest... - 12-Dec-25 13:27:11 INFO Source is MULTI-ARCH image - 12-Dec-25 13:27:11 INFO Source Index Digest (Manifest List): sha256:8de6d5f804e74b5f6ab2e92dc3fa848511f28007237e387f4535eab6aae03c44 - 12-Dec-25 13:27:11 INFO Source has 2 platform(s): - 12-Dec-25 13:27:11 INFO - linux/amd64: sha256:f6ddf93b21f422bbf13ddabeae237ecf576f0c79fd7e7aadb7650f72bf885d11 - 12-Dec-25 13:27:11 INFO - linux/arm64: sha256:d86a01d00191bcb4999afcb39e04866b50b505919296f4ec752391cfda764108 - 12-Dec-25 13:27:11 INFO Using secure connection for HTTPS registry - 12-Dec-25 13:27:11 INFO Executing: crane copy mosipdev/partner-onboarder:release-1.3.x-beta.2 index.docker.io/mosipqa/partner-onboarder:1.3.x-beta.2 - 12-Dec-25 13:27:15 INFO Successfully transferred image with crane - 12-Dec-25 13:27:15 INFO - 12-Dec-25 13:27:15 INFO Analyzing destination image manifest... - 12-Dec-25 13:27:15 INFO Destination is MULTI-ARCH image - 12-Dec-25 13:27:15 INFO Destination Index Digest (Manifest List): sha256:8de6d5f804e74b5f6ab2e92dc3fa848511f28007237e387f4535eab6aae03c44 - 12-Dec-25 13:27:15 INFO Destination has 2 platform(s): - 12-Dec-25 13:27:15 INFO - linux/amd64: sha256:f6ddf93b21f422bbf13ddabeae237ecf576f0c79fd7e7aadb7650f72bf885d11 - 12-Dec-25 13:27:15 INFO - linux/arm64: sha256:d86a01d00191bcb4999afcb39e04866b50b505919296f4ec752391cfda764108 - 12-Dec-25 13:27:15 INFO - 12-Dec-25 13:27:15 INFO === DIGEST VERIFICATION === - 12-Dec-25 13:27:15 INFO Comparing Index Digests (Manifest Lists): - 12-Dec-25 13:27:15 INFO Source: sha256:8de6d5f804e74b5f6ab2e92dc3fa848511f28007237e387f4535eab6aae03c44 - 12-Dec-25 13:27:15 INFO Destination: sha256:8de6d5f804e74b5f6ab2e92dc3fa848511f28007237e387f4535eab6aae03c44 - 12-Dec-25 13:27:15 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 12-Dec-25 13:27:15 INFO - 12-Dec-25 13:27:15 INFO Comparing Platform Manifests: - 12-Dec-25 13:27:15 INFO ✓ linux/amd64: sha256:f6ddf93b21f422bbf13ddabeae237ecf576f0c79fd7e7aadb7650f72bf885d11 (MATCH) - 12-Dec-25 13:27:15 INFO ✓ linux/arm64: sha256:d86a01d00191bcb4999afcb39e04866b50b505919296f4ec752391cfda764108 (MATCH) - 12-Dec-25 13:27:15 INFO ✓ All 2 platform manifest(s) match perfectly! - 12-Dec-25 13:27:15 INFO Creating latest tag: crane copy mosipdev/partner-onboarder:release-1.3.x-beta.2 index.docker.io/mosipqa/partner-onboarder:latest - 12-Dec-25 13:27:17 INFO Successfully created latest tag - 12-Dec-25 13:27:17 INFO Image available at: index.docker.io/mosipqa/partner-onboarder:1.3.x-beta.2 - 12-Dec-25 13:27:17 INFO - 12-Dec-25 13:27:17 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 12-Dec-25 13:27:17 INFO Individual platform manifests should also match to ensure identical content. - 12-Dec-25 13:27:17 INFO Completed processing mosipdev/partner-onboarder:release-1.3.x-beta.2 to mosipqa/partner-onboarder:1.3.x-beta.2 + 13-Feb-26 17:20:44 INFO Destination Image = "bn46/inji-web" Destination Image tag = "0.16.x" IMAGE_ID : + 13-Feb-26 17:20:44 INFO Destination image bn46/inji-web:0.16.x does not exist + 13-Feb-26 17:20:44 INFO + 13-Feb-26 17:20:44 INFO [ bn46/mimoto ] + 13-Feb-26 17:20:45 WARNING Crane digest failed for index.docker.io/bn46/mimoto:0.21.x: 2026/02/13 17:20:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/mimoto/manifests/0.21.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) +Error: GET https://index.docker.io/v2/bn46/mimoto/manifests/0.21.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.21.x + + 13-Feb-26 17:20:45 INFO Destination Image = "bn46/mimoto" Destination Image tag = "0.21.x" IMAGE_ID : + 13-Feb-26 17:20:45 INFO Destination image bn46/mimoto:0.21.x does not exist + 13-Feb-26 17:20:45 INFO + 13-Feb-26 17:20:45 INFO ******************** HASH Operation Results ********************************************************************** + 13-Feb-26 17:20:45 INFO + 13-Feb-26 17:20:45 INFO Below Destination Images doesn't exists; CONTINUE; + [['bn46/inji-web:0.16.x'], ['bn46/mimoto:0.21.x']] + 13-Feb-26 17:20:45 INFO + 13-Feb-26 17:20:45 INFO ******************** Start Image Transfer operation *********************************************************************** + 13-Feb-26 17:20:45 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] + 13-Feb-26 17:20:45 DEBUG Found file at path: /home/runner/.docker/config.json + 13-Feb-26 17:20:45 DEBUG Found 'auths' section + 13-Feb-26 17:20:45 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') + 13-Feb-26 17:20:45 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 + 13-Feb-26 17:20:45 DEBUG Looking for auth entry for 'docker.io' + 13-Feb-26 17:20:45 DEBUG Found 'https://index.docker.io/v1/' + 13-Feb-26 17:20:45 INFO Using 3 parallel workers for image transfers + 13-Feb-26 17:20:45 INFO + 13-Feb-26 17:20:45 INFO ********** [ bn46/inji-web:0.16.x ] **************************************************** + 13-Feb-26 17:20:45 INFO Transferring image using crane... + 13-Feb-26 17:20:45 INFO + 13-Feb-26 17:20:45 INFO ********** [ bn46/mimoto:0.21.x ] **************************************************** + 13-Feb-26 17:20:45 INFO Transferring image using crane... + 13-Feb-26 17:20:45 INFO Source uses tag reference: injistackdev2/mimoto:release-0.21.x + 13-Feb-26 17:20:45 INFO Analyzing source image manifest... + 13-Feb-26 17:20:45 INFO Source uses tag reference: injistackdev2/inji-web:release-0.16.x + 13-Feb-26 17:20:45 INFO Analyzing source image manifest... + 13-Feb-26 17:20:45 INFO Source is MULTI-ARCH image + 13-Feb-26 17:20:45 INFO Source Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 13-Feb-26 17:20:45 INFO Source has 2 platform(s): + 13-Feb-26 17:20:45 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 + 13-Feb-26 17:20:45 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce + 13-Feb-26 17:20:45 INFO Using secure connection for HTTPS registry + 13-Feb-26 17:20:45 INFO Executing: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:0.16.x + 13-Feb-26 17:20:45 INFO Source is MULTI-ARCH image + 13-Feb-26 17:20:45 INFO Source Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 13-Feb-26 17:20:45 INFO Source has 2 platform(s): + 13-Feb-26 17:20:45 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 + 13-Feb-26 17:20:45 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 + 13-Feb-26 17:20:45 INFO Using secure connection for HTTPS registry + 13-Feb-26 17:20:45 INFO Executing: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:0.21.x + 13-Feb-26 17:20:48 INFO Successfully transferred image with crane + 13-Feb-26 17:20:48 INFO + 13-Feb-26 17:20:48 INFO Analyzing destination image manifest... + 13-Feb-26 17:20:48 INFO Successfully transferred image with crane + 13-Feb-26 17:20:48 INFO + 13-Feb-26 17:20:48 INFO Analyzing destination image manifest... + 13-Feb-26 17:20:49 INFO Destination is MULTI-ARCH image + 13-Feb-26 17:20:49 INFO Destination Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 13-Feb-26 17:20:49 INFO Destination has 2 platform(s): + 13-Feb-26 17:20:49 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 + 13-Feb-26 17:20:49 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 + 13-Feb-26 17:20:49 INFO + 13-Feb-26 17:20:49 INFO === DIGEST VERIFICATION === + 13-Feb-26 17:20:49 INFO Comparing Index Digests (Manifest Lists): + 13-Feb-26 17:20:49 INFO Source: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 13-Feb-26 17:20:49 INFO Destination: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 13-Feb-26 17:20:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 13-Feb-26 17:20:49 INFO + 13-Feb-26 17:20:49 INFO Comparing Platform Manifests: + 13-Feb-26 17:20:49 INFO ✓ linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 (MATCH) + 13-Feb-26 17:20:49 INFO ✓ linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 (MATCH) + 13-Feb-26 17:20:49 INFO ✓ All 2 platform manifest(s) match perfectly! + 13-Feb-26 17:20:49 INFO Creating latest tag: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:latest + 13-Feb-26 17:20:49 INFO Destination is MULTI-ARCH image + 13-Feb-26 17:20:49 INFO Destination Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 13-Feb-26 17:20:49 INFO Destination has 2 platform(s): + 13-Feb-26 17:20:49 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 + 13-Feb-26 17:20:49 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce + 13-Feb-26 17:20:49 INFO + 13-Feb-26 17:20:49 INFO === DIGEST VERIFICATION === + 13-Feb-26 17:20:49 INFO Comparing Index Digests (Manifest Lists): + 13-Feb-26 17:20:49 INFO Source: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 13-Feb-26 17:20:49 INFO Destination: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 13-Feb-26 17:20:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 13-Feb-26 17:20:49 INFO + 13-Feb-26 17:20:49 INFO Comparing Platform Manifests: + 13-Feb-26 17:20:49 INFO ✓ linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 (MATCH) + 13-Feb-26 17:20:49 INFO ✓ linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce (MATCH) + 13-Feb-26 17:20:49 INFO ✓ All 2 platform manifest(s) match perfectly! + 13-Feb-26 17:20:49 INFO Creating latest tag: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:latest + 13-Feb-26 17:20:51 INFO Successfully created latest tag + 13-Feb-26 17:20:51 INFO Image available at: index.docker.io/bn46/mimoto:0.21.x + 13-Feb-26 17:20:51 INFO + 13-Feb-26 17:20:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 13-Feb-26 17:20:51 INFO Individual platform manifests should also match to ensure identical content. + 13-Feb-26 17:20:51 INFO Successfully created latest tag + 13-Feb-26 17:20:51 INFO Image available at: index.docker.io/bn46/inji-web:0.16.x + 13-Feb-26 17:20:51 INFO + 13-Feb-26 17:20:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 13-Feb-26 17:20:51 INFO Individual platform manifests should also match to ensure identical content. + 13-Feb-26 17:20:51 INFO Completed processing injistackdev2/inji-web:release-0.16.x to bn46/inji-web:0.16.x + 13-Feb-26 17:20:51 INFO Completed processing injistackdev2/mimoto:release-0.21.x to bn46/mimoto:0.21.x diff --git a/release/vidivi/transfer_report.md b/release/vidivi/transfer_report.md index 41440683..380a778d 100644 --- a/release/vidivi/transfer_report.md +++ b/release/vidivi/transfer_report.md @@ -1,14 +1,14 @@ # Image Transfer Report -**Date**: Fri Dec 12 13:27:17 UTC 2025 +**Date**: Fri Feb 13 17:20:51 UTC 2026 **Registry Type**: dockerhub **Registry URL**: https://index.docker.io/v1/ -**Organization**: mosipqa +**Organization**: bn46 **WireGuard VPN**: Disabled ## Statistics -- **Crane transfers**: 1 -- **Total completed**: 1 +- **Crane transfers**: 2 +- **Total completed**: 2 - **Failed transfers**: 00 ## Tools Used @@ -17,4 +17,5 @@ - Registry Support: HTTP/HTTPS auto-detection ## Transferred Images -- index.docker.io/mosipqa/partner-onboarder:1.3.x-beta.2 +- index.docker.io/bn46/mimoto:0.21.x +- index.docker.io/bn46/inji-web:0.16.x From d5c35106077fc797acadfca6ca6fc4ff70531623 Mon Sep 17 00:00:00 2001 From: bhumi46 <111699703+bhumi46@users.noreply.github.com> Date: Fri, 13 Feb 2026 23:16:58 +0530 Subject: [PATCH 03/11] Update images.txt Signed-off-by: bhumi46 <111699703+bhumi46@users.noreply.github.com> --- release/vidivi/images.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release/vidivi/images.txt b/release/vidivi/images.txt index 6935e3ff..87eb7efa 100644 --- a/release/vidivi/images.txt +++ b/release/vidivi/images.txt @@ -1,2 +1 @@ -injistackdev2/inji-web:release-0.16.x 0.16.x -injistackdev2/mimoto:release-0.21.x 0.21.x +injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 0.17.x From 684567f2633a3f5fb48d8c6cfa1e17d050d9db18 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Feb 2026 17:47:51 +0000 Subject: [PATCH 04/11] Image transfer: 1 completed, 00 failed to bn46 --- release/vidivi/logs/vidivi.log | 207 +++++++++++------------------- release/vidivi/transfer_report.md | 9 +- 2 files changed, 82 insertions(+), 134 deletions(-) diff --git a/release/vidivi/logs/vidivi.log b/release/vidivi/logs/vidivi.log index 5b21c30c..98a98df3 100644 --- a/release/vidivi/logs/vidivi.log +++ b/release/vidivi/logs/vidivi.log @@ -1,130 +1,79 @@ - 13-Feb-26 17:20:43 INFO LOGFILE CREATED : vidivi.log - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO ******************** Check Images List ************************************************************************************ - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO IMAGES= [['injistackdev2/inji-web:release-0.16.x', '0.16.x'], ['injistackdev2/mimoto:release-0.21.x', '0.21.x']] - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO ******************** Check existence of Source Images ******************************************************************* - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO src = "injistackdev2/inji-web" tag = "release-0.16.x" - 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 13-Feb-26 17:20:43 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/inji-web:pull HTTP/1.1" 200 None - 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 - 13-Feb-26 17:20:43 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/inji-web/tags/release-0.16.x HTTP/1.1" 200 None - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO src = "injistackdev2/mimoto" tag = "release-0.21.x" - 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 13-Feb-26 17:20:43 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/mimoto:pull HTTP/1.1" 200 None - 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 - 13-Feb-26 17:20:43 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/mimoto/tags/release-0.21.x HTTP/1.1" 200 None - 13-Feb-26 17:20:43 INFO - 13-Feb-26 17:20:43 INFO ******************** Check existence of Destination Docker Account *************************************************************** - 13-Feb-26 17:20:43 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 - 13-Feb-26 17:20:44 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None - 13-Feb-26 17:20:44 INFO - 13-Feb-26 17:20:44 INFO ******************** Check existence of Destination Images *************************************************************** - 13-Feb-26 17:20:44 INFO - 13-Feb-26 17:20:44 INFO [ bn46/inji-web ] - 13-Feb-26 17:20:44 WARNING Crane digest failed for index.docker.io/bn46/inji-web:0.16.x: 2026/02/13 17:20:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/inji-web/manifests/0.16.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) -Error: GET https://index.docker.io/v2/bn46/inji-web/manifests/0.16.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.16.x + 13-Feb-26 17:47:44 INFO LOGFILE CREATED : vidivi.log + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** Check Images List ************************************************************************************ + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** Check existence of Source Images ******************************************************************* + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" + 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 13-Feb-26 17:47:44 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None + 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 + 13-Feb-26 17:47:44 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** Check existence of Destination Docker Account *************************************************************** + 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 + 13-Feb-26 17:47:44 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** Check existence of Destination Images *************************************************************** + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO [ bn46/uitest-verify ] + 13-Feb-26 17:47:44 WARNING Crane digest failed for index.docker.io/bn46/uitest-verify:0.17.x: 2026/02/13 17:47:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/uitest-verify/manifests/0.17.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) +Error: GET https://index.docker.io/v2/bn46/uitest-verify/manifests/0.17.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.17.x - 13-Feb-26 17:20:44 INFO Destination Image = "bn46/inji-web" Destination Image tag = "0.16.x" IMAGE_ID : - 13-Feb-26 17:20:44 INFO Destination image bn46/inji-web:0.16.x does not exist - 13-Feb-26 17:20:44 INFO - 13-Feb-26 17:20:44 INFO [ bn46/mimoto ] - 13-Feb-26 17:20:45 WARNING Crane digest failed for index.docker.io/bn46/mimoto:0.21.x: 2026/02/13 17:20:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/mimoto/manifests/0.21.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) -Error: GET https://index.docker.io/v2/bn46/mimoto/manifests/0.21.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.21.x - - 13-Feb-26 17:20:45 INFO Destination Image = "bn46/mimoto" Destination Image tag = "0.21.x" IMAGE_ID : - 13-Feb-26 17:20:45 INFO Destination image bn46/mimoto:0.21.x does not exist - 13-Feb-26 17:20:45 INFO - 13-Feb-26 17:20:45 INFO ******************** HASH Operation Results ********************************************************************** - 13-Feb-26 17:20:45 INFO - 13-Feb-26 17:20:45 INFO Below Destination Images doesn't exists; CONTINUE; - [['bn46/inji-web:0.16.x'], ['bn46/mimoto:0.21.x']] - 13-Feb-26 17:20:45 INFO - 13-Feb-26 17:20:45 INFO ******************** Start Image Transfer operation *********************************************************************** - 13-Feb-26 17:20:45 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] - 13-Feb-26 17:20:45 DEBUG Found file at path: /home/runner/.docker/config.json - 13-Feb-26 17:20:45 DEBUG Found 'auths' section - 13-Feb-26 17:20:45 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') - 13-Feb-26 17:20:45 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 - 13-Feb-26 17:20:45 DEBUG Looking for auth entry for 'docker.io' - 13-Feb-26 17:20:45 DEBUG Found 'https://index.docker.io/v1/' - 13-Feb-26 17:20:45 INFO Using 3 parallel workers for image transfers - 13-Feb-26 17:20:45 INFO - 13-Feb-26 17:20:45 INFO ********** [ bn46/inji-web:0.16.x ] **************************************************** - 13-Feb-26 17:20:45 INFO Transferring image using crane... - 13-Feb-26 17:20:45 INFO - 13-Feb-26 17:20:45 INFO ********** [ bn46/mimoto:0.21.x ] **************************************************** - 13-Feb-26 17:20:45 INFO Transferring image using crane... - 13-Feb-26 17:20:45 INFO Source uses tag reference: injistackdev2/mimoto:release-0.21.x - 13-Feb-26 17:20:45 INFO Analyzing source image manifest... - 13-Feb-26 17:20:45 INFO Source uses tag reference: injistackdev2/inji-web:release-0.16.x - 13-Feb-26 17:20:45 INFO Analyzing source image manifest... - 13-Feb-26 17:20:45 INFO Source is MULTI-ARCH image - 13-Feb-26 17:20:45 INFO Source Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 - 13-Feb-26 17:20:45 INFO Source has 2 platform(s): - 13-Feb-26 17:20:45 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 - 13-Feb-26 17:20:45 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce - 13-Feb-26 17:20:45 INFO Using secure connection for HTTPS registry - 13-Feb-26 17:20:45 INFO Executing: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:0.16.x - 13-Feb-26 17:20:45 INFO Source is MULTI-ARCH image - 13-Feb-26 17:20:45 INFO Source Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 - 13-Feb-26 17:20:45 INFO Source has 2 platform(s): - 13-Feb-26 17:20:45 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 - 13-Feb-26 17:20:45 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 - 13-Feb-26 17:20:45 INFO Using secure connection for HTTPS registry - 13-Feb-26 17:20:45 INFO Executing: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:0.21.x - 13-Feb-26 17:20:48 INFO Successfully transferred image with crane - 13-Feb-26 17:20:48 INFO - 13-Feb-26 17:20:48 INFO Analyzing destination image manifest... - 13-Feb-26 17:20:48 INFO Successfully transferred image with crane - 13-Feb-26 17:20:48 INFO - 13-Feb-26 17:20:48 INFO Analyzing destination image manifest... - 13-Feb-26 17:20:49 INFO Destination is MULTI-ARCH image - 13-Feb-26 17:20:49 INFO Destination Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 - 13-Feb-26 17:20:49 INFO Destination has 2 platform(s): - 13-Feb-26 17:20:49 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 - 13-Feb-26 17:20:49 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 - 13-Feb-26 17:20:49 INFO - 13-Feb-26 17:20:49 INFO === DIGEST VERIFICATION === - 13-Feb-26 17:20:49 INFO Comparing Index Digests (Manifest Lists): - 13-Feb-26 17:20:49 INFO Source: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 - 13-Feb-26 17:20:49 INFO Destination: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 - 13-Feb-26 17:20:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 13-Feb-26 17:20:49 INFO - 13-Feb-26 17:20:49 INFO Comparing Platform Manifests: - 13-Feb-26 17:20:49 INFO ✓ linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 (MATCH) - 13-Feb-26 17:20:49 INFO ✓ linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 (MATCH) - 13-Feb-26 17:20:49 INFO ✓ All 2 platform manifest(s) match perfectly! - 13-Feb-26 17:20:49 INFO Creating latest tag: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:latest - 13-Feb-26 17:20:49 INFO Destination is MULTI-ARCH image - 13-Feb-26 17:20:49 INFO Destination Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 - 13-Feb-26 17:20:49 INFO Destination has 2 platform(s): - 13-Feb-26 17:20:49 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 - 13-Feb-26 17:20:49 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce - 13-Feb-26 17:20:49 INFO - 13-Feb-26 17:20:49 INFO === DIGEST VERIFICATION === - 13-Feb-26 17:20:49 INFO Comparing Index Digests (Manifest Lists): - 13-Feb-26 17:20:49 INFO Source: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 - 13-Feb-26 17:20:49 INFO Destination: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 - 13-Feb-26 17:20:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 13-Feb-26 17:20:49 INFO - 13-Feb-26 17:20:49 INFO Comparing Platform Manifests: - 13-Feb-26 17:20:49 INFO ✓ linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 (MATCH) - 13-Feb-26 17:20:49 INFO ✓ linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce (MATCH) - 13-Feb-26 17:20:49 INFO ✓ All 2 platform manifest(s) match perfectly! - 13-Feb-26 17:20:49 INFO Creating latest tag: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:latest - 13-Feb-26 17:20:51 INFO Successfully created latest tag - 13-Feb-26 17:20:51 INFO Image available at: index.docker.io/bn46/mimoto:0.21.x - 13-Feb-26 17:20:51 INFO - 13-Feb-26 17:20:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 13-Feb-26 17:20:51 INFO Individual platform manifests should also match to ensure identical content. - 13-Feb-26 17:20:51 INFO Successfully created latest tag - 13-Feb-26 17:20:51 INFO Image available at: index.docker.io/bn46/inji-web:0.16.x - 13-Feb-26 17:20:51 INFO - 13-Feb-26 17:20:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 13-Feb-26 17:20:51 INFO Individual platform manifests should also match to ensure identical content. - 13-Feb-26 17:20:51 INFO Completed processing injistackdev2/inji-web:release-0.16.x to bn46/inji-web:0.16.x - 13-Feb-26 17:20:51 INFO Completed processing injistackdev2/mimoto:release-0.21.x to bn46/mimoto:0.21.x + 13-Feb-26 17:47:44 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : + 13-Feb-26 17:47:44 INFO Destination image bn46/uitest-verify:0.17.x does not exist + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** HASH Operation Results ********************************************************************** + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO Below Destination Images doesn't exists; CONTINUE; + [['bn46/uitest-verify:0.17.x']] + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ******************** Start Image Transfer operation *********************************************************************** + 13-Feb-26 17:47:44 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] + 13-Feb-26 17:47:44 DEBUG Found file at path: /home/runner/.docker/config.json + 13-Feb-26 17:47:44 DEBUG Found 'auths' section + 13-Feb-26 17:47:44 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') + 13-Feb-26 17:47:44 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 + 13-Feb-26 17:47:44 DEBUG Looking for auth entry for 'docker.io' + 13-Feb-26 17:47:44 DEBUG Found 'https://index.docker.io/v1/' + 13-Feb-26 17:47:44 INFO Using 3 parallel workers for image transfers + 13-Feb-26 17:47:44 INFO + 13-Feb-26 17:47:44 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** + 13-Feb-26 17:47:44 INFO Transferring image using crane... + 13-Feb-26 17:47:44 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 13-Feb-26 17:47:44 INFO Analyzing source image manifest... + 13-Feb-26 17:47:45 INFO Source is MULTI-ARCH image + 13-Feb-26 17:47:45 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 13-Feb-26 17:47:45 INFO Source has 2 platform(s): + 13-Feb-26 17:47:45 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 13-Feb-26 17:47:45 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 13-Feb-26 17:47:45 INFO Using secure connection for HTTPS registry + 13-Feb-26 17:47:45 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x + 13-Feb-26 17:47:49 INFO Successfully transferred image with crane + 13-Feb-26 17:47:49 INFO + 13-Feb-26 17:47:49 INFO Analyzing destination image manifest... + 13-Feb-26 17:47:49 INFO Destination is MULTI-ARCH image + 13-Feb-26 17:47:49 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 13-Feb-26 17:47:49 INFO Destination has 2 platform(s): + 13-Feb-26 17:47:49 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 13-Feb-26 17:47:49 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 13-Feb-26 17:47:49 INFO + 13-Feb-26 17:47:49 INFO === DIGEST VERIFICATION === + 13-Feb-26 17:47:49 INFO Comparing Index Digests (Manifest Lists): + 13-Feb-26 17:47:49 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 13-Feb-26 17:47:49 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 13-Feb-26 17:47:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 13-Feb-26 17:47:49 INFO + 13-Feb-26 17:47:49 INFO Comparing Platform Manifests: + 13-Feb-26 17:47:49 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) + 13-Feb-26 17:47:49 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) + 13-Feb-26 17:47:49 INFO ✓ All 2 platform manifest(s) match perfectly! + 13-Feb-26 17:47:49 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest + 13-Feb-26 17:47:51 INFO Successfully created latest tag + 13-Feb-26 17:47:51 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x + 13-Feb-26 17:47:51 INFO + 13-Feb-26 17:47:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 13-Feb-26 17:47:51 INFO Individual platform manifests should also match to ensure identical content. + 13-Feb-26 17:47:51 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x diff --git a/release/vidivi/transfer_report.md b/release/vidivi/transfer_report.md index 380a778d..813dbc6a 100644 --- a/release/vidivi/transfer_report.md +++ b/release/vidivi/transfer_report.md @@ -1,14 +1,14 @@ # Image Transfer Report -**Date**: Fri Feb 13 17:20:51 UTC 2026 +**Date**: Fri Feb 13 17:47:51 UTC 2026 **Registry Type**: dockerhub **Registry URL**: https://index.docker.io/v1/ **Organization**: bn46 **WireGuard VPN**: Disabled ## Statistics -- **Crane transfers**: 2 -- **Total completed**: 2 +- **Crane transfers**: 1 +- **Total completed**: 1 - **Failed transfers**: 00 ## Tools Used @@ -17,5 +17,4 @@ - Registry Support: HTTP/HTTPS auto-detection ## Transferred Images -- index.docker.io/bn46/mimoto:0.21.x -- index.docker.io/bn46/inji-web:0.16.x +- index.docker.io/bn46/uitest-verify:0.17.x From ebe4eb1ed0827141457d6c3c3441ba56eb862f8a Mon Sep 17 00:00:00 2001 From: bhumi46 Date: Mon, 16 Feb 2026 10:42:21 +0530 Subject: [PATCH 05/11] [MOSIP-44447] Fix security vulnerabilities in image transfer workflow - Remove TOKEN from user inputs, use dynamic GitHub secrets only - Implement org-based secret selection (_DOCKER_TOKEN) - Fix shell injection vulnerabilities using env block and quoted variables - Replace echo with printf for safe output handling - Add secret validation with secure boolean checks - Support hyphenated org names (convert hyphens to underscores) - Update documentation with security best practices and examples Signed-off-by: bhumi46 --- .github/workflows/image-transfer.yml | 37 +++++++++++++++------------- release/vidivi/README.md | 19 +++++++++----- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/.github/workflows/image-transfer.yml b/.github/workflows/image-transfer.yml index 3f20fd73..4b1b0269 100644 --- a/.github/workflows/image-transfer.yml +++ b/.github/workflows/image-transfer.yml @@ -41,37 +41,40 @@ jobs: steps: - name: Set organization secrets dynamically id: ORG_TOKEN + env: + DESTINATION_ORGANIZATION: ${{ inputs.DESTINATION_ORGANIZATION }} run: | - ORG="${{ inputs.DESTINATION_ORGANIZATION }}" + ORG="$DESTINATION_ORGANIZATION" - # Convert organization name to uppercase for secret name - ORG_UPPER=$(echo "$ORG" | tr '[:lower:]' '[:upper:]') + # Convert organization name to valid secret name (replace hyphens, then uppercase) + # GitHub secret names can only contain [A-Z0-9_] + ORG_NORMALIZED=$(printf '%s' "$ORG" | tr '-' '_' | tr '[:lower:]' '[:upper:]') # Dynamically construct secret name based on organization - TOKEN_SECRET="${ORG_UPPER}_DOCKER_TOKEN" + TOKEN_SECRET="${ORG_NORMALIZED}_DOCKER_TOKEN" - echo "TOKEN=${TOKEN_SECRET}" >> $GITHUB_OUTPUT + printf 'TOKEN=%s\n' "$TOKEN_SECRET" >> "$GITHUB_OUTPUT" - name: Validate secret configuration env: TOKEN_EXISTS: ${{ secrets[steps.ORG_TOKEN.outputs.TOKEN] != '' }} + SECRET_NAME: ${{ steps.ORG_TOKEN.outputs.TOKEN }} + DESTINATION_ORGANIZATION: ${{ inputs.DESTINATION_ORGANIZATION }} run: | - SECRET_NAME="${{ steps.ORG_TOKEN.outputs.TOKEN }}" - if [ "$TOKEN_EXISTS" != "true" ]; then - echo "❌ ERROR: Secret '$SECRET_NAME' is not configured or is empty" - echo "" - echo "Please configure the following secret in GitHub repository settings:" - echo " Secret name: $SECRET_NAME" - echo " Path: Settings → Secrets and variables → Actions → New repository secret" - echo "" - echo "For organization '${{ inputs.DESTINATION_ORGANIZATION }}', you need:" - echo " - Secret: $SECRET_NAME" - echo " - Value: Your Docker registry token/password" + printf '❌ ERROR: Secret '\''%s'\'' is not configured or is empty\n' "$SECRET_NAME" + printf '\n' + printf 'Please configure the following secret in GitHub repository settings:\n' + printf ' Secret name: %s\n' "$SECRET_NAME" + printf ' Path: Settings → Secrets and variables → Actions → New repository secret\n' + printf '\n' + printf 'For organization '\''%s'\'', you need:\n' "$DESTINATION_ORGANIZATION" + printf ' - Secret: %s\n' "$SECRET_NAME" + printf ' - Value: Your Docker registry token/password\n' exit 1 fi - echo "✅ Secret '$SECRET_NAME' is configured" + printf '✅ Secret '\''%s'\'' is configured\n' "$SECRET_NAME" Image-transfer: needs: chk_token uses: mosip/kattu/.github/workflows/image-transfer.yml@master diff --git a/release/vidivi/README.md b/release/vidivi/README.md index f29e01e5..609d8512 100644 --- a/release/vidivi/README.md +++ b/release/vidivi/README.md @@ -203,10 +203,15 @@ Configure these GitHub secrets dynamically based on your destination organizatio **Secret Naming Convention:** - Token: `_DOCKER_TOKEN` -- Examples: - - For `mosipqa` org → `MOSIPQA_DOCKER_TOKEN` - - For `mosipdev` org → `MOSIPDEV_DOCKER_TOKEN` - - For `acmecorp` org → `ACMECORP_DOCKER_TOKEN` +- Organization names are normalized: hyphens converted to underscores, then uppercased +- GitHub secret names can only contain `[A-Z0-9_]` + +**Examples:** + - `mosipqa` → `MOSIPQA_DOCKER_TOKEN` + - `mosipdev` → `MOSIPDEV_DOCKER_TOKEN` + - `acmecorp` → `ACMECORP_DOCKER_TOKEN` + - `my-org` → `MY_ORG_DOCKER_TOKEN` (hyphen → underscore) + - `test-dev-env` → `TEST_DEV_ENV_DOCKER_TOKEN` (all hyphens → underscores) **Required Secrets:** 1. **`_DOCKER_TOKEN`**: Registry authentication token for the specific organization @@ -222,7 +227,8 @@ Configure these GitHub secrets dynamically based on your destination organizatio 1. Go to GitHub repository → Settings → Secrets and variables → Actions 2. Click "New repository secret" 3. Add secrets following the naming convention above -4. For a new organization `myorg`, create: `MYORG_DOCKER_TOKEN` +4. For organization `myorg`, create: `MYORG_DOCKER_TOKEN` +5. For organization `my-org`, create: `MY_ORG_DOCKER_TOKEN` (hyphens become underscores) **Security Benefits:** - Tokens are never exposed in workflow logs @@ -249,7 +255,8 @@ Configure these GitHub secrets dynamically based on your destination organizatio - Organization `mosipqa` uses secret `MOSIPQA_DOCKER_TOKEN` - Organization `mosipdev` uses secret `MOSIPDEV_DOCKER_TOKEN` - Organization `acmecorp` uses secret `ACMECORP_DOCKER_TOKEN` -- And so on... +- Organization `my-org` uses secret `MY_ORG_DOCKER_TOKEN` (hyphens converted to underscores) +- Organization names are normalized: hyphens → underscores, then uppercased ### Workflow Features From 8c44c06e1669455bd7c3c14bb89cb42aed9f6816 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Feb 2026 06:16:11 +0000 Subject: [PATCH 06/11] Image transfer: 1 completed, 00 failed to bn46 --- release/vidivi/logs/vidivi.log | 151 ++++++++++++++---------------- release/vidivi/transfer_report.md | 2 +- 2 files changed, 73 insertions(+), 80 deletions(-) diff --git a/release/vidivi/logs/vidivi.log b/release/vidivi/logs/vidivi.log index 98a98df3..201a636b 100644 --- a/release/vidivi/logs/vidivi.log +++ b/release/vidivi/logs/vidivi.log @@ -1,79 +1,72 @@ - 13-Feb-26 17:47:44 INFO LOGFILE CREATED : vidivi.log - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** Check Images List ************************************************************************************ - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** Check existence of Source Images ******************************************************************* - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" - 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 13-Feb-26 17:47:44 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None - 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 - 13-Feb-26 17:47:44 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** Check existence of Destination Docker Account *************************************************************** - 13-Feb-26 17:47:44 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 - 13-Feb-26 17:47:44 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** Check existence of Destination Images *************************************************************** - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO [ bn46/uitest-verify ] - 13-Feb-26 17:47:44 WARNING Crane digest failed for index.docker.io/bn46/uitest-verify:0.17.x: 2026/02/13 17:47:44 HEAD request failed, falling back on GET: HEAD https://index.docker.io/v2/bn46/uitest-verify/manifests/0.17.x: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details) -Error: GET https://index.docker.io/v2/bn46/uitest-verify/manifests/0.17.x: MANIFEST_UNKNOWN: manifest unknown; unknown tag=0.17.x - - 13-Feb-26 17:47:44 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : - 13-Feb-26 17:47:44 INFO Destination image bn46/uitest-verify:0.17.x does not exist - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** HASH Operation Results ********************************************************************** - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO Below Destination Images doesn't exists; CONTINUE; - [['bn46/uitest-verify:0.17.x']] - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ******************** Start Image Transfer operation *********************************************************************** - 13-Feb-26 17:47:44 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] - 13-Feb-26 17:47:44 DEBUG Found file at path: /home/runner/.docker/config.json - 13-Feb-26 17:47:44 DEBUG Found 'auths' section - 13-Feb-26 17:47:44 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') - 13-Feb-26 17:47:44 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 - 13-Feb-26 17:47:44 DEBUG Looking for auth entry for 'docker.io' - 13-Feb-26 17:47:44 DEBUG Found 'https://index.docker.io/v1/' - 13-Feb-26 17:47:44 INFO Using 3 parallel workers for image transfers - 13-Feb-26 17:47:44 INFO - 13-Feb-26 17:47:44 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** - 13-Feb-26 17:47:44 INFO Transferring image using crane... - 13-Feb-26 17:47:44 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 13-Feb-26 17:47:44 INFO Analyzing source image manifest... - 13-Feb-26 17:47:45 INFO Source is MULTI-ARCH image - 13-Feb-26 17:47:45 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 13-Feb-26 17:47:45 INFO Source has 2 platform(s): - 13-Feb-26 17:47:45 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 13-Feb-26 17:47:45 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 13-Feb-26 17:47:45 INFO Using secure connection for HTTPS registry - 13-Feb-26 17:47:45 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x - 13-Feb-26 17:47:49 INFO Successfully transferred image with crane - 13-Feb-26 17:47:49 INFO - 13-Feb-26 17:47:49 INFO Analyzing destination image manifest... - 13-Feb-26 17:47:49 INFO Destination is MULTI-ARCH image - 13-Feb-26 17:47:49 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 13-Feb-26 17:47:49 INFO Destination has 2 platform(s): - 13-Feb-26 17:47:49 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 13-Feb-26 17:47:49 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 13-Feb-26 17:47:49 INFO - 13-Feb-26 17:47:49 INFO === DIGEST VERIFICATION === - 13-Feb-26 17:47:49 INFO Comparing Index Digests (Manifest Lists): - 13-Feb-26 17:47:49 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 13-Feb-26 17:47:49 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 13-Feb-26 17:47:49 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 13-Feb-26 17:47:49 INFO - 13-Feb-26 17:47:49 INFO Comparing Platform Manifests: - 13-Feb-26 17:47:49 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) - 13-Feb-26 17:47:49 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) - 13-Feb-26 17:47:49 INFO ✓ All 2 platform manifest(s) match perfectly! - 13-Feb-26 17:47:49 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest - 13-Feb-26 17:47:51 INFO Successfully created latest tag - 13-Feb-26 17:47:51 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x - 13-Feb-26 17:47:51 INFO - 13-Feb-26 17:47:51 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 13-Feb-26 17:47:51 INFO Individual platform manifests should also match to ensure identical content. - 13-Feb-26 17:47:51 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x + 16-Feb-26 06:16:08 INFO LOGFILE CREATED : vidivi.log + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO ******************** Check Images List ************************************************************************************ + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO ******************** Check existence of Source Images ******************************************************************* + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" + 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 16-Feb-26 06:16:08 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None + 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 + 16-Feb-26 06:16:08 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO ******************** Check existence of Destination Docker Account *************************************************************** + 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 + 16-Feb-26 06:16:08 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO ******************** Check existence of Destination Images *************************************************************** + 16-Feb-26 06:16:08 INFO + 16-Feb-26 06:16:08 INFO [ bn46/uitest-verify ] + 16-Feb-26 06:16:09 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:09 INFO + 16-Feb-26 06:16:09 INFO ******************** HASH Operation Results ********************************************************************** + 16-Feb-26 06:16:09 INFO + 16-Feb-26 06:16:09 INFO ******************** Start Image Transfer operation *********************************************************************** + 16-Feb-26 06:16:09 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] + 16-Feb-26 06:16:09 DEBUG Found file at path: /home/runner/.docker/config.json + 16-Feb-26 06:16:09 DEBUG Found 'auths' section + 16-Feb-26 06:16:09 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') + 16-Feb-26 06:16:09 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 + 16-Feb-26 06:16:09 DEBUG Looking for auth entry for 'docker.io' + 16-Feb-26 06:16:09 DEBUG Found 'https://index.docker.io/v1/' + 16-Feb-26 06:16:09 INFO Using 3 parallel workers for image transfers + 16-Feb-26 06:16:09 INFO + 16-Feb-26 06:16:09 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** + 16-Feb-26 06:16:09 INFO Transferring image using crane... + 16-Feb-26 06:16:09 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:09 INFO Analyzing source image manifest... + 16-Feb-26 06:16:09 INFO Source is MULTI-ARCH image + 16-Feb-26 06:16:09 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:09 INFO Source has 2 platform(s): + 16-Feb-26 06:16:09 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 16-Feb-26 06:16:09 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 16-Feb-26 06:16:09 INFO Using secure connection for HTTPS registry + 16-Feb-26 06:16:09 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x + 16-Feb-26 06:16:10 INFO Successfully transferred image with crane + 16-Feb-26 06:16:10 INFO + 16-Feb-26 06:16:10 INFO Analyzing destination image manifest... + 16-Feb-26 06:16:10 INFO Destination is MULTI-ARCH image + 16-Feb-26 06:16:10 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:10 INFO Destination has 2 platform(s): + 16-Feb-26 06:16:10 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 16-Feb-26 06:16:10 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 16-Feb-26 06:16:10 INFO + 16-Feb-26 06:16:10 INFO === DIGEST VERIFICATION === + 16-Feb-26 06:16:10 INFO Comparing Index Digests (Manifest Lists): + 16-Feb-26 06:16:10 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:10 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 06:16:10 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 16-Feb-26 06:16:10 INFO + 16-Feb-26 06:16:10 INFO Comparing Platform Manifests: + 16-Feb-26 06:16:10 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) + 16-Feb-26 06:16:10 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) + 16-Feb-26 06:16:10 INFO ✓ All 2 platform manifest(s) match perfectly! + 16-Feb-26 06:16:10 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest + 16-Feb-26 06:16:11 INFO Successfully created latest tag + 16-Feb-26 06:16:11 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x + 16-Feb-26 06:16:11 INFO + 16-Feb-26 06:16:11 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 16-Feb-26 06:16:11 INFO Individual platform manifests should also match to ensure identical content. + 16-Feb-26 06:16:11 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x diff --git a/release/vidivi/transfer_report.md b/release/vidivi/transfer_report.md index 813dbc6a..c766e434 100644 --- a/release/vidivi/transfer_report.md +++ b/release/vidivi/transfer_report.md @@ -1,6 +1,6 @@ # Image Transfer Report -**Date**: Fri Feb 13 17:47:51 UTC 2026 +**Date**: Mon Feb 16 06:16:11 UTC 2026 **Registry Type**: dockerhub **Registry URL**: https://index.docker.io/v1/ **Organization**: bn46 From 1afcf18cdac2dd83bc1fdbf0ba7383405ac05070 Mon Sep 17 00:00:00 2001 From: bhumi46 Date: Mon, 16 Feb 2026 13:09:59 +0530 Subject: [PATCH 07/11] [MOSIP-44447] Add optional custom secret name input - Add SECRET_NAME optional input parameter - Support both dynamic (_DOCKER_TOKEN) and custom secret names - Fallback to dynamic naming when SECRET_NAME is empty - Add logging to show which secret name is being used - Maintain backward compatibility with existing workflows Signed-off-by: bhumi46 --- .github/workflows/image-transfer.yml | 31 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/.github/workflows/image-transfer.yml b/.github/workflows/image-transfer.yml index 4b1b0269..89f73fbd 100644 --- a/.github/workflows/image-transfer.yml +++ b/.github/workflows/image-transfer.yml @@ -8,6 +8,11 @@ on: required: true default: '' type: string + SECRET_NAME: + description: 'Custom secret name (optional - defaults to _DOCKER_TOKEN)' + required: false + default: '' + type: string DESTINATION_ORGANIZATION: description: 'provide docker hub destination org' required: true @@ -43,15 +48,25 @@ jobs: id: ORG_TOKEN env: DESTINATION_ORGANIZATION: ${{ inputs.DESTINATION_ORGANIZATION }} + CUSTOM_SECRET_NAME: ${{ inputs.SECRET_NAME }} run: | - ORG="$DESTINATION_ORGANIZATION" - - # Convert organization name to valid secret name (replace hyphens, then uppercase) - # GitHub secret names can only contain [A-Z0-9_] - ORG_NORMALIZED=$(printf '%s' "$ORG" | tr '-' '_' | tr '[:lower:]' '[:upper:]') - - # Dynamically construct secret name based on organization - TOKEN_SECRET="${ORG_NORMALIZED}_DOCKER_TOKEN" + # Check if custom secret name is provided + if [ -n "$CUSTOM_SECRET_NAME" ]; then + # Use custom secret name + TOKEN_SECRET="$CUSTOM_SECRET_NAME" + printf 'Using custom secret name: %s\n' "$TOKEN_SECRET" + else + # Use dynamic naming based on organization + ORG="$DESTINATION_ORGANIZATION" + + # Convert organization name to valid secret name (replace hyphens, then uppercase) + # GitHub secret names can only contain [A-Z0-9_] + ORG_NORMALIZED=$(printf '%s' "$ORG" | tr '-' '_' | tr '[:lower:]' '[:upper:]') + + # Dynamically construct secret name based on organization + TOKEN_SECRET="${ORG_NORMALIZED}_DOCKER_TOKEN" + printf 'Using dynamic secret name: %s\n' "$TOKEN_SECRET" + fi printf 'TOKEN=%s\n' "$TOKEN_SECRET" >> "$GITHUB_OUTPUT" From d6bd972bc3100c158a5b748fc39ae6caafc2bf76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Feb 2026 09:12:21 +0000 Subject: [PATCH 08/11] Image transfer: 1 completed, 00 failed to bn46 --- release/vidivi/logs/vidivi.log | 144 +++++++++++++++--------------- release/vidivi/transfer_report.md | 2 +- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/release/vidivi/logs/vidivi.log b/release/vidivi/logs/vidivi.log index 201a636b..c6ec8a3c 100644 --- a/release/vidivi/logs/vidivi.log +++ b/release/vidivi/logs/vidivi.log @@ -1,72 +1,72 @@ - 16-Feb-26 06:16:08 INFO LOGFILE CREATED : vidivi.log - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO ******************** Check Images List ************************************************************************************ - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO ******************** Check existence of Source Images ******************************************************************* - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" - 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 16-Feb-26 06:16:08 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None - 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 - 16-Feb-26 06:16:08 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO ******************** Check existence of Destination Docker Account *************************************************************** - 16-Feb-26 06:16:08 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 - 16-Feb-26 06:16:08 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO ******************** Check existence of Destination Images *************************************************************** - 16-Feb-26 06:16:08 INFO - 16-Feb-26 06:16:08 INFO [ bn46/uitest-verify ] - 16-Feb-26 06:16:09 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:09 INFO - 16-Feb-26 06:16:09 INFO ******************** HASH Operation Results ********************************************************************** - 16-Feb-26 06:16:09 INFO - 16-Feb-26 06:16:09 INFO ******************** Start Image Transfer operation *********************************************************************** - 16-Feb-26 06:16:09 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] - 16-Feb-26 06:16:09 DEBUG Found file at path: /home/runner/.docker/config.json - 16-Feb-26 06:16:09 DEBUG Found 'auths' section - 16-Feb-26 06:16:09 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') - 16-Feb-26 06:16:09 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 - 16-Feb-26 06:16:09 DEBUG Looking for auth entry for 'docker.io' - 16-Feb-26 06:16:09 DEBUG Found 'https://index.docker.io/v1/' - 16-Feb-26 06:16:09 INFO Using 3 parallel workers for image transfers - 16-Feb-26 06:16:09 INFO - 16-Feb-26 06:16:09 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** - 16-Feb-26 06:16:09 INFO Transferring image using crane... - 16-Feb-26 06:16:09 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:09 INFO Analyzing source image manifest... - 16-Feb-26 06:16:09 INFO Source is MULTI-ARCH image - 16-Feb-26 06:16:09 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:09 INFO Source has 2 platform(s): - 16-Feb-26 06:16:09 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 16-Feb-26 06:16:09 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 16-Feb-26 06:16:09 INFO Using secure connection for HTTPS registry - 16-Feb-26 06:16:09 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x - 16-Feb-26 06:16:10 INFO Successfully transferred image with crane - 16-Feb-26 06:16:10 INFO - 16-Feb-26 06:16:10 INFO Analyzing destination image manifest... - 16-Feb-26 06:16:10 INFO Destination is MULTI-ARCH image - 16-Feb-26 06:16:10 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:10 INFO Destination has 2 platform(s): - 16-Feb-26 06:16:10 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 16-Feb-26 06:16:10 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 16-Feb-26 06:16:10 INFO - 16-Feb-26 06:16:10 INFO === DIGEST VERIFICATION === - 16-Feb-26 06:16:10 INFO Comparing Index Digests (Manifest Lists): - 16-Feb-26 06:16:10 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:10 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 06:16:10 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 16-Feb-26 06:16:10 INFO - 16-Feb-26 06:16:10 INFO Comparing Platform Manifests: - 16-Feb-26 06:16:10 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) - 16-Feb-26 06:16:10 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) - 16-Feb-26 06:16:10 INFO ✓ All 2 platform manifest(s) match perfectly! - 16-Feb-26 06:16:10 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest - 16-Feb-26 06:16:11 INFO Successfully created latest tag - 16-Feb-26 06:16:11 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x - 16-Feb-26 06:16:11 INFO - 16-Feb-26 06:16:11 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 16-Feb-26 06:16:11 INFO Individual platform manifests should also match to ensure identical content. - 16-Feb-26 06:16:11 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x + 16-Feb-26 09:12:19 INFO LOGFILE CREATED : vidivi.log + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** Check Images List ************************************************************************************ + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** Check existence of Source Images ******************************************************************* + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" + 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 16-Feb-26 09:12:19 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None + 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 + 16-Feb-26 09:12:19 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** Check existence of Destination Docker Account *************************************************************** + 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 + 16-Feb-26 09:12:19 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** Check existence of Destination Images *************************************************************** + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO [ bn46/uitest-verify ] + 16-Feb-26 09:12:19 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** HASH Operation Results ********************************************************************** + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ******************** Start Image Transfer operation *********************************************************************** + 16-Feb-26 09:12:19 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] + 16-Feb-26 09:12:19 DEBUG Found file at path: /home/runner/.docker/config.json + 16-Feb-26 09:12:19 DEBUG Found 'auths' section + 16-Feb-26 09:12:19 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') + 16-Feb-26 09:12:19 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 + 16-Feb-26 09:12:19 DEBUG Looking for auth entry for 'docker.io' + 16-Feb-26 09:12:19 DEBUG Found 'https://index.docker.io/v1/' + 16-Feb-26 09:12:19 INFO Using 3 parallel workers for image transfers + 16-Feb-26 09:12:19 INFO + 16-Feb-26 09:12:19 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** + 16-Feb-26 09:12:19 INFO Transferring image using crane... + 16-Feb-26 09:12:19 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:19 INFO Analyzing source image manifest... + 16-Feb-26 09:12:20 INFO Source is MULTI-ARCH image + 16-Feb-26 09:12:20 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:20 INFO Source has 2 platform(s): + 16-Feb-26 09:12:20 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 16-Feb-26 09:12:20 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 16-Feb-26 09:12:20 INFO Using secure connection for HTTPS registry + 16-Feb-26 09:12:20 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x + 16-Feb-26 09:12:20 INFO Successfully transferred image with crane + 16-Feb-26 09:12:20 INFO + 16-Feb-26 09:12:20 INFO Analyzing destination image manifest... + 16-Feb-26 09:12:20 INFO Destination is MULTI-ARCH image + 16-Feb-26 09:12:20 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:20 INFO Destination has 2 platform(s): + 16-Feb-26 09:12:20 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b + 16-Feb-26 09:12:20 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf + 16-Feb-26 09:12:20 INFO + 16-Feb-26 09:12:20 INFO === DIGEST VERIFICATION === + 16-Feb-26 09:12:20 INFO Comparing Index Digests (Manifest Lists): + 16-Feb-26 09:12:20 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:20 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 + 16-Feb-26 09:12:20 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 16-Feb-26 09:12:20 INFO + 16-Feb-26 09:12:20 INFO Comparing Platform Manifests: + 16-Feb-26 09:12:20 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) + 16-Feb-26 09:12:20 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) + 16-Feb-26 09:12:20 INFO ✓ All 2 platform manifest(s) match perfectly! + 16-Feb-26 09:12:20 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest + 16-Feb-26 09:12:21 INFO Successfully created latest tag + 16-Feb-26 09:12:21 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x + 16-Feb-26 09:12:21 INFO + 16-Feb-26 09:12:21 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 16-Feb-26 09:12:21 INFO Individual platform manifests should also match to ensure identical content. + 16-Feb-26 09:12:21 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x diff --git a/release/vidivi/transfer_report.md b/release/vidivi/transfer_report.md index c766e434..334309df 100644 --- a/release/vidivi/transfer_report.md +++ b/release/vidivi/transfer_report.md @@ -1,6 +1,6 @@ # Image Transfer Report -**Date**: Mon Feb 16 06:16:11 UTC 2026 +**Date**: Mon Feb 16 09:12:21 UTC 2026 **Registry Type**: dockerhub **Registry URL**: https://index.docker.io/v1/ **Organization**: bn46 From ad2e341fa61f77998ea4e83c7dc1416249fc726b Mon Sep 17 00:00:00 2001 From: bhumi46 Date: Mon, 16 Feb 2026 14:47:28 +0530 Subject: [PATCH 09/11] Add validation for DESTINATION_ORGANIZATION in image-transfer workflow - Validate that DESTINATION_ORGANIZATION is non-empty - Ensure only letters, numbers, and hyphens are allowed - Reject dots, spaces, and other special characters - Perform validation before normalization and token secret computation - Provide clear error messages for invalid organization names Signed-off-by: bhumi46 --- .github/workflows/image-transfer.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/image-transfer.yml b/.github/workflows/image-transfer.yml index 89f73fbd..bb9a1dbc 100644 --- a/.github/workflows/image-transfer.yml +++ b/.github/workflows/image-transfer.yml @@ -59,6 +59,19 @@ jobs: # Use dynamic naming based on organization ORG="$DESTINATION_ORGANIZATION" + # Validate DESTINATION_ORGANIZATION before normalization + if [ -z "$ORG" ]; then + printf '❌ ERROR: DESTINATION_ORGANIZATION is empty or not provided\n' >&2 + exit 1 + fi + + # Check for invalid characters (only letters, numbers, and hyphens are allowed) + if ! printf '%s' "$ORG" | grep -qE '^[a-zA-Z0-9-]+$'; then + printf '❌ ERROR: Invalid organization name: "%s"\n' "$ORG" >&2 + printf 'Organization name must contain only letters, numbers, and hyphens (no dots, spaces, or other special characters)\n' >&2 + exit 1 + fi + # Convert organization name to valid secret name (replace hyphens, then uppercase) # GitHub secret names can only contain [A-Z0-9_] ORG_NORMALIZED=$(printf '%s' "$ORG" | tr '-' '_' | tr '[:lower:]' '[:upper:]') From f43712d03f6fa8ffde52dac1ec514f0b641f9751 Mon Sep 17 00:00:00 2001 From: bhumi46 <111699703+bhumi46@users.noreply.github.com> Date: Mon, 16 Feb 2026 14:49:33 +0530 Subject: [PATCH 10/11] Update images.txt Signed-off-by: bhumi46 <111699703+bhumi46@users.noreply.github.com> --- release/vidivi/images.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/vidivi/images.txt b/release/vidivi/images.txt index 87eb7efa..6935e3ff 100644 --- a/release/vidivi/images.txt +++ b/release/vidivi/images.txt @@ -1 +1,2 @@ -injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 0.17.x +injistackdev2/inji-web:release-0.16.x 0.16.x +injistackdev2/mimoto:release-0.21.x 0.21.x From e50115f268264b542df82f9a6e8b34c82ad44b81 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Feb 2026 09:20:56 +0000 Subject: [PATCH 11/11] Image transfer: 2 completed, 00 failed to bn46 --- release/vidivi/logs/vidivi.log | 191 +++++++++++++++++++----------- release/vidivi/transfer_report.md | 9 +- 2 files changed, 124 insertions(+), 76 deletions(-) diff --git a/release/vidivi/logs/vidivi.log b/release/vidivi/logs/vidivi.log index c6ec8a3c..fc2925ac 100644 --- a/release/vidivi/logs/vidivi.log +++ b/release/vidivi/logs/vidivi.log @@ -1,72 +1,119 @@ - 16-Feb-26 09:12:19 INFO LOGFILE CREATED : vidivi.log - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** Check Images List ************************************************************************************ - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO IMAGES= [['injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91', '0.17.x']] - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** Check existence of Source Images ******************************************************************* - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO src = "injistackdev2/uitest-verify" digest = "sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91" - 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 - 16-Feb-26 09:12:19 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/uitest-verify:pull HTTP/1.1" 200 None - 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): registry-1.docker.io:443 - 16-Feb-26 09:12:19 DEBUG https://registry-1.docker.io:443 "GET /v2/injistackdev2/uitest-verify/manifests/sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 HTTP/1.1" 200 743 - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** Check existence of Destination Docker Account *************************************************************** - 16-Feb-26 09:12:19 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 - 16-Feb-26 09:12:19 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** Check existence of Destination Images *************************************************************** - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO [ bn46/uitest-verify ] - 16-Feb-26 09:12:19 INFO Destination Image = "bn46/uitest-verify" Destination Image tag = "0.17.x" IMAGE_ID : sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** HASH Operation Results ********************************************************************** - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ******************** Start Image Transfer operation *********************************************************************** - 16-Feb-26 09:12:19 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] - 16-Feb-26 09:12:19 DEBUG Found file at path: /home/runner/.docker/config.json - 16-Feb-26 09:12:19 DEBUG Found 'auths' section - 16-Feb-26 09:12:19 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') - 16-Feb-26 09:12:19 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 - 16-Feb-26 09:12:19 DEBUG Looking for auth entry for 'docker.io' - 16-Feb-26 09:12:19 DEBUG Found 'https://index.docker.io/v1/' - 16-Feb-26 09:12:19 INFO Using 3 parallel workers for image transfers - 16-Feb-26 09:12:19 INFO - 16-Feb-26 09:12:19 INFO ********** [ bn46/uitest-verify:0.17.x ] **************************************************** - 16-Feb-26 09:12:19 INFO Transferring image using crane... - 16-Feb-26 09:12:19 INFO Source uses digest reference: injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:19 INFO Analyzing source image manifest... - 16-Feb-26 09:12:20 INFO Source is MULTI-ARCH image - 16-Feb-26 09:12:20 INFO Source Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:20 INFO Source has 2 platform(s): - 16-Feb-26 09:12:20 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 16-Feb-26 09:12:20 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 16-Feb-26 09:12:20 INFO Using secure connection for HTTPS registry - 16-Feb-26 09:12:20 INFO Executing: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:0.17.x - 16-Feb-26 09:12:20 INFO Successfully transferred image with crane - 16-Feb-26 09:12:20 INFO - 16-Feb-26 09:12:20 INFO Analyzing destination image manifest... - 16-Feb-26 09:12:20 INFO Destination is MULTI-ARCH image - 16-Feb-26 09:12:20 INFO Destination Index Digest (Manifest List): sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:20 INFO Destination has 2 platform(s): - 16-Feb-26 09:12:20 INFO - linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b - 16-Feb-26 09:12:20 INFO - linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf - 16-Feb-26 09:12:20 INFO - 16-Feb-26 09:12:20 INFO === DIGEST VERIFICATION === - 16-Feb-26 09:12:20 INFO Comparing Index Digests (Manifest Lists): - 16-Feb-26 09:12:20 INFO Source: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:20 INFO Destination: sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 - 16-Feb-26 09:12:20 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! - 16-Feb-26 09:12:20 INFO - 16-Feb-26 09:12:20 INFO Comparing Platform Manifests: - 16-Feb-26 09:12:20 INFO ✓ linux/amd64: sha256:d02ad2a68c770dbf89b949e261b525f1df1106961b53271d236231eb28e5438b (MATCH) - 16-Feb-26 09:12:20 INFO ✓ linux/arm64: sha256:fac3ac86bc067f7f96639b7bb2f42d046a362c59478ac7c61acf9db8470598bf (MATCH) - 16-Feb-26 09:12:20 INFO ✓ All 2 platform manifest(s) match perfectly! - 16-Feb-26 09:12:20 INFO Creating latest tag: crane copy injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 index.docker.io/bn46/uitest-verify:latest - 16-Feb-26 09:12:21 INFO Successfully created latest tag - 16-Feb-26 09:12:21 INFO Image available at: index.docker.io/bn46/uitest-verify:0.17.x - 16-Feb-26 09:12:21 INFO - 16-Feb-26 09:12:21 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. - 16-Feb-26 09:12:21 INFO Individual platform manifests should also match to ensure identical content. - 16-Feb-26 09:12:21 INFO Completed processing injistackdev2/uitest-verify@sha256:b14db85eff43f53a842e8dff00dbf39d1eb28ddeda86f7117b0f2cd3a915af91 to bn46/uitest-verify:0.17.x + 16-Feb-26 09:20:54 INFO LOGFILE CREATED : vidivi.log + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO ******************** Check Images List ************************************************************************************ + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO IMAGES= [['injistackdev2/inji-web:release-0.16.x', '0.16.x'], ['injistackdev2/mimoto:release-0.21.x', '0.21.x']] + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO ******************** Check existence of Source Images ******************************************************************* + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO src = "injistackdev2/inji-web" tag = "release-0.16.x" + 16-Feb-26 09:20:54 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 16-Feb-26 09:20:54 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/inji-web:pull HTTP/1.1" 200 None + 16-Feb-26 09:20:54 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 + 16-Feb-26 09:20:54 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/inji-web/tags/release-0.16.x HTTP/1.1" 200 None + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO src = "injistackdev2/mimoto" tag = "release-0.21.x" + 16-Feb-26 09:20:54 DEBUG Starting new HTTPS connection (1): auth.docker.io:443 + 16-Feb-26 09:20:54 DEBUG https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository:injistackdev2/mimoto:pull HTTP/1.1" 200 None + 16-Feb-26 09:20:54 DEBUG Starting new HTTPS connection (1): registry.hub.docker.com:443 + 16-Feb-26 09:20:54 DEBUG https://registry.hub.docker.com:443 "GET /v2/repositories/injistackdev2/mimoto/tags/release-0.21.x HTTP/1.1" 200 None + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO ******************** Check existence of Destination Docker Account *************************************************************** + 16-Feb-26 09:20:54 DEBUG Starting new HTTPS connection (1): hub.docker.com:443 + 16-Feb-26 09:20:54 DEBUG https://hub.docker.com:443 "GET /v2/users/bn46 HTTP/1.1" 200 None + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO ******************** Check existence of Destination Images *************************************************************** + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO [ bn46/inji-web ] + 16-Feb-26 09:20:54 INFO Destination Image = "bn46/inji-web" Destination Image tag = "0.16.x" IMAGE_ID : sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 16-Feb-26 09:20:54 INFO + 16-Feb-26 09:20:54 INFO [ bn46/mimoto ] + 16-Feb-26 09:20:55 INFO Destination Image = "bn46/mimoto" Destination Image tag = "0.21.x" IMAGE_ID : sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO ******************** HASH Operation Results ********************************************************************** + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO ******************** Start Image Transfer operation *********************************************************************** + 16-Feb-26 09:20:55 DEBUG Trying paths: ['/home/runner/.docker/config.json', '/home/runner/.dockercfg'] + 16-Feb-26 09:20:55 DEBUG Found file at path: /home/runner/.docker/config.json + 16-Feb-26 09:20:55 DEBUG Found 'auths' section + 16-Feb-26 09:20:55 DEBUG Found entry (registry='https://index.docker.io/v1/', username='bn46') + 16-Feb-26 09:20:55 DEBUG http://localhost:None "GET /version HTTP/1.1" 200 823 + 16-Feb-26 09:20:55 DEBUG Looking for auth entry for 'docker.io' + 16-Feb-26 09:20:55 DEBUG Found 'https://index.docker.io/v1/' + 16-Feb-26 09:20:55 INFO Using 3 parallel workers for image transfers + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO ********** [ bn46/inji-web:0.16.x ] **************************************************** + 16-Feb-26 09:20:55 INFO Transferring image using crane... + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO ********** [ bn46/mimoto:0.21.x ] **************************************************** + 16-Feb-26 09:20:55 INFO Transferring image using crane... + 16-Feb-26 09:20:55 INFO Source uses tag reference: injistackdev2/inji-web:release-0.16.x + 16-Feb-26 09:20:55 INFO Analyzing source image manifest... + 16-Feb-26 09:20:55 INFO Source uses tag reference: injistackdev2/mimoto:release-0.21.x + 16-Feb-26 09:20:55 INFO Analyzing source image manifest... + 16-Feb-26 09:20:55 INFO Source is MULTI-ARCH image + 16-Feb-26 09:20:55 INFO Source Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 16-Feb-26 09:20:55 INFO Source has 2 platform(s): + 16-Feb-26 09:20:55 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 + 16-Feb-26 09:20:55 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce + 16-Feb-26 09:20:55 INFO Using secure connection for HTTPS registry + 16-Feb-26 09:20:55 INFO Executing: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:0.16.x + 16-Feb-26 09:20:55 INFO Source is MULTI-ARCH image + 16-Feb-26 09:20:55 INFO Source Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 16-Feb-26 09:20:55 INFO Source has 2 platform(s): + 16-Feb-26 09:20:55 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 + 16-Feb-26 09:20:55 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 + 16-Feb-26 09:20:55 INFO Using secure connection for HTTPS registry + 16-Feb-26 09:20:55 INFO Executing: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:0.21.x + 16-Feb-26 09:20:55 INFO Successfully transferred image with crane + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO Analyzing destination image manifest... + 16-Feb-26 09:20:55 INFO Successfully transferred image with crane + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO Analyzing destination image manifest... + 16-Feb-26 09:20:55 INFO Destination is MULTI-ARCH image + 16-Feb-26 09:20:55 INFO Destination Index Digest (Manifest List): sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 16-Feb-26 09:20:55 INFO Destination has 2 platform(s): + 16-Feb-26 09:20:55 INFO - linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 + 16-Feb-26 09:20:55 INFO - linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO === DIGEST VERIFICATION === + 16-Feb-26 09:20:55 INFO Comparing Index Digests (Manifest Lists): + 16-Feb-26 09:20:55 INFO Source: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 16-Feb-26 09:20:55 INFO Destination: sha256:862abbee3278c4417b701811954825a3cc635ee871d8041296b9642839867df2 + 16-Feb-26 09:20:55 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO Comparing Platform Manifests: + 16-Feb-26 09:20:55 INFO ✓ linux/amd64: sha256:bdcd423130503707f8b023b74debbdab5e3660538cb0f58ae95b2fdbfdeb9c67 (MATCH) + 16-Feb-26 09:20:55 INFO ✓ linux/arm64: sha256:215b937f6fec27e47c328b65be54aaf0adbb6feb6ae6f0d112f8ae5a496accce (MATCH) + 16-Feb-26 09:20:55 INFO ✓ All 2 platform manifest(s) match perfectly! + 16-Feb-26 09:20:55 INFO Creating latest tag: crane copy injistackdev2/inji-web:release-0.16.x index.docker.io/bn46/inji-web:latest + 16-Feb-26 09:20:55 INFO Destination is MULTI-ARCH image + 16-Feb-26 09:20:55 INFO Destination Index Digest (Manifest List): sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 16-Feb-26 09:20:55 INFO Destination has 2 platform(s): + 16-Feb-26 09:20:55 INFO - linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 + 16-Feb-26 09:20:55 INFO - linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO === DIGEST VERIFICATION === + 16-Feb-26 09:20:55 INFO Comparing Index Digests (Manifest Lists): + 16-Feb-26 09:20:55 INFO Source: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 16-Feb-26 09:20:55 INFO Destination: sha256:aaace9caa29bd331811d786669e585769931a24e64f04ed19496e5a8dffe6ec0 + 16-Feb-26 09:20:55 INFO ✓ Index Digest MATCH - Multi-arch structure preserved perfectly! + 16-Feb-26 09:20:55 INFO + 16-Feb-26 09:20:55 INFO Comparing Platform Manifests: + 16-Feb-26 09:20:55 INFO ✓ linux/amd64: sha256:f0f371927bb3727cb2e63bd554cbc3c5821c7221cd9709216c0ee71e6a75cdb6 (MATCH) + 16-Feb-26 09:20:55 INFO ✓ linux/arm64: sha256:4ab0bf4794697bb894590371900b660bfba31ad465d0849f191f2a1d42615350 (MATCH) + 16-Feb-26 09:20:55 INFO ✓ All 2 platform manifest(s) match perfectly! + 16-Feb-26 09:20:55 INFO Creating latest tag: crane copy injistackdev2/mimoto:release-0.21.x index.docker.io/bn46/mimoto:latest + 16-Feb-26 09:20:56 INFO Successfully created latest tag + 16-Feb-26 09:20:56 INFO Image available at: index.docker.io/bn46/mimoto:0.21.x + 16-Feb-26 09:20:56 INFO + 16-Feb-26 09:20:56 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 16-Feb-26 09:20:56 INFO Individual platform manifests should also match to ensure identical content. + 16-Feb-26 09:20:56 INFO Successfully created latest tag + 16-Feb-26 09:20:56 INFO Image available at: index.docker.io/bn46/inji-web:0.16.x + 16-Feb-26 09:20:56 INFO + 16-Feb-26 09:20:56 INFO NOTE: For multi-arch images, the Index Digest (manifest list) is what matters most. + 16-Feb-26 09:20:56 INFO Individual platform manifests should also match to ensure identical content. + 16-Feb-26 09:20:56 INFO Completed processing injistackdev2/inji-web:release-0.16.x to bn46/inji-web:0.16.x + 16-Feb-26 09:20:56 INFO Completed processing injistackdev2/mimoto:release-0.21.x to bn46/mimoto:0.21.x diff --git a/release/vidivi/transfer_report.md b/release/vidivi/transfer_report.md index 334309df..f0b94f0c 100644 --- a/release/vidivi/transfer_report.md +++ b/release/vidivi/transfer_report.md @@ -1,14 +1,14 @@ # Image Transfer Report -**Date**: Mon Feb 16 09:12:21 UTC 2026 +**Date**: Mon Feb 16 09:20:56 UTC 2026 **Registry Type**: dockerhub **Registry URL**: https://index.docker.io/v1/ **Organization**: bn46 **WireGuard VPN**: Disabled ## Statistics -- **Crane transfers**: 1 -- **Total completed**: 1 +- **Crane transfers**: 2 +- **Total completed**: 2 - **Failed transfers**: 00 ## Tools Used @@ -17,4 +17,5 @@ - Registry Support: HTTP/HTTPS auto-detection ## Transferred Images -- index.docker.io/bn46/uitest-verify:0.17.x +- index.docker.io/bn46/mimoto:0.21.x +- index.docker.io/bn46/inji-web:0.16.x