- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8"/>
- <title>Initializer for Perforce Servers</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description" content="">
- <meta name="author" content="">
- <meta name="keywords" content="">
- <meta name="generator" content"JBake">
- <!-- Le styles -->
- <link href="css/bootstrap.min.css" rel="stylesheet">
- <link href="css/asciidoctor.css" rel="stylesheet">
- <link href="css/base.css" rel="stylesheet">
- <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
- <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
- <!--[if lt IE 9]>
- <script src="js/html5shiv.js"></script>
- <![endif]-->
- <!-- Fav and touch icons -->
- <!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
- <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
- <link rel="shortcut icon" href="favicon.ico">
- </head>
- <body>
- <div id="wrap">
- <nav class="navbar navbar-default" role="navigation">
- <div class="container-fluid">
- <div class="navbar-header">
- <ul class="nav navbar-nav">
- <li><a href="index.html">Initializer</a></li>
- <li><a href="overview.html">Overview</a></li>
- <li><a href="data.html">Data</a></li>
- <li><a href="../javadoc/index.html">Javadoc</a></li>
- </ul>
- </div>
- </div>
- </nav>
- <div class="container">
- <h1>Initializer Overview</h1><p>When developing applications on top of the Perforce server, you often want to start with a server with real data in a sensible configuration. When these apps need to run against <em>multiple versions</em> of Perforce, you're faced with figuring out how to set up each instance in the same way. This is the job of the initializer: take a bunch of files and metadata, and set up your Perforce instance. Now, you can, say, run the same system tests in different configurations of Perforce.</p><p>The initializer uses a directory of .json files that describe changes to be made, along with versions of data to "seed" into the system. See the <a href="data.html">Data</a> page for details of how to set this up. This directory is intended to be checked in with your system tests.</p><p>When you have the data set up, you'll then execute the initializer either using the command line, or, via gradle plugins. Both of these options are described below.</p><h2>Requirements</h2>
- <ol>
- <li><p>Java 8</p></li>
- <li><p>A running Perforce instance, this tool does not actually download the p4d executable, and generally assumes you've just set it up without a lot of configuration</p></li>
- </ol><h2>Notable Restrictions</h2><p>This system always sets security to level 2 at the moment.</p><h2>Executing using the Command Line</h2><p>The first part of executing via the command line is downloading the "complete" jar distribution.</p><p><a href="http://dl.bintray.com/tristanjuricek/generic/initializer/0.1.2/#initializer-complete.jar">Version 0.1.2</a></p><h3>Create A Configuration File</h3><p>From here, you'll need to create a configuration file. Here's an example:</p>
- <pre><code>options:
- dataRootDir: src/test/perforce
- triggersDir: build/perforce/work/triggers
- clientRootDir: build/perforce/clients
- </code></pre><p>This is a <a href="http://yaml.org">YAML</a> file, so save this content in a file like <code>config.yml</code>.</p><p>The main directory you need is <code>dataRootDir</code>. This is the <a href="data.html">data directory tree</a> contains all your JSON files and data to be seeded.</p><p>The <code>triggersDir</code> is used only if you're creating triggers; this is the directory we write out the trigger file for use by the Perforce instance.</p><p>The <code>clientRootDir</code> is used by all temporary clients as a working area.</p><p>Note that this assumes a Perforce instance is running on localhost:1666. If this is not the case, you'll need an additional section in the config file:</p>
- <pre><code>connectionSettings:
- hostname: localhost
- port: 1666
- </code></pre><h3>Execution</h3><p>Execute downloaded jar file with your configuration:</p>
- <pre><code>% java -jar initializer-complete.jar config.yml
- </code></pre><h2>Executing using Gradle</h2><p>First, set up your <code>buildscript</code> repository configuration for both the <code>initializer-gradle-plugin</code> and the <code>perforce-gradle-plugin</code>:</p>
- <pre><code>buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath("com.perforce.workshop.tjuricek:perforce-gradle-plugin:0.1.2")
- classpath("com.perforce.workshop.tjuricek:initializer-gradle-plugin:0.1.1")
- }
- }
- </code></pre><p>Then, just apply the plugins:</p>
- <pre><code>apply plugin: 'perforce'
- apply plugin: 'perforce-initializer'
- </code></pre><p>You'll only need to then run the <code>initPerforce</code> task once:</p>
- <pre><code>% ./gradlew initPerforce
- </code></pre><p>From there, you can start and stop the test server using <code>stopPerforce</code> and <code>startPerforce</code> tasks.</p><p>This assumes that by default you've stored all your data under the <code>src/test/perforce</code>. You can reconfigure this:</p>
- <pre><code>initializer {
- sources = project.file('another/directory')
- }
- </code></pre>
- </div>
- </div><!-- #wrap -->
- <!-- Le javascript
- ================================================== -->
- <!-- Placed at the end of the document so the pages load faster -->
- <script src="js/jquery-1.11.1.min.js"></script>
- <script src="js/bootstrap.min.js"></script>
- <script src="js/run_prettify.js"></script>
- </body>
- </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 9174 | tjuricek | Fix header | 11 years ago | |
#3 | 9173 | tjuricek | Added gradle instructions and removed hideous footer in site documentation. | 11 years ago | |
#2 | 9172 | tjuricek | 0.1.2 Added command line execution options and documentation to run the initializer locall...y. « | 11 years ago | |
#1 | 9165 | tjuricek | Some documentation framework and a fatjar style distribution for the initializer to run ou...tside of a gradle plugin. Upped the version to 0.1.2, but this may need some testing before it's really guaranteed to work in standalone mode « |
11 years ago |