-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
97 lines (63 loc) · 2.36 KB
/
README
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
Luthier: automated builds
=========================
Luthier will automate the fetching and building of something, deciding
when to keep the results and notify developers.
It has been used successfully to make simple CI/CD pipelines.
Motivations:
* Lightweight: usable for personal projects
* 'Unix-like' feel
* Don't force use of specific UIDs, GIDs etc.; leave up to the user
* 'Silent on success', low noise
* Good defaults
* Use with any version control, not just Git
* Choose your own build environment, eg. default environment, or docker
The 'build' step can mean anything you want; compile, test, deploy.
Installation
------------
The default is to install to /usr/local:
$ make install # as root
Setting up
----------
Create a 'builds' directory to use as scratch/workspace:
$ mkdir mywork
In that directory, a script defines a set of actions;
$ vi builds/luthier.sh
Take a look at the "example" directory for what these functions are
and why they exist.
Running
-------
This command will run the most recent automated build, and notify
where necessary:
$ luthier --verbose --builds mywork build
It's designed to be run from crontab or non-interactive environment,
by being silent except on fatal errors; build errors are emailed
separately. This is the command to put in a crontab:
$ luthier --builds /path/to/mywork build
Other useful commands are:
$ luthier freshen # force rebuild even if fingerprints match
$ luthier list # list current builds
$ luthier purge # purge old builds
The default path for builds is the current directory, so interactive
commands are easy to use; eg. if you want to see what's going on:
$ cd /path/to/mywork
$ luthier
Code
----
The code is Bash shell, developed on Linux with GNU utilities. In
general there is a leaning towards future portability and use of
Bash-specific features sparingly.
Example
-------
Viewing the list of builds:
/project/builds$ luthier
20210413.01 11:35 355592 complete => Tue 11:45 (joe)
20210415.00 10:45 492843 complete
20210415.01 11:15 35c9f3 fail
20210415.02 12:30 7f62e4 fail
20210415.03 16:17 a67293 complete => Thu 16:25 (mark)
20210415.04 16:31 977517 complete
20210415.05 17:10 0bfae7 complete
20210415.06 17:15 f83087 complete
20210415.07 17:40 300ba8 complete => Fri 09:18 (mark)
20210416.01 11:50 bd65e1 complete
Currently: complete at bd65e1