Git Repository

Repository layout and content compilation

Organize the Git source repository as follows:

my-repository/
├── Fixlets/
│   ├── Analyses/
│   │   └── 1300- Some Analysis.bes
│   ├── Fixlets/
│   │   ├── FixletType1/
│   │   │   ├── digest.xml
│   │   │   └── 2110- Some Fixlet.bes
│   │   └── FixletType2/
│   │       └── 2210- Some Fixlet.bes
│   └── Tasks/
│       └── 3300- Some Task.bes
├── NonClientFiles/
└── OtherFiles/

Fixlets contains BigFix .bes files for Fixlets, Tasks, and Analyses. Each first-level directory beneath Fixlets is compiled into an .fxf file with the same name. The next directory level groups content into Digests within that file. For example, Fixlets/Fixlets becomes Fixlets.fxf, with FixletType1 and FixletType2 as Digests. A digest.xml applies to the directory where it is located.

Start content filenames with a numeric ID and a hyphen (space may be present or not), for example 2110- Some Fixlet.bes. The numeric prefix becomes the displayed content ID. Files without a numeric ID or with duplicate IDs are not gathered and generate warnings in the BigFix Server log. Out-of-range IDs also generate export warnings and are not preassigned.

NonClientFiles holds server-side assets, scripts, and metadata; OtherFiles holds additional files gathered by the client. Both directories are optional.

Optional repository configuration files

The following XML files are optional. Place siteConfig.xml and site.xml at the repository root. Place digest.xml at the top of the directory whose content it configures. It can appear at Fixlets/ or within a content directory.

  • siteConfig.xml overrides the default directory names by using BesFileDir, NonClientFilesDir, or OtherFilesDir. Each element is optional and can occur once.
  • site.xml defines optional site-wide Relevance applied to Fixlets, Tasks, Analyses, and computer groups in the site. Use CDATA when the expression contains characters that must otherwise be escaped in XML.
  • digest.xml sets optional directory-specific Relevance, DigestRelevanceEvaluationPeriod, and ChildEvaluationPeriod. Supported period values include PT0S, PT1M, PT5M, PT1H, P1D, P7D, and P30D.

Configuration file examples and schemas

This siteConfig.xml example changes only the Fixlet source directory:

<?xml version="1.0" encoding="UTF-8"?>
<SiteConfig>
  <BesFileDir>Fixlets/TeamA</BesFileDir>
</SiteConfig>

This site.xml example applies global relevance:

<?xml version="1.0" encoding="UTF-8"?>
<Site>
    <Relevance>
        <![CDATA[name of operating system starts with "Win"]]>
    </Relevance>
</Site>

This digest.xml example sets relevance and evaluation periods for its content directory:

<?xml version="1.0" encoding="UTF-8"?>
<Digest>
    <Relevance><![CDATA[version of client >= "7.2"]]></Relevance>
  <DigestRelevanceEvaluationPeriod>PT5M</DigestRelevanceEvaluationPeriod>
  <ChildEvaluationPeriod>PT5M</ChildEvaluationPeriod>
</Digest>

The following XSD schemas describe the supported structure of each configuration file.

siteConfig.xml schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="SiteConfig">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="BesFileDir" type="xs:string" minOccurs="0" maxOccurs="1" />
                <xs:element name="NonClientFilesDir" type="xs:string" minOccurs="0" maxOccurs="1" />
                <xs:element name="OtherFilesDir" type="xs:string" minOccurs="0" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

site.xml schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Site">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Relevance" type="xs:string" minOccurs="0" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

digest.xml schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="EvaluationPeriodType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="PT0S" />
            <xs:enumeration value="PT1M" />
            <xs:enumeration value="PT5M" />
            <xs:enumeration value="PT15M" />
            <xs:enumeration value="PT30M" />
            <xs:enumeration value="PT1H" />
            <xs:enumeration value="PT2H" />
            <xs:enumeration value="PT4H" />
            <xs:enumeration value="PT6H" />
            <xs:enumeration value="PT8H" />
            <xs:enumeration value="PT12H" />
            <xs:enumeration value="P1D" />
            <xs:enumeration value="P2D" />
            <xs:enumeration value="P3D" />
            <xs:enumeration value="P5D" />
            <xs:enumeration value="P7D" />
            <xs:enumeration value="P15D" />
            <xs:enumeration value="P28D" />
            <xs:enumeration value="P30D" />
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="Digest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Relevance" type="xs:string" minOccurs="0" maxOccurs="1" />
                <xs:element name="DigestRelevanceEvaluationPeriod" type="EvaluationPeriodType"
                                        minOccurs="0" maxOccurs="1" />
                <xs:element name="ChildEvaluationPeriod" type="EvaluationPeriodType"
                                        minOccurs="0" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Git repository example

The following link is an example of a Repository Site:

Repository Site Example

This repository is intended to be an example, illustrating a possible directory structure layout for a BigFix Repository Site, with example Fixlets, and demonstrating use of the optional repository configuration files (siteConfig.xml, site.xml, and digest.xml).