Subversion Repositories SvarDOS

Rev

Rev 636 | Rev 839 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 636 Rev 837
1
 
1
 
2
 
2
 
3
                             BUILD SERVER SETUP
3
                             BUILD SERVER SETUP
4
 
4
 
5
 
5
 
6
 
6
 
7
=== INTRO =====================================================================
7
=== INTRO =====================================================================
8
 
8
 
9
The SvarDOS build system is entirely stored in the project's svn repository.
9
The SvarDOS build system is entirely stored in the project's svn repository.
10
This includes many components:
10
This includes many components:
11
 
11
 
12
 - SvarDOS-specific tools (install, pkg, pkgnet, localcfg, svarcom, help, ...)
12
 - SvarDOS-specific tools (install, pkg, pkgnet, localcfg, svarcom, help, ...)
13
 - SvarDOS packages
13
 - SvarDOS packages
14
 - SvarDOS website
14
 - SvarDOS website
15
 - build scripts and tools
15
 - build scripts and tools
16
 
16
 
17
This means that the project's svn tree contains everything that is required
17
This means that the project's svn tree contains everything that is required
18
to build SvarDOS.
18
to build SvarDOS.
19
 
19
 
20
 
20
 
21
=== SVN SERVICE ===============================================================
21
=== SVN SERVICE ===============================================================
22
 
22
 
23
The server must have a subversion service installed with the SvarDOS repository
23
The server must have a subversion service installed with the SvarDOS repository
24
imported.
24
imported.
25
 
25
 
26
The only specific configuration concerns a post-commit hook that should be set
26
The only specific configuration concerns a post-commit hook that creates a flag
27
up to create a /tmp/svados_repo_changed.flag file whenever a commit is made to
27
file at /tmp/svados_repo_changed.flag whenever a commit is made to the repo and
-
 
28
another flag in /tmp/svardos_rebuilt_please.flag if the commit might impact the
-
 
29
content of installation images. Here below is the necessary post-commit hook,
28
the repo. Such hook script can be as simple as this:
30
it should be placed in the hooks/ directory of the svn server and made
-
 
31
executable (chmod +x):
29
 
32
 
-
 
33
#!/bin/sh
-
 
34
 
-
 
35
SVNLOOK=/usr/bin/svnlook
-
 
36
REPOS="$1"
-
 
37
TXN="$2"
-
 
38
 
-
 
39
# first of all, make sure to set a flag that says "svn content changed" so a
-
 
40
# cron job can update its local copy later
30
  echo date > /tmp/svardos_repo_changed.flag
41
echo date > /tmp/svardos_repo_changed.flag
-
 
42
 
-
 
43
# check if any of the following locations have been updated during the commit:
-
 
44
#  - files
-
 
45
#  - packages/core/
-
 
46
#  - build.sh
-
 
47
#
-
 
48
# any change to one of these locations means that the content of the
-
 
49
# installation images may have been impacted, hence a rebuild may be necessary.
-
 
50
#
-
 
51
$SVNLOOK changed ./ | grep -e ' files' -e ' build.sh' -e ' packages/core/'
-
 
52
 
-
 
53
# if a location matched, then set a flag so a cron job rebuilds the images
-
 
54
# and send an information message back to the committer.
-
 
55
if [ $? -eq 0 ] ; then
-
 
56
  echo date > /tmp/svardos_rebuild_please.flag
-
 
57
  echo "NOTICE: a build-impacting location has been updated." >&2
-
 
58
  echo "        install images have been scheduled for a rebuilt." >&2
31
  exit 0
59
  exit 1
-
 
60
fi
32
 
61
 
33
 
62
 
34
=== SVN CLIENT ================================================================
63
=== SVN CLIENT ================================================================
35
 
64
 
36
The SvarDOS repository should be checked out in /srv/svardos/:
65
The SvarDOS repository should be checked out in /srv/svardos/:
37
 
66
 
38
$ svn co svn://127.0.0.1/svardos /srv/svardos
67
$ svn co svn://127.0.0.1/svardos /srv/svardos
39
 
68
 
40
 
69
 
41
=== WEB SERVICE ===============================================================
70
=== WEB SERVICE ===============================================================
42
 
71
 
43
A web server with PHP must be running (typically Apache). The PHP installation
72
A web server with PHP must be running (typically Apache). The PHP installation
44
needs the php-zip extension (required by buildidx), and the Apache web root
73
needs the php-zip extension (required by buildidx), and the Apache web root
45
should point at /srv/svardos/website.
74
should point at /srv/svardos/website.
46
 
75
 
47
 
76
 
48
=== CRON ACTIONS ==============================================================
77
=== CRON ACTIONS ==============================================================
49
 
78
 
50
A cron job should be configured to run frequently (like every minute) and
79
A cron job should be configured to run frequently (like every minute) and
51
execute the /srv/svardos/cron.sh script. This script is responsible for
80
execute the /srv/svardos/cron.sh script. This script is responsible for
52
checking out the local svardos repo whenever a new commit is being made, and
81
checking out the local svardos repo whenever a new commit is being made, and
53
rebuilds the index of the packages repository.
82
rebuilds the index of the packages repository.
54
 
83
 
55
 
84
 
56
=== MIRRORING THE PROJECT'S SVN ===============================================
85
=== MIRRORING THE PROJECT'S SVN ===============================================
57
 
86
 
58
Mirroring the project's svn tree (containing all build scripts, packages, etc)
87
Mirroring the project's svn tree (containing all build scripts, packages, etc)
59
is the best way to make a backup copy of the entire SvarDOS build system along
88
is the best way to make a backup copy of the entire SvarDOS build system along
60
with all its history. To achieve such mirror, one needs to create an empty
89
with all its history. To achieve such mirror, one needs to create an empty
61
svn repository and populate it using svnsync:
90
svn repository and populate it using svnsync:
62
 
91
 
63
$ svnadmin create /srv/svardos-mirror
92
$ svnadmin create /srv/svardos-mirror
64
$ svnsync init file:///srv/svardos-mirror svn://svn.svardos.org/svardos
93
$ svnsync init file:///srv/svardos-mirror svn://svn.svardos.org/svardos
65
$ svn up /srv/svardos-mirror
94
$ svn up /srv/svardos-mirror
66
 
95
 
67
The same procedure can be used to migrate the SvarDOS build system from one
96
The same procedure can be used to migrate the SvarDOS build system from one
68
server to another.
97
server to another.
69
 
98
 
70
NOTE: The target svn server must allow modification of revision properties.
99
NOTE: The target svn server must allow modification of revision properties.
71
      This is achieved with a svn "pre-revprop-change" hook of two lines:
100
      This is achieved with a svn "pre-revprop-change" hook of two lines:
72
        #!/bin/sh
101
        #!/bin/sh
73
        exit 0
102
        exit 0
74
 
103
 
75
 
104
 
76
======================================================================= EOF ===
105
======================================================================= EOF ===
77
 
106