Skip to content

Repo migration approach and tasks #1737

@dan-r

Description

@dan-r

This issue outlines the approach and ordering of the repo migration from the hyperledger org to hyperledger-firefly. The approach aims to limit disruption to consumers of our packages.

Based on the approach highlight below we are committing to doing a Release of FireFly: 1.5.0

This was initially discussed in Discord thread.

Approach

First step is creating all the teams in the org for access control

Repos should be transferred in dependency order:

Group 1 (no local dependencies):

  • firefly-fir
  • firefly-common -> common
  • firefly-ethconnect -> ethconnect
  • firefly-fabconnect -> fabconnect
  • firefly-cordaconnect -> cordaconnect
  • firefly-dataexchange-https -> dataexchange-https
  • firefly-tokens-erc1155
  • firefly-tokens-erc20-erc721
  • firefly-ui
  • firefly-cardano
  • firefly-sdk-nodejs
  • firefly-helm-charts
  • firefly-samples

Group 2 (depend only on firefly-common):

  • firefly-signer
  • firefly-transaction-manager

Group 3 (depend on Group 2):

  • firefly (core)
  • firefly-cli
  • firefly-evmconnect
  • firefly-tezosconnect
  • firefly-sandbox

Group 4 (depends on core firefly):

  • firefly-perf-cli

For each repo the steps are:

  1. Transfer repo to new org. GitHub automatically redirects the old repo to the new one.
  2. Update go.mod with new org/repo name and update all import paths across .go source files.
  3. Update hardcoded ghcr.io/hyperledger/ image references in workflows.
  4. Make a minor release to test CI.
  5. Update the 404.html in the org site to redirect FireFly docs to the new org. GitHub does not automatically redirect Pages sites.

Additional steps

  • Recreate Docker images from GitHub packages/GHCR under ghcr.io/hyperledger-firefly/ in the new org. Update all GHCR image references in each repo, particularly in firefly core and firefly-helm-charts.
  • Update hardcoded github.com/hyperledger/ or ghcr.io/hyperledger/ references in source code and workflow files outside of go.mod. Update firefly-cli image references in source before any post-migration release.
  • Resolve npm scope: @hyperledger/firefly-sdk. Confirm whether to keep @hyperledger scope or move to @hyperledger-firefly. Create NPM token org secret in new org. If moving scope, deprecate old package with pointer to new one and update downstream consumers.
  • Update the Homebrew formula after firefly-cli is migrated.

Alternatives

Alternative approaches involving keeping a repository at the old path have not been considered due to the following note from GitHub docs:

If the transferred repository contains an action listed on GitHub Marketplace, or had more than 100 clones or more than 100 uses of GitHub Actions in the week prior to the transfer, GitHub permanently retires the owner name and repository name combination (OWNER/REPOSITORY-NAME) when you transfer the repository. If you try to create a repository using a retired owner name and repository name combination, you will see the error: "The repository REPOSITORY_NAME has been retired and cannot be reused."

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions