Skip to main content
Version: 2.0 🆕

GoLang-migrate

Migrate reads migrations from sources file and applies them in correct order to a database.

Prerequisite: Make sure you have SQL files in format used by the golang-migrate tool.

Official-documentation: https://github.com/golang-migrate/migrate Postgres-example: https://github.com/golang-migrate/migrate/tree/master/database/postgres

  1. On the Edit build pipeline page, select the Pre-Build Stage (or Post-Build Stage). or
  2. Click + Add task.
  3. Select GoLang-migrate from PRESET PLUGINS.
  • Enter a relevant name in the Task name field. It is a mandatory field.
  • Enter a descriptive message for the task in the Description field. It is an optional field.
  • Provide a value for the input variable.
    Note: The value may be any of the values from the previous build stages, a global variable, or a custom value.
VariableFormatDescription
DB_TYPEStringCurrently this plugin support postgres,mongodb,mongodb+srv,mysql,sqlserver.
DB_HOSTStringThe hostname, service endpoint or IP address of the database server.
DB_PORTStringThe port number on which the database server is listening.
DB_NAMEStringThe name of the specific database instance you want to connect to.
DB_USERStringThe username required to authenticate to the database.
DB_PASSWORDStringThe password required to authenticate to the database.
SCRIPT_LOCATIONStringLocation of SQL files that need to be run on desired database.
MIGRATE_IMAGEStringDocker image of golang-migrate default:migrate/migrate.
MIGRATE_TO_VERSIONStringmigrate to which version of sql script need to be run on desired database(default: 0 is for all files in directory).
PARAMStringextra params that runs with db queries.
POST_COMMANDStringpost commands that runs at the end of script.
  • Trigger/Skip Condition refers to a conditional statement to execute or skip the task. You can select either:

    • Set trigger conditions or
    • Set skip conditions

  • Click Update Pipeline.

Notes​

  • Use in-cluster/ Execute tasks in application environment feature in pre-deploy or post-deploy, in case when the database service is not reachable or accessible from devtron cluster.

  • In case the DB_TYPE is not supported for your database, then use POST_COMMAND as

    POST_COMMAND: 
    docker run -v $PWD:$PWD $MIGRATE_IMAGE -path $PWD/$SCRIPT_LOCATION -database <myDB-connection-string>" goto $MIGRATE_TO_VERSION;
  • use DB_PASSWORD with scope-variable feature for more security.