DRAFT
- FNSDKEXT-16Getting issue details... STATUS
Unity will utilize FN’s Azure DevOps solution to manage the building and packaging of both the FN SDK and the Unity example project. The following defines how Unity will make use of Azure’s built in build and pipeline tools to conduct proper CI/CD methods.
Azure DevOps Git Repo Maintenance
Two repos will be created in support of the FN SDK:
A repo for the the FN SDK library as its own standalone project will be created
A repo for the Unity project utilizing the FN SDK library will be created
.YAML File
A .yaml file will be included at the root of each git repo to enable the automation of builds and packaging of artifacts
Stages
Each yaml file will contain a single stage to define the various tasks to run according to a pre-defined schedule
Jobs
FN SDK Library
A single job will be created to support testing, static code analysis, building and publishing of artifacts
Unity Project
A single job will be created to support testing, static code analysis, building and publishing of artifacts
Tasks
FN SDK Library
The following tasks will be defined in the yaml file:
A static code analysis task will be written to automate detection of any vulnerabilities or poorly written code
An automated testing task will be written to run any unit tests written for the SDK
A build task will be written to produce a dll artifact
A publish task will be written to copy the resulting dll artifact of the build task to a specified location
Unity Project
The following tasks will be defined in the yaml file:
A static code analysis task will be written to automate detection of any vulnerabilities or poorly written code
An automated testing task will be written to run any unit tests written for the Unity project
A batch script task will be written to build the example Unity scene
A container using a Unity build license will be utilized throughout the course of the project to allow for remotely building the Unity project.
NOTE: This container will only be valid during the course of development. FN will need to work with Unity to obtain their own Unity build license if they wish to continue building the Unity project post project delivery
A publish task will be written to copy the resulting exe of the example Unity scene utilizing the FN SDK to a specified location
Schedules
General
A build will be generated on the development branch on a nightly basis to ensure integrity of core, working branch
A build will be generated on the master branch on a weekly basis to ensure the integrity of the delivery branch and support the production of artifacts for delivery at the end of each sprint
Batch Files
A batch file will be written to build the example Unity scene utilizing the FN SDK
Artifacts
SDK Artifacts
The following artifacts will be generated upon a successful build of the FN SDK
A dll of any libraries built by Unity in support of the FN SDK
Dlls of any dependencies of any libraries built by Unity in support of the FN SDK
Unity Artifacts
The following artifacts will be generated upon a successful build of the Unity project
An exe of the Example scene utilizing the FN SDK for the Windows 10 OS platform
Any required dlls will also be generated as artifacts for the Unity project
An exe of the Example scene utilizing the FN SDK for the Android 10 OS platform
Any required dlls will also be generated as artifacts for the Unity project
Naming Conventions
Artifacts will contain the following information within their name:
A unique identifier to assist in differentiating builds from each other
An indication of the branch the artifact was generated from
An indication of the date the artifact was generated
Retention Policy
Artifacts from builds in the development branch will be retained for a minimum of 2 weeks before being deleted
Artifacts from the main branch will be retained for the length of the project
Internal Repo Maintenance
An internal, Unity facing git vcs repo will be created to mirror the Azure repo
Unity developers will connect their local git repo to both the Azure DevOps repo and the internal git vcs repo
Any changes made to the root development branch will be reflected both in Azure and the internal git vcs repo
Any changes made to the main branch will be reflected both in Azure and the internal git vcs repo
Questions and Concerns
How feasible it would be for FN or Unity to hook up a device to a test node for running automated tests
Should we worry about VS integrating with Azure for pipelines and test plans
Currently using VS 2019 Pro, Enterprise license is needed for pipelines and tests
Does FN want to use App Center for delivery