This repository contains a series of steps and variables for use by Wooga's WDKs.
At the root of each WDK there's a Jenkins configuration file, Jenkinsfile
which is used by our Jenkins CI in order to make a build pipeline for the repository:
#!groovy
// Imports the library from the github repository
@Library('github.com/wooga/[email protected]') _
...
These build pipelines can be triggered manually or can be configured to be triggered automatically by specific actions (commits, pull requests, etc):
Some build pipelines provide parameters which can be set before starting the build from the interface:
Invokes the gradle wrapper for the current platform (Windows/Unix);
- command:
string
- returnStatus:
boolean
= false - returnStdout:
boolean
= false
gradleWrapper "testEditMode -P unity.testBuildTargets=android"
Constructs a pipeline that will build an Unity WDK for a set of given Unity versions, running any available tests. If the build is successful it will then generate a paket
package and publish it to our artifactory
, where it then can be used by other WDKs or game projects.
- RELEASE_TYPE: The type of release (snapshot by default)
- RELEASE_SCOPE: The version for the build (relevant for rc/final)
- LOG_LEVEL: If assigned, the log level that will be used by gradle
- REFRESH_DEPENDENCIES: If true, will refresh the upstream dependencies before starting the build (rather than using the cache)
- unityVersions:
BuildVersion[]
- labels :
string[]
- testLabels :
string[]
- testEnvironment:
string[]
- logLevel:
string
(quiet, warn, info, debug
) = info - refreshDependencies:
boolean
= false
BuildVersion
Each build version can be defined by just the string of the version or by a map with the following properties:
- version: string
- optional: boolean
- apiCompatibilityLevel:
net_standard_2_0, net_4_6
// Build and unit the wdk package with custom step
def args =
[
logLevel: info,
unityVersions:
[
'2019.4.19f1',
'2018.4.23f1',
[version : '2020.2.4f1', optional : true, apiCompatibilityLevel : 'net_standard_2_0'],
[version : '2020.2.4f1', optional : true, apiCompatibilityLevel : 'net_4_6']
]
]
buildWDKAutoSwitch args
Builds a Gradle plugin, either releasing it to the gradle plugin directory or building it locally.
- platforms: string[]
- testEnvironment: string[]
- testLabels: string[]
- labels: string[]
- dockerArgs: [:]
def testEnvironment = [ 'osx':
[
"ATLAS_GITHUB_INTEGRATION_USER=${githubUser}",
"ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword}"
],
'windows':
[
"ATLAS_GITHUB_INTEGRATION_USER=${githubUser2}",
"ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword2}"
],
'linux':
[
"ATLAS_GITHUB_INTEGRATION_USER=${githubUser2}",
"ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword2}"
]
]
buildGradlePlugin plaforms: ['osx','windows','linux'], testEnvironment: testEnvironment
Whenever work is done to update these pipelines, the changes are propagated like so:
- The changes are added as a feature PR based on
master
. They must be merged intomaster
. - A release must be made on the Jenkins CI for the job corresponding to this repository. As consequence, a new branch is made named after the newer version.
- Any jobs that use the pipeline must do a run before the newer changes are loaded. The simplest is to trigger a build with default parameters. Any builds after that should reflect the changes that the newer pipeline introduces.
Copyright (C) Wooga GmbH 2018-2022 - All Rights Reserved Unauthorized copying of this work, via any medium is strictly prohibited Proprietary and confidential