Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@bitpod/schema-migrate

schema-migrate is a command line interface for running commands against bitpod schema migration

deployment, schema-migrate, migration

readme

This utility is used to migrate the basic schema changes from one backend to another.

We have outlined the basic integration steps below.

Requirements

  • This tool requires a NodeJS environment. Support for more platforms is coming soon.
  • NodeJS v6 or above.

Installation

  • You can install with npm or yarn package manager.

    npm install --save @bitpod/schema-migrate
    yarn add @bitpod/schema-migrate

Setup

  1. You should have accesskey for the both backends source and destination.
  2. Access keys should be bound with the user having developer role.
  3. Create schema-migration.json file in root directory of your project using following json.
  4. dataonly flag in the schema-migration.json will take you to the data mode, in which only roles will migrate.
{
    "tempPath" : "./tmp",
    "autodeploy": false,
    "loglevel": "error",
    "testonly" : false,
    "rolesonly" : false,
    "createapp": false,
    "exportDataAndMeta":false,
    "orgId":1
    "skipMissingModels": false
    "export": {
        "serverApiUrl": "test.p10.io",
        "instanceId": "SJeyHdUkV",
        "deploymentVersion": "2",
        "accessKey": "2dc3cb6fe6dd43a1f2e7b5d9e2c3d2b1476ee0d09272f045e7e7b1669a99c6e5",
        "accessSecret": "2dc3cb6fe6dd43a1f2e7b5d9e2c3d2b1476ee0d09272f045e7e7b1669a99c6e5",
        "models": []
    },
    "import": {
        "serverApiUrl": "test.p10.io",
        "instanceId": "ByriHk2kN",
        "accessKey": "9baf2af8a88e6a31e0cede2900e8bafe073f84655bb6abba3969912372519fe9",
        "accessSecret": "9baf2af8a88e6a31e0cede2900e8bafe073f84655bb6abba3969912372519fe9",
        "comment": "Deployment through cli tool."
    }
}
  1. Configure commnand schema-migrate in a seperate json file package.json in root directory of your project using following json.
{
  "name": "your project/folder name",
  "description": "A directory to configure schema-migrate tool.",
  "main": "index.js",
  "scripts": {
    "migrate": "schema-migrate migrate --export-instanceid SJNtKJ9cM --export-apiurl https://test.p10.io/api --export-deploymentversion 7 --export-accesskey 247ffb7a03b7d8ebc2a9b2e94f31a34958e00df8c44e8dcd6289467fd5f325a561029cc9633d4595d2bf4c5fc3a738f1 --loglevel info "
  }
}
  1. For going into app gallery packager mode, make createapp field to true in schema-migration.json .
  2. For export data and meta file use flag exportDataAndMeta.
{"createapp": false/true/'zip'} 
{"exportDataAndMeta":true/false}
  1. For app gallery packager configuration (screenshots image validations)

    IMAGE_VALIDATION: size required

     |      xs     |     Min     |   Max   |
     | ----------- | ----------- | ------- |
     | width       |     640     |  1024   |
     | height      |     480     |  768    |
    
     |      sm     |     Min     |   Max   |
     | ----------- | ----------- | ------- |
     | width       |     1024    |  1322   |
     | height      |     768     |  992    |
    
     |      md     |     Min     |   Max   |
     | ----------- | ----------- | ------- |
     | width       |     1322    |  1620   |
     | height      |     992     |  1200   |
    
     |      lg     |     Min     |   Max   |
     | ----------- | ----------- | ------- |
     | width       |     1620    |  2590   |
     | height      |     1200    |  1920   |
    
     |      xl     |     Min     |   Max   |
     | ----------- | ----------- | ------- |
     | width       |     2590    |     -   |
     | height      |     1920    |     -   |
  1. app.json needed for app gallery configuration.
{
    "backendId": "SJCyyAjl7",
    "organizationId": "bitpod",
    "outputpath": "./omkar",
    "accessToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpTcEJjejBIdW01dVlGYnV2T2pQMGdkRml3VSIsImtpZCI6ImpTcEJjejBIdW01dVlGYnV2T2pQMGdkRml3VSJ9.eyJpc3MiOiJodHRwczovL2RldmF1dGgucDEwLmlvL2F1dGgiLCJhdWQiOiJodHRwczovL2RldmF1dGgucDEwLmlvL2F1dGgvcmVzb3VyY2VzIiwiZXhwIjoxNTI5MDY3ODI1LCJuYmYiOjE1Mjg5ODE0MjUsImNsaWVudF9pZCI6Imd0ditxMDRsdS9sNVpmS3kwdldGSmpEcjlHN0dzRGFXUGlWaXdwSjBZSnM9Iiwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsIm9mZmxpbmVfYWNjZXNzIiwiZW1haWwiLCJub3RpZmljYXRpb24iLCJiYWFzIl0sInN1YiI6Im9raGVuZXdhckBwYXJhZ3l0ZS5jb20iLCJhdXRoX3RpbWUiOjE1Mjg5ODE0MjQsImlkcCI6InAxME9BdXRoIiwiYW1yIjpbImV4dGVybmFsIl19.aUrW2TioHWS7e2IQnefCvudk55hHt98YAkoFqILyBd5Vzay-KXpMiBGNchZyBIep9besPhwCMiqcfcGJRAkJUHlVLpxq2kE4qvJEyCLGf9augfmQlWopetKLxhieqihgoppZlNSCLSxSZFwfF3HGvVEH7hxHDy0vpGyTTWWkPeVXbVPl5JXity8evNPXddIIYVh1TcYpTZ3FDeJjYStV1_17m6Gi2RRf0qKvzV6bj3hTbSMoGuvkNIW1QImKQ6gdAJNjarfUKSswOloM6RnZ1gTvXa55cDiX5ItKxKdwbuStgdFqNk8al9qAoeUM7iVfM6BK8MjctOMos5WIc9p7Wg",
    "name": "TestCareApp",
    "description": "Test App Packager",
    "logo": "./images/logo_care.png",
    "screenshots": [
        {
            "_id": "SkUWWCmke",
            "xs": {
                "uri": "./images/testcare_xs641_481.jpg",
                "description": ""
            },
            "sm": {
                "uri": "./images/testcare_sm1025_769.png",
                "description": ""
            },
            "md": {
                "uri": "./images/testcare_md1323_993.png",
                "description": ""
            },
            "lg": {
                "uri": "./images/testcare_lg1621_1201.png",
                "description": ""
            },
            "xl": {
                "uri": "./images/testcare_xl2589_1919.png",
                "description": ""
            }
        }
    ],
    "version": "1.0.0",
    "categories": ["ok"],
    "unitOfPrice"    : "USD",
    "publisher" : {                                    
        "name" : "Bitpod", 
        "website" : "https://bitpod.io/", 
        "verified" : true,
        "email": "digital@bitpod.com"
    }
}

you can provide options in the package json file in the schema-migrate command so that you can directly fire a command yarn migrate.

schema-migration.json configuration params

  • Schema Migrate schema details

| | Required | Description | | -------------- | ----------- | ------------------------------------------------ | | tempPath | ✔ | working path for export and import operation | | autodeploy | ✔ | Whether to deploy after migration is completed | | loglevel | ✔ | Which level of logs to display | | testonly | ✔ | Test mode in which only export part will be done | | rolesonly | ✔ | Roles mode in which only roles will be migrated | | createapp | ✔ | passed structure will be packaged for app gallary | | exportDataAndMeta| ✔ | passed structure will be export meta and data files | | OrgId | ✔ | Oragnization Id | | export | ✔ | configuration related to export | | serverApiUrl | ✔ | base url of bitpod deployment api, e.g. test.p10.io | | instanceId | ✔ | unique id of the backend | | deploymentVersion| ✔ | deployment version no to be exported | | accessKey | ✔ | access key of the backend to exported | | accessSecret | ✔ | access Secrets of the backend to exported | | models | - | optionally used when we have to export models selectively | | import | ✔ | configuration related to import | | serverApiUrl | ✔ | base url of bitpod deployment api, e.g. test.p10.io | | instanceId | ✔ | unique id of the backend | | accessKey | ✔ | access key of the backend in which schema to be imported | | accessSecret | ✔ | access Secrets of the backend to exported | | comment | - | optionally used when we have to deploy the backend after import is completed |

run the cli tool

After doing the configuration you can simply run the cli by using following command.

  npm run migrate
  yarn migrate