Completed
Pull Request — master (#594)
by Mateusz
03:09
created

DemoDeploymentBackend::getJob()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
/**
4
 * This demo back-end doesn't actually do deployment.
5
 *
6
 * Whenever you deploy, it will track the deployment history in a text file assets/<environment>.deploy-history.txt
7
 *
8
 * It's useful for demonstrating how the system works, and how you can write deployment back-ends
9
 */
10
class DemoDeploymentBackend extends Object implements DeploymentBackend {
11
12
	protected $job;
13
14
	public function getJob() {
15
		return $this->job;
16
	}
17
18
	public function setJob($job) {
19
		$this->job = $job;
20
		return $this;
21
	}
22
23
	/**
24
	 * Create a deployment strategy.
25
	 *
26
	 * @param DNEnvironment $environment
27
	 * @param array $options
28
	 *
29
	 * @return DeploymentStrategy
30
	 */
31
	public function planDeploy(DNEnvironment $environment, $options = array()) {
32
		return new DeploymentStrategy($environment, $options);
33
	}
34
35
	/**
36
	 * Deploy the given build to the given environment
37
	 *
38
	 * @param DNEnvironment $environment
39
	 * @param DeploynautLogFile $log
40
	 * @param DNProject $project
41
	 * @param array $options
42
	 */
43
	public function deploy(
44
		DNEnvironment $environment,
45
		DeploynautLogFile $log,
46
		DNProject $project,
47
		$options
48
	) {
49
		$sha = $options['sha'];
50
51
		$this->extend('deployStart', $environment, $sha, $log, $project);
52
53
		$file = sprintf('%s/%s.deploy-history.txt', DEPLOYNAUT_LOG_PATH, $environment->getFullName());
54
		$CLI_file = escapeshellarg($file);
55
		$CLI_line = escapeshellarg(date('Y-m-d H:i:s') . " => $sha");
56
57
		// Put maintenance page up
58
		$this->enableMaintenance($environment, $log, $project);
59
60
		// Do the deployment
61
		$log->write("Demo deployment: echo $CLI_line >> $CLI_file");
62
		`echo $CLI_line >> $CLI_file`;
63
		$log->write("Arbitrary pause for 10s");
64
		sleep(10);
65
		$log->write("Well, that was a waste of time");
66
67
		// Once the deployment has run it's necessary to update the maintenance page status
68
		if(!empty($options['leaveMaintenancePage'])) {
69
			$this->enableMaintenance($environment, $log, $project);
70
		} else {
71
			// Remove maintenance page if we want it to
72
			$this->disableMaintenance($environment, $log, $project);
73
		}
74
75
		$this->extend('deployEnd', $environment, $sha, $log, $project);
76
	}
77
78
	/**
79
	 * @inheritdoc
80
	 */
81
	public function dataTransfer(DNDataTransfer $dataTransfer, DeploynautLogFile $log) {
82
		die('Not implemented');
83
	}
84
85
	public function enableMaintenance(DNEnvironment $environment, \DeploynautLogFile $log, DNProject $project) {
86
		$log->write(sprintf('Maintenance page enabled on "%s"', $environment->getFullName()));
87
	}
88
89
	public function disableMaintenance(DNEnvironment $environment, DeploynautLogFile $log, DNProject $project) {
90
		$log->write(sprintf('Maintenance page disabled on "%s"', $environment->getFullName()));
91
	}
92
93
	public function ping(\DNEnvironment $environment, DeploynautLogFile $log, DNProject $project) {
94
		$log->write(sprintf('Ping "%s"', $environment->getFullName()));
95
	}
96
97
}
98