-
Notifications
You must be signed in to change notification settings - Fork 0
/
git_deploy.php
91 lines (83 loc) · 2.08 KB
/
git_deploy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
/**
* GIT DEPLOYMENT SCRIPT
* Based on https://gist.github.com/1809044
*/
$JSONpayload = get_magic_quotes_gpc() ? stripslashes( $_REQUEST['payload'] ) : $_REQUEST['payload'];
$payload = json_decode( $JSONpayload );
if ($payload->ref === 'refs/heads/master') {
$tmp = shell_exec( 'git pull' );
file_put_contents('git_deploy.txt', "Pull triggered by " . $payload->after . ": " . $payload->commits[0]->message . "\n Response: " . htmlentities( trim( $tmp ) ) . "\n\n", FILE_APPEND);
} else {
// The commands
$gitURL = trim( shell_exec( 'git config --get remote.origin.url' ) );
$currentBranch = trim( shell_exec( 'git rev-parse --abbrev-ref HEAD') );
$commands = array(
//'echo $PWD',
//'whoami',
//'git pull',
//'git status',
"git rev-parse HEAD",
"git ls-remote $gitURL $currentBranch",
//'git submodule sync',
//'git submodule update',
//'git submodule status'
);
// Run the commands for output
$output = "\n";
foreach($commands as $command){
$tmp = shell_exec($command);
$output .= '<span class="sign">$</span> <span class="command">' . $command . "\n" . '</span>';
$output .= htmlentities( trim ( $tmp ) ) . "\n\n";
}
?>
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<title>GIT Deployment Status</title>
<meta name="robots" content="noindex, nofollow">
<style>
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
}
div {
width: 50%;
margin: 0 auto;
padding: 0 20px;
position: relative;
top: 4em;
border-radius: 8px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
h1 {
font-size: 32px;
}
pre {
margin: -10px 0;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
.sign {
color: #5BE01D;
}
.command {
color: #729FCF;
}
</style>
</head>
<body>
<div>
<h1><?php echo basename( getcwd() ); ?></h1>
<pre>
<?php echo $output; ?>
</pre>
</div>
</body>
</html>
<?php }