source: other-projects/nightly-tasks/snapshot/trunk/lib.pl@ 30903

Last change on this file since 30903 was 29360, checked in by ak19, 10 years ago

release_dir should use release_folder_name

File size: 5.7 KB
Line 
1my $sep = $^O eq "MSWin32" ? "\\" : "/";
2
3sub get_date {
4 local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
5 local $day = $mday;
6 local $month = $mon+1;
7 local $year = $year+1900;
8 if ( length $month == 1 ) {
9 $month = join( "", "0", $month);
10 }
11 if ( length $day== 1 ) {
12 $day = join( "", "0", $day );
13 }
14 local $date = join( ".", $year,$month,$day );
15 return $date;
16}
17
18sub gen_snapshot_id {
19 if ( exists $_[0] && exists $_[1] ) {
20 return $_[0] . get_date() . $_[1];
21 }
22
23 if ( exists $_[0] ) {
24 return $_[0] . get_date();
25 }
26 return get_date();
27}
28
29sub create_release {
30
31 die "Must provide parameter to create_release\n" unless (exists $_[0]);
32
33 my $release_folder_name = $_[0];
34
35 my $release_version = $release_folder_name;
36 $release_version =~ s/^gs-?//;
37 $release_version =~ s/rc\d$//;
38 my $major_version = $release_version;
39 $major_version =~ s/^(3|2).*/$1/;
40 $release_version =~ s/^($major_version)\.?(\d*).*/$1.$2/;
41 my $rk = "rk".$major_version;
42
43 my $release_version_extra;
44 if ($release_folder_name =~ m/(rc\d)$/) {
45 $release_version_extra = $1;
46 }
47 if ($release_folder_name !~ m/^gs/) { # prefix gs
48 $release_folder_name = "gs".$release_folder_name;
49 }
50 my $release_dir = "$ENV{'DATA_DIR'}${sep}$release_folder_name";
51
52 print "major_version: $major_version\n";
53 print "version: $release_version\n";
54 print "versionextra: $release_version_extra\n";
55 print "release_folder_name: $release_folder_name\n";
56 print "release_dir: $release_dir\n";
57
58 print "about to clean up old snapshots (Ctrl-C to cancel)";
59 local $| = 1;
60 for ( my $i=0; $i<5; $i++ ) {
61 print ".";
62 sleep 1;
63 }
64 $| = 0;
65
66 print "cleaning up previous release snapshot $release_dir\n";
67
68 if(-d $release_dir) {
69 if ( $^O eq "MSWin32" ) {
70 system("rd /q /s \"$release_dir\"");
71 } else {
72 system("rm -rf \"$release_dir\"");
73 }
74 }
75
76 print "creating the release dir\n";
77 mkdir $release_dir or die "couldn't create release directory\n";
78
79 print "changing to the release dir\n";
80 chdir $release_dir;
81
82 #version property
83 print "setting up todays properties\n";
84 `echo version:$release_version> $rk-build.properties`;
85
86 if($release_version_extra) {
87 `echo version-extra:$release_version_extra>> $rk-build.properties`;
88 }
89
90 #processor propertylocal $| = 1;
91 if ( $^O eq "darwin" ) {
92 print "setting processor\n";
93 if ( `uname -p` eq "i386" ) {
94 `echo processor:intel>> $rk-build.properties`;
95 } elsif ( `uname -p` eq "powerpc" ) {
96 `echo processor:ppc>> $rk-build.properties`;
97 } else {
98 print "unable to determine processor type, using intel\n";
99 `echo processor:intel>> $rk-build.properties`;
100 }
101 } elsif ( $^O eq "linux" ) {
102 if(`uname -m` =~ m/64$/) {
103 print "Setting linux architecture to 64 bit";
104 `echo x64:true>> $rk-build.properties`;
105 }
106 }
107
108 #branch path property
109 if ( $ENV{'branch_path'} ) {
110 `echo branch.path:$ENV{'branch_path'}>> $rk-build.properties`;
111 }
112
113 #server.exe.location
114 if ( $major_version eq "2" && exists $ENV{'SERVER_EXE_LOCATION'} ) {
115 `echo server.exe.location:$ENV{'SERVER_EXE_LOCATION'}>> $rk-build.properties`;
116 }
117
118 print "creating the snapshot using $rk\n";
119 system( $rk );
120}
121
122sub create {
123
124 die "release_dir not set, cant create\n" unless $release_dir;
125
126 print "about to clean up old snapshots (Ctrl-C to cancel)";
127 local $| = 1;
128 for ( my $i=0; $i<5; $i++ ) {
129 print ".";
130 sleep 1;
131 }
132 $| = 0;
133
134 print "cleaning up previous snapshot\n";
135 local $release_parent = dirname($release_dir);
136 if ( $^O eq "MSWin32" ) {
137 system("rd /q /s \"$release_parent\"");
138 } else {
139 system("rm -rf \"$release_parent\"");
140 }
141
142 print "creating the release dir\n";
143 mkdir $release_parent or die "couldn't create release parent directory\n";
144 mkdir $release_dir or die "couldn't create release directory\n";
145
146 print "changing to the release dir\n";
147 chdir $release_dir;
148
149 #version property
150 print "setting up todays properties\n";
151 `echo version:$snapshot_id> $rk-build.properties`;
152
153 #processor propertylocal $| = 1;
154 if ( $^O eq "darwin" ) {
155 print "setting processor\n";
156 if ( `uname -p` eq "i386" ) {
157 `echo processor:intel>> $rk-build.properties`;
158 } elsif ( `uname -p` eq "powerpc" ) {
159 `echo processor:ppc>> $rk-build.properties`;
160 } else {
161 print "unable to determine processor type, using intel\n";
162 `echo processor:intel>> $rk-build.properties`;
163 }
164 }
165
166 #branch path property
167 if ( $ENV{'branch_path'} ) {
168 `echo branch.path:$ENV{'branch_path'}>> $rk-build.properties`;
169 }
170
171 #server.exe.location
172 if ( exists $ENV{'SERVER_EXE_LOCATION'} ) {
173 `echo server.exe.location:$ENV{'SERVER_EXE_LOCATION'}>> $rk-build.properties`;
174 }
175
176 print "creating the snapshot using $rk\n";
177 system( $rk );
178
179}
180
181sub upload {
182 print "uploading files\n";
183
184 my @munges = ();
185 if ( exists $ENV{'munges'} ) {
186 @munges = split(' ', $ENV{'munges'});
187 }
188
189 #copy products to a temporary folder, giving them their new names
190 if ( -d "$release_dir${sep}uploads" ) {
191 system( "rm -rf '$release_dir${sep}uploads'" );
192 }
193 mkdir "$release_dir${sep}uploads";
194
195 my @files;
196 if ( -d "$release_dir${sep}products" ) {
197 @files = <$release_dir${sep}products${sep}*>;
198 }
199 push( @files, "$release_dir${sep}$rk.out" );
200
201 for my $file ( @files ) {
202 if ( -e $file ) {
203 my $filename = basename($file);
204 #munge
205 for my $m ( @munges ) {
206 $doit="\$filename =~ $m"; eval "$doit";
207 }
208 #upload
209 print "Will upload '" . basename($file) . "' to '$filename'\n";
210 if( $^O =~ "linux|darwin" ) {
211 system("cp \"$file\" \"${release_dir}${sep}uploads${sep}$filename\"");
212 }
213 else {
214 system("copy \"$file\" \"${release_dir}${sep}uploads${sep}$filename\"");
215 }
216 }
217
218 }
219
220 my $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
221 $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
222 $command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl\@puka.cs.waikato.ac.nz";
223 #print "$command\n";
224 system("$command");
225}
Note: See TracBrowser for help on using the repository browser.