Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • JS7 JOC Cockpit can be configured to interface with Git repositories to store its configuration objects such as workflows and jobs.
  • Configuration objects can be versioned (tagged) and can be rolled out to different JS7 instances via Git. This allows to create and to test workflows in a development environment and to perform a rollout to a production environment by use of a Git repository.
  • JOC Cockpit is the leading system to store configuration objects in its database. A connection to a Git repository is considered an additional option to manage versions and rollouts of JS7 configuration objects.
  • Display feature availability
    StartingFromRelease2.2.0

Object Mappings

Configuration Objects

Environment-independent Objects

JS7 configuration objects that can be added to a Git repository should be rolled out across environments include

  • Workflows
  • Locks
  • File Order Sources
  • Notice Boards

Such objects can be managed with JS7 in a way that allows to re-use the objects - without any changes - across rollout environments such as dev, test, prod.

Environment-related Objects

The following configuration objects typically hold configuration items values that can be specific for an individual rollout environment and therefore optionally can be excluded from a Git repository.are added to a separate branch. Such objects should not be rolled out across environments.

  • Job Resources
  • Calendars
  • Schedules

...

Info
titleNote

If merging of configuration objects between different Git repositories or between different branches of a single Git repository is required then additional tools such as Git Extensions can be used.

Use Cases

Single Client - Single

...

Repository

Scenario

  • Architecture
    • A single JOC Cockpit instance is used with a single Controller or optionally with separate Controllers and Agents for rollout environments such as dev, test, prod.
    • The Git repository is used per folder to hold a copy of JS7 configuration objects and to create versions branches of JS7 configuration objects such as dev,, test, prod in a single branchrepository.
  • Users
    • All users act in the same JOC Cockpit instance that is a single client to the Git server.
    • Changes to the Git repository are performed by the users' individual accounts and are added to branches in a single branchdirectory.
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to a number of Controllers and Agents (dev, test, prod).
    • The Git repository can be used to fallback (pull) to previous versions of configuration objects, however, only one version is available with JOC Cockpit at a given point in time.

Branches marked as "env" are specific for an environment and are excluded from rollout. Branches marked as "rollout" are forwarded across scheduling environments.


Flowchart
USER1a [label="   User: 1   ",fillcolor="lightskyblue"]
USER1b [label="   User: 2   ",fillcolor="lightskyblue"]
USER1c [label="   User: 3   ",fillcolor="lightskyblue"]
FOLDER1 [label="   Folder: 1   ",fillcolor="white"]
JOC1 [label="   JOC Cockpit   ",fillcolor="lightskyblue"]
DATABASE [shape="ellipse",label="     Database     ",fillcolor="lightskyblue"]
REPOGIT [label="    Git RepositoryServer    ",fillcolor="orange"]
BRANCH1REPO [shape="ellipse",label="    Repository  Single Branch       ",fillcolor="orange"]
BRANCH1R [shape="ellipse",label="Branch: env dev",fillcolor="orangedarkolivegreen1"]

JOC1 -> FOLDER1 -> BRANCH1 [label="   Commit/Push\nPull   "]
# BRANCH1 -> JOC1 [label="   Pull   "]
BRANCH1 -> REPOBRANCH1I [shape="ellipse",label="Branch: rollout dev",fillcolor="darkolivegreen1"]
BRANCH2R [shape="ellipse",label="Branch: env test",fillcolor="darkolivegreen2"]
BRANCH2I [shape="ellipse",label="Branch: rollout test",fillcolor="darkolivegreen2"]
BRANCH3R [shape="ellipse",label="Branch: env prod",fillcolor="darkolivegreen3"]
BRANCH3I [shape="ellipse",label="Branch: rollout prod",fillcolor="darkolivegreen3"]

JOC1 -> DATABASEFOLDER1

USER1aJOC1 -> JOC1DATABASE

USER1bFOLDER1 -> JOC1
USER1c -> JOC1

Repository Operations

  • management
  • versioning
  • rollout

Requirements

  • The JOC Cockpit database is the leading system that holds the configuration objects.

Single Client - Multiple Branches (dev, test, prod)

Scenario

BRANCH1R [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH1I [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH2R [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH3R [label="Commit/Push\nPull"]

BRANCH1R -> REPO
BRANCH2R -> REPO
BRANCH3R -> REPO
BRANCH1I -> BRANCH2I -> BRANCH3I -> REPO

REPO -> GIT

USER1a -> JOC1
USER1b -> JOC1
USER1c -> JOC1

Repository Operations

  • management
  • versioning
  • rollout

Requirements

  • The JOC Cockpit database is the leading system that holds the configuration objects.

Single Client - Multiple Repositories (dev, test, prod)

Scenario

  • Architecture
    • A dedicated JOC Cockpit instance is used with Controller and Agents for each rollout environment such as dev, test, prod.
    • The same Git repository is used per folder by all JOC Cockpit instances, however, each instance is acting on a specific branch per rollout environment.
    • The Git repository is used to hold a copy of JS7 configuration objects, to create versions of JS7 configuration objects and to merge branches such as dev => test, test => prod.
  • Users
    • All users act in the same JOC Cockpit instance of the respective rollout environment that is a single client to the Git server.
    • Changes to the Git repository are performed by the users' individual accounts and are added to each branch
    Architecture
    • A dedicated JOC Cockpit instance is used with Controller and Agents for each rollout environment such as dev, test, prod.The same Git repository is
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to each Controller and Agents per rollout environment (dev, test, prod) used per folder by all JOC Cockpit instances, however, each instance is acting on a specific branch per rollout environment.
    • The Git repository is used to hold a copy of merge branches and to rollout JS7 configuration objects , to create versions of JS7 configuration objects and to merge branches such to different Controllers and Agents, such as dev => test , test => prod.
  • Users
    • All users act in the same JOC Cockpit instance of the respective rollout environment that is a single client to the Git server.
    • Changes to the Git repository are performed by the users' individual accounts and are added to each branch such as dev, test, prod.
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to each Controller and Agents per rollout environment (dev, test, prod).
    • The Git repository is used to merge branches and to rollout JS7 configuration objects to different Controllers and Agents, such as dev => test => prod.
    • The Git repository can be used to fallback (pull) to previous versions of configuration objects, however, only one version is available with a given JOC Cockpit instance at a given point in time.
    • The Git repository can be used to fallback (pull) to previous versions of configuration objects, however, only one version is available with a given JOC Cockpit instance at a given point in time.

Branches marked as "env" are specific for an environment and are excluded from rollout. Branches marked as "rollout" are forwarded across scheduling environments.


Flowchart
USER1a [label="   User: 1a   ",fillcolor="lightskyblue"]
USER1b [label="   User: 1b   ",fillcolor="lightskyblue"]
USER2 [label="   User: 2   ",fillcolor="lightskyblue"]
USER3 [label="   User: 3   ",fillcolor="lightskyblue"]

JOC1 [label="   JOC Cockpit: dev   ",fillcolor="lightskyblue"]
JOC2 [label="   JOC Cockpit: test   ",fillcolor="lightskyblue"]
JOC3 [label="   JOC Cockpit: prod   
Flowchart
USER1a [label="   User: 1a   ",fillcolor="lightskyblue"]
USER1b
FOLDER1 [label="   User   Folder: 1b   1 (dev)   ",fillcolor="lightskybluewhite"]
USER2FOLDER2 [label="   User   Folder: 2    1 (test)  ",fillcolor="lightskybluewhite"]
USER3FOLDER3 [label="   User   Folder: 3    1 (prod)   ",fillcolor="lightskybluewhite"]

JOC1DATABASE1 [shape="ellipse",label="    JOC Cockpit  Database: dev      ",fillcolor="lightskyblue"]
JOC2DATABASE2 [shape="ellipse",label="   JOC   Cockpit  Database: test   test     ",fillcolor="lightskyblue"]
JOC3DATABASE3 [shape="ellipse",label="   JOC   Cockpit  Database: prod  prod      ",fillcolor="lightskyblue"]

FOLDER1GIT [label="   Folder: 1 (dev)   Git Server",fillcolor="whiteorange"]
FOLDER2REPO1 [label="   FolderRepository: 1 (test)  dev",fillcolor="whitedarkolivegreen1"]
FOLDER3REPO2 [label="   FolderRepository: 1 (prod)   test",fillcolor="whitedarkolivegreen2"]

DATABASE1REPO3 [shape="ellipse",label="     DatabaseRepository: dev     prod",fillcolor="lightskybluedarkolivegreen3"]

DATABASE2BRANCHES1R [shape="ellipse",label="     Database: test     Branches: env dev",fillcolor="lightskybluedarkolivegreen1"]
DATABASE3BRANCHES1I [shape="ellipse",label="     DatabaseBranches: prodrollout     dev",fillcolor="lightskybluedarkolivegreen1"]
REPOBRANCHES2R [shape="ellipse",label=" Branches: env  Git Repository    test",fillcolor="orangedarkolivegreen2"]

BRANCH1BRANCHES2I [shape="ellipse",label="    BranchBranches: devrollout    test",fillcolor="orangedarkolivegreen2"]
BRANCH2BRANCHES3R [shape="ellipse",label="    BranchBranches: testenv    prod",fillcolor="orangedarkolivegreen3"]
BRANCH3BRANCHES3I [shape="ellipse",label="Branches: rollout prod",fillcolor="darkolivegreen3"]

JOC1  Branch: prod    ",fillcolor="orange"]

JOC1-> DATABASE1
JOC2 -> DATABASE2
JOC3 -> DATABASE3

JOC1 -> FOLDER1 
FOLDER1-> BRANCHES1R [label="Commit/Push\nPull"]
FOLDER1-> BRANCHES1I [label="Commit/Push\nPull"]
BRANCHES1R -> DATABASE1REPO1
JOC2BRANCHES1I -> DATABASE2REPO1

JOC3JOC2 -> DATABASE3FOLDER2

JOC1FOLDER2 -> FOLDER1 BRANCHES2R [label="Commit/Push\nPull"]
FOLDER2 -> BRANCH1BRANCHES2I [label="   Commit/Push\nPull   "]
JOC2"]
BRANCHES2R -> REPO2
BRANCHES2I -> REPO2

JOC3 -> FOLDER2FOLDER3 
FOLDER3-> BRANCH2BRANCHES3R [label="   Commit/Push\nPull   "]
JOC3 -> FOLDER3 -> BRANCH3BRANCHES3I [label="   Commit/Push\nPull   "]

BRANCH1"]
BRANCHES3R -> REPO3
BRANCHES3I -> REPO3

BRANCHES1I -> BRANCH2BRANCHES2I [label="  merge   checkout/clone"] 
BRANCH2BRANCHES2I -> BRANCH3BRANCHES3I [label="   merge   checkout/clone"]

BRANCH1REPO1 -> REPOGIT
BRANCH2REPO2 -> REPOGIT
BRANCH3REPO3 -> REPOGIT

USER1a -> JOC1
USER1b -> JOC1
USER2 -> JOC2
USER3 -> JOC3

...

  • Architecture
    • A dedicated JOC Cockpit instance is used with each Controller and Agents for each user in the dev rollout environment.
    • A dedicated JOC Cockpit instance is used with each Controller and Agents for all users in the test and prod rollout environments.
    • The same Git repository is used per folder by all JOC Cockpit instances, however, each instance is acting on a specific branch per rollout environment.
    • The Git repository is used to hold a copy of JS7 configuration objects, to create versions of JS7 configuration objects and to merge branches such as dev => test, test => prod.
  • Users
    • Users act in individual JOC Cockpit instances of the dev rollout environment as multiple clients to the Git server.
    • Users act in the same JOC Cockpit instance of the test and prod rollout environment as a single client to the Git server.
    • Changes to the Git repository are performed by the users' individual accounts to a each branch.
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to the connected Controller and Agents per rollout environment (dev, test, prod).
    • The Git repository is used to merge branches and to rollout JS7 configuration objects to different Controllers and Agents, such as dev => test => prod.
    • The Git repository can be used to fallback (pull) to previous versions of configuration objects, however, only one version is available with a given JOC Cockpit instance at a given point in time.

Branches marked as "env" are specific for an environment and are excluded from rollout. Branches marked as "rollout" are forwarded across scheduling environments.


Flowchart
USER1a
Flowchart
USER1a [label="   User: 1a   ",fillcolor="lightskyblue"]
USER1b [label="   User: 1b   ",fillcolor="lightskyblue"]
# USER1c [label="   User: 1c   ",fillcolor="lightskyblue"]
USER2a [label="   User: 2a   ",fillcolor="lightskyblue"]
USER2b [label="   User: 2b   1a   ",fillcolor="lightskyblue"]
USER3USER1b [label="   User: 3   1b   ",fillcolor="lightskyblue"]

JOC1aUSER2a [label="   JOC Cockpit: dev 1a   ",fillcolor="lightskyblue"]
JOC1b [label="   JOC Cockpit: dev 1b      User: 2a   ",fillcolor="lightskyblue"]
# JOC1cUSER2b [label="   JOC Cockpit   User: dev 1c   2b   ",fillcolor="lightskyblue"]
JOC2USER3  [label="   JOC Cockpit   User: test   3   ",fillcolor="lightskyblue"]
JOC3 
JOC1a [label="   JOC Cockpit: proddev 1a     ",fillcolor="lightskyblue"]

#JOC1b FOLDER1a [label="   Folder   JOC Cockpit: 1adev 1b   (dev)   ",fillcolor="whitelightskyblue"]
#JOC2 FOLDER1b [label="   Folder   JOC Cockpit: 1b (dev)   test   ",fillcolor="whitelightskyblue"]
#JOC3 FOLDER1c [label="   Folder   JOC Cockpit: 1c (dev)   prod   ",fillcolor="whitelightskyblue"]

#DATABASE1a FOLDER2  [[shape="ellipse",label="   Folder: 1 (test)      Database: dev 1a   ",fillcolor="whitelightskyblue"]
# FOLDER3DATABASE1b  [shape="ellipse",label="   Folder   Database: 1 (prod)   dev 1b   ",fillcolor="whitelightskyblue"]

DATABASE1aDATABASE2  [shape="ellipse",label="   Database: devtest 1a    ",fillcolor="lightskyblue"]
DATABASE1bDATABASE3  [shape="ellipse",label="   Database: devprod 1b    ",fillcolor="lightskyblue"]
# DATABASE1c [shape="ellipse",label="   Database: dev 1c   

GIT [label="Git Server",fillcolor="orange"]
REPO1 [label="Repository: dev",fillcolor="darkolivegreen1"]
REPO2 [label="Repository: test",fillcolor="darkolivegreen2"]
REPO3 [label="Repository: prod",fillcolor="lightskybluedarkolivegreen3"]
DATABASE2 
BRANCHES1R [shape="ellipse",label="   DatabaseBranches: testenv   dev",fillcolor="lightskybluedarkolivegreen1"]
DATABASE3 BRANCHES1I [shape="ellipse",label="   DatabaseBranches: prodrollout   dev",fillcolor="lightskybluedarkolivegreen1"]
REPOBRANCHES2R [shape="ellipse",label=" Branches: env  Git Repository    test",fillcolor="orangedarkolivegreen2"]

BRANCH1BRANCHES2I [shape="ellipse",label="   BranchBranches: devrollout   test",fillcolor="orangedarkolivegreen2"]
BRANCH2BRANCHES3R [shape="ellipse",label="   BranchBranches: testenv   prod",fillcolor="orangedarkolivegreen3"]
BRANCH3BRANCHES3I [shape="ellipse",label="Branches: rollout  Branch: prod   ",fillcolor="orangedarkolivegreen3"]

JOC1a -> DATABASE1a
JOC1b -> DATABASE1b
JOC2 -> DATABASE2
JOC3 -> DATABASE1b
# JOC1c -> DATABASE1c
JOC2DATABASE3

JOC1a -> BRANCHES1R [label="Commit/Push\nPull"]
JOC1a -> BRANCHES1I [label="Commit/Push\nPull"]
JOC1b -> DATABASE2
JOC3 -> DATABASE3

JOC1aBRANCHES1R [label="Commit/Push\nPull"]
JOC1b -> BRANCH1BRANCHES1I [label="   CommitCommit/Push\nPull   nPull"]
JOC1bJOC2 -> BRANCH1BRANCHES2R [label="   CommitCommit/Push\nPull   nPull"]
# JOC1cJOC2 -> BRANCH1BRANCHES2I [label="   CommitCommit/Push\nPull   nPull"]
JOC2JOC3 -> BRANCH2BRANCHES3R [label="   CommitCommit/Push\nPull   nPull"]
JOC3 -> BRANCH3BRANCHES3I [label="   CommitCommit/Push\nPull   nPull"]

BRANCHES1R -> REPO1
BRANCHES1I -> REPO1

BRANCHES2R -> REPO2

BRANCH1BRANCHES2I -> REPO2

BRANCHES3R -> REPO3
BRANCHES3I -> BRANCH2 [label="   merge   "] 
BRANCH2REPO3

BRANCHES1I -> BRANCHES2I [label="checkout/clone"]
BRANCHES2I -> BRANCH3BRANCHES3I [label="   merge   "] 

BRANCH1checkout/clone"]

REPO1 -> REPOGIT
BRANCH2REPO2 -> REPOGIT
BRANCH3REPO3 -> REPOGIT

USER3 -> JOC3
USER2a -> JOC2
USER2b -> JOC2
USER1a -> JOC1a
USER1b -> JOC1b
# USER1c -> JOC1c

Repository Operations

  • management
  • versioning
  • rollout
  • force overwrite

...