summary refs log tree commit diff
path: root/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/continuous-integration/gitlab-runner/default.nix')
-rw-r--r--pkgs/development/tools/continuous-integration/gitlab-runner/default.nix59
1 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
new file mode 100644
index 00000000000..6dc0a7d30ee
--- /dev/null
+++ b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
@@ -0,0 +1,59 @@
+{ lib, buildGoModule, fetchFromGitLab, fetchurl }:
+
+let
+  version = "14.8.2";
+in
+buildGoModule rec {
+  inherit version;
+  pname = "gitlab-runner";
+
+  commonPackagePath = "gitlab.com/gitlab-org/gitlab-runner/common";
+  ldflags = [
+    "-X ${commonPackagePath}.NAME=gitlab-runner"
+    "-X ${commonPackagePath}.VERSION=${version}"
+    "-X ${commonPackagePath}.REVISION=v${version}"
+  ];
+
+  vendorSha256 = "1aa04hbavr0bclddp5adjwwj21sp46gbhjydxc3w7vs1siw0ivq2";
+
+  src = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitlab-runner";
+    rev = "v${version}";
+    sha256 = "1zwr09lrrc3xx3sp00vs30ks0n77d7v0xkz0mz9jy2qdls9nfmrv";
+  };
+
+  patches = [
+    ./fix-shell-path.patch
+  ];
+
+  prePatch = ''
+    # Remove some tests that can't work during a nix build
+
+    # Requires to run in a git repo
+    sed -i "s/func TestCacheArchiverAddingUntrackedFiles/func OFF_TestCacheArchiverAddingUntrackedFiles/" commands/helpers/file_archiver_test.go
+    sed -i "s/func TestCacheArchiverAddingUntrackedUnicodeFiles/func OFF_TestCacheArchiverAddingUntrackedUnicodeFiles/" commands/helpers/file_archiver_test.go
+
+    # No writable developer environment
+    rm common/build_test.go
+    rm executors/custom/custom_test.go
+
+    # No docker during build
+    rm executors/docker/terminal_test.go
+    rm executors/docker/docker_test.go
+    rm helpers/docker/auth/auth_test.go
+  '';
+
+  preCheck = ''
+    # Make the tests pass outside of GitLab CI
+    export CI=0
+  '';
+
+  meta = with lib; {
+    description = "GitLab Runner the continuous integration executor of GitLab";
+    license = licenses.mit;
+    homepage = "https://about.gitlab.com/gitlab-ci/";
+    platforms = platforms.unix ++ platforms.darwin;
+    maintainers = with maintainers; [ bachp zimbatm globin ];
+  };
+}