1{ lib, buildGoPackage, fetchFromGitLab, fetchurl, go-bindata }:
2
3let
4 version = "10.5.0";
5 # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
6 docker_x86_64 = fetchurl {
7 url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-x86_64.tar.xz";
8 sha256 = "1ywfki1599ggyq0g3r8f7pi1njvvjz41kjhssfax20ljm2c6q5v0";
9 };
10
11 docker_arm = fetchurl {
12 url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-arm.tar.xz";
13 sha256 = "0r71zvyg17926h2vpjr3q16l1yqcb8ky21ic5arc7jh82nzywywl";
14 };
15in
16buildGoPackage rec {
17 inherit version;
18 name = "gitlab-runner-${version}";
19 goPackagePath = "gitlab.com/gitlab-org/gitlab-runner";
20 commonPackagePath = "${goPackagePath}/common";
21 buildFlagsArray = ''
22 -ldflags=
23 -X ${commonPackagePath}.NAME=gitlab-runner
24 -X ${commonPackagePath}.VERSION=${version}
25 -X ${commonPackagePath}.REVISION=v${version}
26 '';
27
28 src = fetchFromGitLab {
29 owner = "gitlab-org";
30 repo = "gitlab-runner";
31 rev = "v${version}";
32 sha256 = "13c9jzqj92xf2dzk77xpsfc4dwffvjfp8bqy685shzz1lrrfhfvq";
33 };
34
35 patches = [ ./fix-shell-path.patch ];
36
37 buildInputs = [ go-bindata ];
38
39 preBuild = ''
40 (
41 # go-bindata names the assets after the filename thus we create a symlink with the name we want
42 cd go/src/${goPackagePath}
43 ln -sf ${docker_x86_64} prebuilt-x86_64.tar.xz
44 ln -sf ${docker_arm} prebuilt-arm.tar.xz
45 go-bindata \
46 -pkg docker \
47 -nocompress \
48 -nomemcopy \
49 -o executors/docker/bindata.go \
50 prebuilt-x86_64.tar.xz \
51 prebuilt-arm.tar.xz
52 )
53 '';
54
55 postInstall = ''
56 install -d $out/bin
57 '';
58
59 meta = with lib; {
60 description = "GitLab Runner the continuous integration executor of GitLab";
61 license = licenses.mit;
62 homepage = https://about.gitlab.com/gitlab-ci/;
63 platforms = platforms.unix ++ platforms.darwin;
64 maintainers = with maintainers; [ bachp zimbatm ];
65 };
66}