Skip to main content

Push scripts from a Git repo to a JSS. Includes templating and tagging.

Project description

Version : v1.0.0

Author: Geoff Lee


Question: How do you ensure that all changes to Scripts and ComputerExtensionAttributes in your JAMF JSS are logged, reversible, and match what you have in source control?

Answer: Make it zero-effort.

Using Git2jss, after making changes to JSS Scripts or CEAs in your dev/test environment and pushing them to a Git repository, you can export a tagged copy to your JSS, complete with the Git changelog in the ‘Notes’ field. Reverting a change is as easy as exporting the previous tagged version.

Templating of some important values is also supported, so your scripts automatically contain details of the last change, and where they can be found in source control.

Passwords are stored in the system keychain by default.

Installation / Usage

NB: the python-jss and keyring modules are required. If manually installing, you’ll need to make sure they are present. Installing via pip should take care of this for you.

Install via pip

If you’re installing into a virtualenv

$ pip install git2jss

should be all you need to do.

If installing onto OS X 10.13 and not using a virtualenv, you’ll need to use sudo, and install a missing dependency:

$ sudo pip install git2jss

$ sudo pip install cryptography

Or manually

Clone the repo and run the setup script

$ git clone

$ python install



You can use it on the commandine like this:

# Create a new tag, v1.0.1, and export to a script object of the same name on the JSS

$ git2jss --file --create --tag v1.0.1

# Export the file to a Script object on the JSS called
# using the existing tag v0.0.9

$ git2jss --file --name --tag v0.0.9

# Export the file to a ComputerExtensionAttribute object on the JSS called
# FirewallCheck, using the existing tag v0.0.9

$ git2jss --mode ComputerExtensionAttribute --file --name check-firewall

# Export each script in the current folder that has a script object on the server
# with a matching name, and exists at tag v1.0.2

$ git2jss --all --tag v1.0.2

# Show information about the currently configured JSS (or enter details if none configured)

$ git2jss --jss-info


The following variables, if embedded into your script, will be replaced with the indicated values when being transferred to the JSS

Variable Value
@@VERSION The name of the git tag that you have specified (eg v1.0.1)
@@ORIGIN Assuming you have a git remote called ‘origin’, the URL thereof (eg
@@PATH The name of the file in the git repository identified by @@ORIGIN``
@@DATE The date of the last change of the file in Git
@@USER The username used by git2jss to authenticate to the JSS at the time the script was exported
@@LOG The entire Git log for this script, formatted thus: '%h - %cD %ce: %n %s%n'

@@LOG is used to construct the ‘Notes’ field in the JSS, overwriting anything that was present previously.


Issues and pull requests are very welcome!

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
git2jss-1.0.0-py2.py3-none-any.whl (17.4 kB) Copy SHA256 hash SHA256 Wheel py2.py3
git2jss-1.0.0.tar.gz (14.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page