blob: 073aa3e6da67f2180586b799003f3b09e17870fa (
plain)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/bin/bash
set +e # Do not affect the build result if some part of archiving fails.
ARCHIVES_DIR="$JENKINS_HOSTNAME/$JOB_NAME/$BUILD_NUMBER"
[ "$LOGS_SERVER" ] || LOGS_SERVER="https://logs.fd.io"
[ "$LOGS_REPO_URL" ] || LOGS_REPO_URL="https://nexus.fd.io/service/local/repositories/logs"
echo "Build logs: <a href=\"$LOGS_SERVER/$SILO/$ARCHIVES_DIR\">$LOGS_SERVER/$SILO/$ARCHIVES_DIR</a>"
mkdir .archives
cd .archives/
cat > deploy-archives.xml <<EOF
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>logs</groupId>
<artifactId>logs</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>maven-upload-plugin</artifactId>
<version>0.0.1</version>
<executions>
<execution>
<id>publish-site</id>
<phase>deploy</phase>
<goals>
<goal>upload-file</goal>
</goals>
<configuration>
<serverId>fdioproject-log-archives</serverId>
<repositoryUrl>$LOGS_REPO_URL/content-compressed</repositoryUrl>
<file>archives.zip</file>
<repositoryPath>$SILO</repositoryPath>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
EOF
mkdir -p $ARCHIVES_DIR
mkdir -p $WORKSPACE/archives
if [ ! -z "${{ARCHIVE_ARTIFACTS}}" ]; then
pushd $WORKSPACE
shopt -s globstar # Enable globstar to copy archives
archive_artifacts=$(echo ${{ARCHIVE_ARTIFACTS}})
for f in $archive_artifacts; do
echo "Archiving $f"
mkdir -p $WORKSPACE/archives/$(dirname $f)
mv $f $WORKSPACE/archives/$f
done
shopt -u globstar # Disable globstar once archives are copied
popd
fi
# Ignore logging if archives doesn't exist
mv $WORKSPACE/archives/ $ARCHIVES_DIR > /dev/null 2>&1
touch $ARCHIVES_DIR/_build-details.txt
echo "build-url: ${{BUILD_URL}}" >> $ARCHIVES_DIR/_build-details.txt
env > $ARCHIVES_DIR/_build-enviroment-variables.txt
# capture system info
touch $ARCHIVES_DIR/_sys-info.txt
{{
echo -e "uname -a:\n `uname -a` \n"
echo -e "df -h:\n `df -h` \n"
echo -e "free -m:\n `free -m` \n"
echo -e "nproc:\n `nproc` \n"
echo -e "lscpu:\n `lscpu` \n"
echo -e "ip addr:\n `/sbin/ip addr` \n"
}} 2>&1 | tee -a $ARCHIVES_DIR/_sys-info.txt
# Magic string used to trim console logs at the appropriate level during wget
echo "-----END_OF_BUILD-----"
wget -q --timeout=60 -O $ARCHIVES_DIR/console.log ${{BUILD_URL}}consoleText
wget -q --timeout=60 -O $ARCHIVES_DIR/console-timestamp.log ${{BUILD_URL}}/timestamps?time=HH:mm:ss\&appendLog
sed -i '/^-----END_OF_BUILD-----$/,$d' $ARCHIVES_DIR/console.log
sed -i '/^.*-----END_OF_BUILD-----$/,$d' $ARCHIVES_DIR/console-timestamp.log
gzip $ARCHIVES_DIR/*.txt $ARCHIVES_DIR/*.log
# find and gzip any 'text' files
find $ARCHIVES_DIR -type f -print0 \
| xargs -0r file \
| egrep -e ':.*text.*' \
| cut -d: -f1 \
| xargs -d'\n' -r gzip
zip -r archives.zip $JENKINS_HOSTNAME/
du -sh archives.zip
|