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}