Introduction
Continuous Integration / Continuous Delivery (CI/CD) is a supported method for JS7 - Rollout of Scheduling Objects.
- The scenario is described with the JS7 - Git Repository Interface.
- CI/CD includes to perform the following steps
- in a test environment
- to store scheduling objects of a JOC Cockpit inventory to a local Git repository,
- to commit and to push changes to the remote Git repository.
- in a prod environment
- to copy changes from the remote test Git repository to the local prod Git repository,
- to push changes from the local prod Git repository to the remote prod Git repository,
- to update the JOC Cockpit inventory from the local Git repository,
- to release and to deploy scheduling objects to Controllers and Agents.
- in a test environment
- The following examples assume that a local Git repository is set up in the test and prod environments, see PowerShell CLI 2.0 - Set up local Git Repository.
Steps to perform in the TEST Environment
Store Scheduling Objects to local Git Repository
The following cmdlets are used:
Example how to store changes to a local Git repository
Import-Module JS7 Connect-JS7 -Url http://root:root@test-host:4446 -Id Controller | Out-Null # Cleanup local repository by removing existing objects Remove-JS7RepositoryItem -Folder /Accounting # Store scheduling objects of the given folder and exclude draft versions to be used Set-JS7RepositoryItem -Folder /Accounting -Recursive -NoDraft
Commit and push Changes to remote Git Repository
The following OS and Git commands are used:
Example how to commit and push changes to a remote repository
# Find the repository sub-directory managed by JOC Cockpit cd /var/sos-berlin.com/js7/joc/jetty_base/resources/joc/repositories/rollout/Accounting # Commit and push changes to the remote Git repository git add . git commit -m "changes to accounting jobs for v12.3" git push
Steps to perform in the PROD Environment
Copy Changes from TEST to PROD Git Repository
There are a number of ways how to achieve this using Git commands:
Example how to pull changes to a local Git repository
# add the test repo as a remote repository git remote add oldrepo git@github.com:sos-berlin/js7-demo-inventory-rollout-test.git # get the test repo commits git remote update # examine the whole tree git log --all --oneline --graph --decorate # copy/cherry-pick the commits from the test repo into your local prod repo git cherry-pick <commit-hash> # check local prod repo git log # push changes to remote prod repo git push origin master # remove the reference to the test repo git remote remove oldrepo
Explanation:
- Line 11: The <commit-hash> identifies commits performed to push scheduling objects to the test repository.
Pull Changes to local Git Repository
The following OS and Git commands are used:
Example how to pull changes to a local Git repository
# Find the repository sub-directory managed by JOC Cockpit cd /var/sos-berlin.com/js7/joc/jetty_base/resources/joc/repositories/rollout/Accounting # Pull changes git pull
Update JOC Cockpit Inventory from local Git Repository, Release and Deploy to Controller
The following cmdlets are used:
Example how to store changes to a local Git repository
Import-Module JS7 Connect-JS7 -Url http://root:root@prod-host:4446 -Id Controller | Out-Null # Update the JOC Cockpit inventory from the local repository of the given folder Update-JS7FromRepositoryItem -Folder /Accounting # Release scheduling objects of the given folder Publish-JS7RelelasableItem -Folder /Accounting -Recursive # Deploy scheduling objects from the given folder to the Controller Publish-JS7DeployableItem -ControllerId Controller -Folder /Accounting -Recursive
Overview
Content Tools