1{ lib, buildGoPackage, fetchFromGitLab, fetchurl, go-bindata }: 2 3let 4 version = "9.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-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-x86_64.tar.xz"; 8 sha256 = "05vph5pqw3wlrh76bfgrmhgzsjsf7llzscr9vr7nk3b2pcigawdp"; 9 }; 10 11 docker_arm = fetchurl { 12 url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-arm.tar.xz"; 13 sha256 = "0ilp793kbw0n6nhbcdqc1cb05h2ir27c1rkijyxaqvpczrm11lqj"; 14 }; 15in 16buildGoPackage rec { 17 inherit version; 18 name = "gitlab-runner-${version}"; 19 goPackagePath = "gitlab.com/gitlab-org/gitlab-ci-multi-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-ci-multi-runner"; 31 rev = "v${version}"; 32 sha256 = "0zpyvaflq62qazjw60xnzfw52fqbcmjaqig9y8i6wjzdzlm803f0"; 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 # The recommended name is gitlab-runner so we create a symlink with that name 58 ln -sf gitlab-ci-multi-runner $bin/bin/gitlab-runner 59 ''; 60 61 meta = with lib; { 62 description = "GitLab Runner the continuous integration executor of GitLab"; 63 license = licenses.mit; 64 homepage = https://about.gitlab.com/gitlab-ci/; 65 platforms = platforms.unix ++ platforms.darwin; 66 maintainers = with maintainers; [ bachp zimbatm ]; 67 }; 68}