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

Last change on this file since 37770 was 37770, checked in by anupama, 12 months ago

Some modifications to the snapshots envi task (lib.pl and task.pl) that were made when the uploading Mac Monterey's rk3 caveat and rk3 to www-internal finally worked. This is one of several related commits

File size: 6.6 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 # We use the upload-files-to-www-internal.sh script on linux systems now
221 # The following is still left in as it appears to work for the mac
222
223 #my $out = `set`;
224 #print "out = $out\n";
225 my $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
226 $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
227 $command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl\@puka.cs.waikato.ac.nz";
228 print "$command\n";
229 system("$command");
230
231 ## for now, upload a copy to the new machine, later to replace puka
232 #$command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
233 #$command .= ($^O eq "MSWin32" ? "plink" : "ssh");
234 #$command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl-gsorg\@wwwdev.greenstone.org";
235 ##print "$command\n";
236 #system("$command");
237
238 # also upload a copy to www-internal, which is the new wwwdev, and will replace puka.
239 $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
240 $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
241 $command .= " -T -i \"$ENV{'IDENTITY_FILE_ED25519'}\" nzdl-gsorg\@www-internal.greenstone.org";
242 print "$command\n";
243 system("$command");
244
245}
Note: See TracBrowser for help on using the repository browser.