-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.xml
60 lines (52 loc) · 2.72 KB
/
build.xml
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
<?xml version="1.0" encoding="UTF-8"?>
<project name="Phing Sync Script" basedir="." default="help">
<target name="help" description="Displays the available options">
<echo msg="$ phing sync - Sync files to an environment" />
<echo msg="$ phing sync:dryrun - List files that will be synced to an environment" />
<echo msg="$ phing ssh - SSH to an environment" />
<echo msg="$ phing ssh-copy-id - Copy an SSH key to an environment" />
</target>
<!-- Load properties for environment -->
<target name="get-env" description="Get the environment for an action">
<input propertyname="environment" validargs="staging,pre,prod" defaultvalue="staging">Enter environment name:</input>
<property file="${environment}.properties" />
</target>
<target name="sync" description="Sync files to an environment" depends="get-env">
<phingcall target="sync-execute-task">
<property name="dryrun" value="false" />
</phingcall>
</target>
<target name="sync:dryrun" description="List files that will be synced to an environment" depends="get-env">
<phingcall target="sync-execute-task">
<property name="dryrun" value="true" />
</phingcall>
</target>
<target name="sync-execute-task">
<taskdef name="sync" classname="phing.tasks.ext.FileSyncTask" />
<sync
sourcedir="${sync.source.dir}"
destinationdir="${sync.remote.user}@${sync.remote.host}:${sync.destination.dir}"
backupdir="${sync.destination.backup.dir}"
excludefile="${sync.exclude.file}"
verbose="true"
options="-e 'ssh -p ${sync.remote.port}' -rKzl"
dryrun="${dryrun}"
itemizechanges="true"
checksum="true"
/>
<!-- options: -->
<!-- -e, -rsh, specify the remote shell to use -->
<!-- -r, -recursive, recurse into directories -->
<!-- -K, -keep-dirlinks, treat symlinked dir on receiver as dir -->
<!-- -z, -compress, compress file data during the transfer -->
<!-- -l, -links, copy symlinks as symlinks -->
<!-- -t, -times, preserve modification times -->
<!-- -O, -omit-dir-times, omit directories from -times -->
</target>
<target name="ssh" description="SSH to an environment" depends="get-env">
<exec command="ssh ${sync.remote.user}@${sync.remote.host} -p${sync.remote.port}" passthru="true" />
</target>
<target name="ssh-copy-id" description="Copy an SSH key to an environment" depends="get-env">
<exec command="ssh-copy-id -p${sync.remote.port} ${sync.remote.user}@${sync.remote.host}" passthru="true" />
</target>
</project>