From 94109d5d04ffa62a4ac1e2b0e0a86129a18da275 Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Mon, 23 Oct 2023 11:24:34 +0200
Subject: [PATCH] fix: ci pipeline

---
 .gitlab-ci.yml |  11 +--
 Taskfile.yml   | 221 ++++++++++++--------------------------------
 devenv.nix     | 245 ++++++++++++++++++++++++-------------------------
 3 files changed, 185 insertions(+), 292 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e812324..68982ca 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,9 +7,8 @@
 
 image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
 
-services:
-  - docker:dind
-    
+#    services:
+#      - docker:dind
 
 variables:
   # The repo name as used in
@@ -18,7 +17,7 @@ variables:
   NIXPKGS_ALLOW_UNFREE: "1"
   NIXPKGS_ALLOW_INSECURE: "1"
   DOCKER_DRIVER: overlay2
-  DOCKER_HOST: tcp://dind:2375/
+  DOCKER_HOST: unix:///var/run/docker.sock
   GIT_DEPTH: 10
 
 stages:
@@ -26,13 +25,13 @@ stages:
   - deploy 
 
 before_script:
+  - unset DOCKER_TLS_VERIFY
   - nix shell nixpkgs#coreutils -c mkdir -p /certs/client/
   - nix shell nixpkgs#coreutils -c ln -fs /etc/ssl/certs/ca-bundle.crt /certs/client/ca.pem
   - echo > .env-gitlab-ci
   - variables=("HOME=$HOME" "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" "CI_REPOSITORY_URL=$CI_REPOSITORY_URL" "GITLAB_TOKEN=$GITLAB_TOKEN" "CI_JOB_TOKEN=$CI_JOB_TOKEN" "GITLAB_USER_EMAIL=$GITLAB_USER_EMAIL" "GITLAB_USER_NAME=\"$GITLAB_USER_NAME\"" "CI_REGISTRY_USER=$CI_REGISTRY_USER" "CI_PROJECT_ID=$CI_PROJECT_ID" "CI_PROJECT_DIR=$CI_PROJECT_DIR" "CI_API_V4_URL=$CI_API_V4_URL" "CI_PROJECT_NAME=$CI_PROJECT_NAME" "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA"); for var in "${variables[@]}"; do echo "$var" >> .env-gitlab-ci; done
   - cat .env-gitlab-ci
-  - env
-  - nix shell nixpkgs#coreutils -c sleep 999999
+  - env 
   - nix shell nixpkgs#docker-client -c docker info
 
 after_script:
diff --git a/Taskfile.yml b/Taskfile.yml
index ee6d29a..b7313f4 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -1,164 +1,59 @@
 
-    # THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
-    # DO NOT EDIT THIS FILE MANUALLY
-    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix 
-    # AND OPEN A SHELL WITH THE COMMAND devenv shell
-    #
-    # Information about the task runner can be found here:
-    # https://taskfile.dev
-
-    version: '3'
-
-    tasks:
-      default:
-        cmds:
-          - task --list
-        silent: true
-        
-      test:
-        desc: Execute unit tests in Go.
-        cmds:
-          - echo "Execute unit tests in Go."
-          - go test -cover -v ./...
-          - go test -bench -v ./...
-          - go test -race -v ./...
-
-      test-fuzz:
-        desc: Conduct fuzzing tests.#
-        cmds:  
-          - echo "Conduct fuzzing tests."
-          - go test -v -fuzztime=30s -fuzz=Fuzz ./...
-
-      add-licenses:
-        desc: Attach license headers to Go files.
-        cmds:
-          - echo "Attach license headers to Go files."
-          - go install github.com/google/addlicense@latest
-          - addlicense -c "schukai GmbH" -s -l "AGPL-3.0" ./*.go
-        silent: true
-        
-      check-licenses:
-        desc: Check license headers of Go files.
-        silent: true
-        cmds:
-          - go-licenses save "$(get-go-default-packages)"  --ignore "gitlab.schukai.com"  --force --save_path ${DEVENV_ROOT}/licenses/
-
-      check:
-        desc: Confirm repository status.
-        cmds:
-          - git diff-index --quiet HEAD || (echo "There are uncommitted changes after running make. Please commit or stash them before running make."; exit 1)
-        silent: true
-
-      commit:
-        desc: Commit changes to the repository.
-        aliases:
-          - c
-          - ci
-          - git-commit
-        cmds:
-          - do-git-commit
-    EOF
-
-    cat <<'EOF' > .gitlab-ci.yml
-
-    # THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
-    # DO NOT EDIT THIS FILE MANUALLY
-    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix
-    # AND OPEN A SHELL WITH THE COMMAND devenv shell
-    #
-
-    image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
-
-#    services:
-#      - docker:dind
-        
-
-    variables:
-      # The repo name as used in
-      # https://github.com/nix-community/NUR/blob/master/repos.json
-      NIXOS_VERSION: "23.05"
-      NIXPKGS_ALLOW_UNFREE: "1"
-      NIXPKGS_ALLOW_INSECURE: "1"
-      DOCKER_DRIVER: overlay2
-      DOCKER_HOST: unix:///var/run/docker.sock
-      GIT_DEPTH: 10
-
-    stages:
-      - test
-      - deploy 
-
-    before_script:
-      - unset DOCKER_TLS_VERIFY
-      - nix shell nixpkgs#coreutils -c mkdir -p /certs/client/
-      - nix shell nixpkgs#coreutils -c ln -fs /etc/ssl/certs/ca-bundle.crt /certs/client/ca.pem
-      - echo > .env-gitlab-ci
-      - variables=("HOME=$HOME" "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" "CI_REPOSITORY_URL=$CI_REPOSITORY_URL" "GITLAB_TOKEN=$GITLAB_TOKEN" "CI_JOB_TOKEN=$CI_JOB_TOKEN" "GITLAB_USER_EMAIL=$GITLAB_USER_EMAIL" "GITLAB_USER_NAME=\"$GITLAB_USER_NAME\"" "CI_REGISTRY_USER=$CI_REGISTRY_USER" "CI_PROJECT_ID=$CI_PROJECT_ID" "CI_PROJECT_DIR=$CI_PROJECT_DIR" "CI_API_V4_URL=$CI_API_V4_URL" "CI_PROJECT_NAME=$CI_PROJECT_NAME" "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA"); for var in "${variables[@]}"; do echo "$var" >> .env-gitlab-ci; done
-      - cat .env-gitlab-ci
-      - env 
-      - nix shell nixpkgs#docker-client -c docker info
-
-    after_script:
-      - if [ -f .env-gitlab-ci ]; then rm .env-gitlab-ci; fi
-
-    test:
-      stage: test
-      tags:
-        - nixos
-      script:
-        - devenv shell test-lib
-
-      cache:
-        - key: nixos
-          paths:
-            - /nix/store
-      
-      artifacts:
-        paths:
-          - dist
-
-    deploy:
-      stage: deploy
-      tags:
-        - nixos
-      script:
-        - devenv shell -c deploy-lib
-
-      when: on_success
-
-      cache:
-        - key: nixos
-          paths:
-            - /nix/store
-
-
-      artifacts:
-        paths:
-          - dist   
-    EOF
-
-       
-        
-
-export PS1="\[\e[0;34m\](devenv)\[\e[0m\] ${PS1-}"
-
-# set path to locales on non-NixOS Linux hosts
-if [ -z "${LOCALE_ARCHIVE-}" ]; then
-  export LOCALE_ARCHIVE=/nix/store/0g0c6sbrqxmywr636qzxni44wrqqrbdp-glibc-locales-2.37-45/lib/locale/locale-archive
-fi
-
-
-# note what environments are active, but make sure we don't repeat them
-if [[ ! "${DIRENV_ACTIVE-}" =~ (^|:)"$PWD"(:|$) ]]; then
-  export DIRENV_ACTIVE="$PWD:${DIRENV_ACTIVE-}"
-fi
-
-# devenv helper
-if [ ! type -p direnv &>/dev/null && -f .envrc ]; then
-  echo "You have .envrc but direnv command is not installed."
-  echo "Please install direnv: https://direnv.net/docs/installation.html"
-fi
-
-mkdir -p .devenv
-rm -f .devenv/profile
-ln -s /nix/store/5ji01c0jsm65gs0xmn0mfnjjphgdgsnz-devenv-profile .devenv/profile
-
+# THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
+# DO NOT EDIT THIS FILE MANUALLY
+# INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix 
+# AND OPEN A SHELL WITH THE COMMAND devenv shell
+#
+# Information about the task runner can be found here:
+# https://taskfile.dev
+
+version: '3'
+
+tasks:
+  default:
+    cmds:
+      - task --list
+    silent: true
+    
+  test:
+    desc: Execute unit tests in Go.
+    cmds:
+      - echo "Execute unit tests in Go."
+      - go test -cover -v ./...
+      - go test -bench -v ./...
+      - go test -race -v ./...
+
+  test-fuzz:
+    desc: Conduct fuzzing tests.#
+    cmds:  
+      - echo "Conduct fuzzing tests."
+      - go test -v -fuzztime=30s -fuzz=Fuzz ./...
+
+  add-licenses:
+    desc: Attach license headers to Go files.
+    cmds:
+      - echo "Attach license headers to Go files."
+      - go install github.com/google/addlicense@latest
+      - addlicense -c "schukai GmbH" -s -l "AGPL-3.0" ./*.go
+    silent: true
+    
+  check-licenses:
+    desc: Check license headers of Go files.
+    silent: true
+    cmds:
+      - go-licenses save "$(get-go-default-packages)"  --ignore "gitlab.schukai.com"  --force --save_path ${DEVENV_ROOT}/licenses/
+
+  check:
+    desc: Confirm repository status.
+    cmds:
+      - git diff-index --quiet HEAD || (echo "There are uncommitted changes after running make. Please commit or stash them before running make."; exit 1)
+    silent: true
+
+  commit:
+    desc: Commit changes to the repository.
+    aliases:
+      - c
+      - ci
+      - git-commit
+    cmds:
+      - do-git-commit
diff --git a/devenv.nix b/devenv.nix
index 33683a7..4c11b6e 100644
--- a/devenv.nix
+++ b/devenv.nix
@@ -236,142 +236,141 @@ EOF
         
     cat <<'EOF' > Taskfile.yml
 
-    # THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
-    # DO NOT EDIT THIS FILE MANUALLY
-    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix 
-    # AND OPEN A SHELL WITH THE COMMAND devenv shell
-    #
-    # Information about the task runner can be found here:
-    # https://taskfile.dev
-
-    version: '3'
-
-    tasks:
-      default:
-        cmds:
-          - task --list
-        silent: true
-        
-      test:
-        desc: Execute unit tests in Go.
-        cmds:
-          - echo "Execute unit tests in Go."
-          - go test -cover -v ./...
-          - go test -bench -v ./...
-          - go test -race -v ./...
-
-      test-fuzz:
-        desc: Conduct fuzzing tests.#
-        cmds:  
-          - echo "Conduct fuzzing tests."
-          - go test -v -fuzztime=30s -fuzz=Fuzz ./...
-
-      add-licenses:
-        desc: Attach license headers to Go files.
-        cmds:
-          - echo "Attach license headers to Go files."
-          - go install github.com/google/addlicense@latest
-          - addlicense -c "schukai GmbH" -s -l "AGPL-3.0" ./*.go
-        silent: true
-        
-      check-licenses:
-        desc: Check license headers of Go files.
-        silent: true
-        cmds:
-          - go-licenses save "$(get-go-default-packages)"  --ignore "gitlab.schukai.com"  --force --save_path ''${DEVENV_ROOT}/licenses/
-
-      check:
-        desc: Confirm repository status.
-        cmds:
-          - git diff-index --quiet HEAD || (echo "There are uncommitted changes after running make. Please commit or stash them before running make."; exit 1)
-        silent: true
-
-      commit:
-        desc: Commit changes to the repository.
-        aliases:
-          - c
-          - ci
-          - git-commit
-        cmds:
-          - do-git-commit
-    EOF
+# THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
+# DO NOT EDIT THIS FILE MANUALLY
+# INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix 
+# AND OPEN A SHELL WITH THE COMMAND devenv shell
+#
+# Information about the task runner can be found here:
+# https://taskfile.dev
+
+version: '3'
+
+tasks:
+  default:
+    cmds:
+      - task --list
+    silent: true
+    
+  test:
+    desc: Execute unit tests in Go.
+    cmds:
+      - echo "Execute unit tests in Go."
+      - go test -cover -v ./...
+      - go test -bench -v ./...
+      - go test -race -v ./...
+
+  test-fuzz:
+    desc: Conduct fuzzing tests.#
+    cmds:  
+      - echo "Conduct fuzzing tests."
+      - go test -v -fuzztime=30s -fuzz=Fuzz ./...
+
+  add-licenses:
+    desc: Attach license headers to Go files.
+    cmds:
+      - echo "Attach license headers to Go files."
+      - go install github.com/google/addlicense@latest
+      - addlicense -c "schukai GmbH" -s -l "AGPL-3.0" ./*.go
+    silent: true
+    
+  check-licenses:
+    desc: Check license headers of Go files.
+    silent: true
+    cmds:
+      - go-licenses save "$(get-go-default-packages)"  --ignore "gitlab.schukai.com"  --force --save_path ''${DEVENV_ROOT}/licenses/
+
+  check:
+    desc: Confirm repository status.
+    cmds:
+      - git diff-index --quiet HEAD || (echo "There are uncommitted changes after running make. Please commit or stash them before running make."; exit 1)
+    silent: true
+
+  commit:
+    desc: Commit changes to the repository.
+    aliases:
+      - c
+      - ci
+      - git-commit
+    cmds:
+      - do-git-commit
+EOF
 
     cat <<'EOF' > .gitlab-ci.yml
 
-    # THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
-    # DO NOT EDIT THIS FILE MANUALLY
-    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix
-    # AND OPEN A SHELL WITH THE COMMAND devenv shell
-    #
+# THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
+# DO NOT EDIT THIS FILE MANUALLY
+# INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix
+# AND OPEN A SHELL WITH THE COMMAND devenv shell
+#
 
-    image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
+image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
 
 #    services:
 #      - docker:dind
-        
 
-    variables:
-      # The repo name as used in
-      # https://github.com/nix-community/NUR/blob/master/repos.json
-      NIXOS_VERSION: "23.05"
-      NIXPKGS_ALLOW_UNFREE: "1"
-      NIXPKGS_ALLOW_INSECURE: "1"
-      DOCKER_DRIVER: overlay2
-      DOCKER_HOST: unix:///var/run/docker.sock
-      GIT_DEPTH: 10
-
-    stages:
-      - test
-      - deploy 
-
-    before_script:
-      - unset DOCKER_TLS_VERIFY
-      - nix shell nixpkgs#coreutils -c mkdir -p /certs/client/
-      - nix shell nixpkgs#coreutils -c ln -fs /etc/ssl/certs/ca-bundle.crt /certs/client/ca.pem
-      - echo > .env-gitlab-ci
-      - variables=("HOME=$HOME" "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" "CI_REPOSITORY_URL=$CI_REPOSITORY_URL" "GITLAB_TOKEN=$GITLAB_TOKEN" "CI_JOB_TOKEN=$CI_JOB_TOKEN" "GITLAB_USER_EMAIL=$GITLAB_USER_EMAIL" "GITLAB_USER_NAME=\"$GITLAB_USER_NAME\"" "CI_REGISTRY_USER=$CI_REGISTRY_USER" "CI_PROJECT_ID=$CI_PROJECT_ID" "CI_PROJECT_DIR=$CI_PROJECT_DIR" "CI_API_V4_URL=$CI_API_V4_URL" "CI_PROJECT_NAME=$CI_PROJECT_NAME" "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA"); for var in "''${variables[@]}"; do echo "$var" >> .env-gitlab-ci; done
-      - cat .env-gitlab-ci
-      - env 
-      - nix shell nixpkgs#docker-client -c docker info
-
-    after_script:
-      - if [ -f .env-gitlab-ci ]; then rm .env-gitlab-ci; fi
-
-    test:
-      stage: test
-      tags:
-        - nixos
-      script:
-        - devenv shell test-lib
-
-      cache:
-        - key: nixos
-          paths:
-            - /nix/store
-      
-      artifacts:
-        paths:
-          - dist
+variables:
+  # The repo name as used in
+  # https://github.com/nix-community/NUR/blob/master/repos.json
+  NIXOS_VERSION: "23.05"
+  NIXPKGS_ALLOW_UNFREE: "1"
+  NIXPKGS_ALLOW_INSECURE: "1"
+  DOCKER_DRIVER: overlay2
+  DOCKER_HOST: unix:///var/run/docker.sock
+  GIT_DEPTH: 10
+
+stages:
+  - test
+  - deploy 
+
+before_script:
+  - unset DOCKER_TLS_VERIFY
+  - nix shell nixpkgs#coreutils -c mkdir -p /certs/client/
+  - nix shell nixpkgs#coreutils -c ln -fs /etc/ssl/certs/ca-bundle.crt /certs/client/ca.pem
+  - echo > .env-gitlab-ci
+  - variables=("HOME=$HOME" "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" "CI_REPOSITORY_URL=$CI_REPOSITORY_URL" "GITLAB_TOKEN=$GITLAB_TOKEN" "CI_JOB_TOKEN=$CI_JOB_TOKEN" "GITLAB_USER_EMAIL=$GITLAB_USER_EMAIL" "GITLAB_USER_NAME=\"$GITLAB_USER_NAME\"" "CI_REGISTRY_USER=$CI_REGISTRY_USER" "CI_PROJECT_ID=$CI_PROJECT_ID" "CI_PROJECT_DIR=$CI_PROJECT_DIR" "CI_API_V4_URL=$CI_API_V4_URL" "CI_PROJECT_NAME=$CI_PROJECT_NAME" "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA"); for var in "''${variables[@]}"; do echo "$var" >> .env-gitlab-ci; done
+  - cat .env-gitlab-ci
+  - env 
+  - nix shell nixpkgs#docker-client -c docker info
+
+after_script:
+  - if [ -f .env-gitlab-ci ]; then rm .env-gitlab-ci; fi
+
+test:
+  stage: test
+  tags:
+    - nixos
+  script:
+    - devenv shell test-lib
+
+  cache:
+    - key: nixos
+      paths:
+        - /nix/store
+  
+  artifacts:
+    paths:
+      - dist
 
-    deploy:
-      stage: deploy
-      tags:
-        - nixos
-      script:
-        - devenv shell -c deploy-lib
+deploy:
+  stage: deploy
+  tags:
+    - nixos
+  script:
+    - devenv shell -c deploy-lib
 
-      when: on_success
+  when: on_success
 
-      cache:
-        - key: nixos
-          paths:
-            - /nix/store
+  cache:
+    - key: nixos
+      paths:
+        - /nix/store
 
 
-      artifacts:
-        paths:
-          - dist   
-    EOF
+  artifacts:
+    paths:
+      - dist   
+EOF
 
        
         
-- 
GitLab