From c590eec877f569594ed0ba16ab81cd0e7b6cc96b Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Sat, 28 Oct 2023 15:32:33 +0200 Subject: [PATCH] fix: update go libs #3 --- .gitlab-ci.yml | 10 -- CONTRIBUTING.md | 58 ++++++++ LICENSE | 5 +- Taskfile.yml | 15 +- devenv.lock | 24 ++-- devenv.nix | 353 +++++++++++++++++++++++++++++------------------- 6 files changed, 298 insertions(+), 167 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4339280..1bc73eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,16 +7,12 @@ 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 GIT_DEPTH: 10 stages: @@ -24,8 +20,6 @@ stages: - deploy before_script: - - nix shell nixpkgs#coreutils-full -c mkdir -p /certs/client/ - - nix shell nixpkgs#coreutils-full -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 @@ -63,7 +57,3 @@ deploy: paths: - /nix/store - - artifacts: - paths: - - dist diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2713a85 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,58 @@ +# Contributing to schukai GmbH Projects + +## Code of Conduct + +Be a human, not an asshole. Common sense and basic human decency apply. + +## Getting Started + +### Setting up the Project + +1. Fork the project on GitLab. +2. Clone your fork locally. Replace `[your-username]` with your GitLab username and `[project-name]` with the actual project name: + ```bash + git clone $(git config --get remote.origin.url) + ``` +3. Add the upstream repository. Replace `[original-username]` and `[project-name]` with the original repository's username and project name: + ```bash + git remote add upstream https://gitlab.schukai.com/[original-username]/[project-name].git + ``` + +### Making Changes + +1. Create a new branch: + ```bash + git checkout -b new-feature-branch + ``` +2. Make your changes. +3. Commit your changes: + ```bash + git commit -m "Description of change" + ``` + +### Submitting a Merge Request + +1. Push your changes to your fork: + ```bash + git push origin new-feature-branch + ``` +2. Navigate to the original project repository on `gitlab.schukai.com`. +3. Open a Merge Request and provide a clear description of the changes. + +## Coding Guidelines + +- Follow the coding style used in the project. +- Write unit tests for new features. +- Ensure that all tests pass before submitting a Merge Request. + +## Reporting Issues + +If you find an issue, please create a new issue on `gitlab.schukai.com`. + +## Additional Resources + +- [GitLab Flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html) +- [GitLab Merge Request Guidelines](https://docs.gitlab.com/ee/user/project/merge_requests/) + +Thank you for your contribution! + diff --git a/LICENSE b/LICENSE index f335543..5694d30 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (C) 2022 by schukai GmbH. +Copyright (C) 2023 schukai GmbH This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published @@ -10,4 +10,5 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License -along with this program. If not, see <https://www.gnu.org/licenses/>. \ No newline at end of file +along with this program. If not, see <https://www.gnu.org/licenses/>. + diff --git a/Taskfile.yml b/Taskfile.yml index b7313f4..b48a18a 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -10,24 +10,29 @@ version: '3' tasks: - default: + default: cmds: - task --list silent: true test: desc: Execute unit tests in Go. + env: + TEST_BY_TASK: true cmds: - echo "Execute unit tests in Go." - - go test -cover -v ./... - - go test -bench -v ./... - - go test -race -v ./... + - gosec . + - go test -tags=runOnTask -cover -v ./... + - go test -tags=runOnTask -bench -v ./... + - go test -tags=runOnTask -race -v ./... test-fuzz: desc: Conduct fuzzing tests.# + env: + TEST_BY_TASK: true cmds: - echo "Conduct fuzzing tests." - - go test -v -fuzztime=30s -fuzz=Fuzz ./... + - go test -tags=runOnTask -v -fuzztime=30s -fuzz=Fuzz ./... add-licenses: desc: Attach license headers to Go files. diff --git a/devenv.lock b/devenv.lock index 8993ca8..a9b3b22 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,11 +3,11 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1692003204, - "narHash": "sha256-gO2DXwXuArjpywgtRTDb3aKscWMbnI7YwFaqvV46yv0=", + "lastModified": 1698243190, + "narHash": "sha256-n+SbyNQRhUcaZoU00d+7wi17HJpw/kAUrXOL4zRcqE8=", "owner": "cachix", "repo": "devenv", - "rev": "ade3ae522baf366296598e232b7b063d81740bbb", + "rev": "86f476f7edb86159fd20764489ab4e4df6edb4b6", "type": "github" }, "original": { @@ -74,11 +74,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691950488, - "narHash": "sha256-iUNEeudc4dGjx+HsHccnGiuZUVE/nhjXuQ1DVCsHIUY=", + "lastModified": 1698288402, + "narHash": "sha256-jIIjApPdm+4yt8PglX8pUOexAdEiAax/DXW3S/Mb21E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "720e61ed8de116eec48d6baea1d54469b536b985", + "rev": "60b9db998f71ea49e1a9c41824d09aa274be1344", "type": "github" }, "original": { @@ -106,11 +106,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1691950488, - "narHash": "sha256-iUNEeudc4dGjx+HsHccnGiuZUVE/nhjXuQ1DVCsHIUY=", + "lastModified": 1698288402, + "narHash": "sha256-jIIjApPdm+4yt8PglX8pUOexAdEiAax/DXW3S/Mb21E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "720e61ed8de116eec48d6baea1d54469b536b985", + "rev": "60b9db998f71ea49e1a9c41824d09aa274be1344", "type": "github" }, "original": { @@ -130,11 +130,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1691747570, - "narHash": "sha256-J3fnIwJtHVQ0tK2JMBv4oAmII+1mCdXdpeCxtIsrL2A=", + "lastModified": 1698227354, + "narHash": "sha256-Fi5H9jbaQLmLw9qBi/mkR33CoFjNbobo5xWdX4tKz1Q=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a", + "rev": "bd38df3d508dfcdff52cd243d297f218ed2257bf", "type": "github" }, "original": { diff --git a/devenv.nix b/devenv.nix index efd4d9b..5fdd16f 100644 --- a/devenv.nix +++ b/devenv.nix @@ -1,4 +1,4 @@ -{ pkgs, inputs, phps, lib, config, modulesPath, ... }: +{ pkgs ? import <nixpkgs> {}, inputs, phps, lib, config, modulesPath, ... }: { # https://devenv.sh/packages/ @@ -9,12 +9,14 @@ blackbox-terminal coreutils-full dbeaver + dbeaver delve dialog drill exa fd fd + feh gcc12 gdlv git @@ -23,6 +25,7 @@ gnumake gnused go-licenses + gosec go-task gum httpie @@ -34,6 +37,8 @@ memcached netcat nixfmt + nodePackages.mermaid-cli + openssh procps ranger unixtools.xxd @@ -48,7 +53,7 @@ languages = { go = { enable = true; }; }; difftastic.enable = true; - + scripts.get-go-default-packages.exec = '' #!${pkgs.bash}/bin/bash echo $(awk -F ' ' '/^module / { print $2 }' go.mod) @@ -60,7 +65,7 @@ #!${pkgs.bash}/bin/bash #set -euo pipefail set -x - + PATH="''${PATH}":${pkgs.coreutils}/bin PATH="''${PATH}":${pkgs.findutils}/bin PATH="''${PATH}":${pkgs.jq}/bin/ @@ -161,142 +166,213 @@ ''; enterShell = '' - - 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 - - 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 - GIT_DEPTH: 10 - - stages: - - test - - deploy - - before_script: - - nix shell nixpkgs#coreutils-full -c mkdir -p /certs/client/ - - nix shell nixpkgs#coreutils-full -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 - - 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 - +cat <<'EOF' > CONTRIBUTING.md +# Contributing to schukai GmbH Projects + +## Code of Conduct + +Be a human, not an asshole. Common sense and basic human decency apply. + +## Getting Started + +### Setting up the Project + +1. Fork the project on GitLab. +2. Clone your fork locally. Replace `[your-username]` with your GitLab username and `[project-name]` with the actual project name: + ```bash + git clone $(git config --get remote.origin.url) + ``` +3. Add the upstream repository. Replace `[original-username]` and `[project-name]` with the original repository's username and project name: + ```bash + git remote add upstream https://gitlab.schukai.com/[original-username]/[project-name].git + ``` + +### Making Changes + +1. Create a new branch: + ```bash + git checkout -b new-feature-branch + ``` +2. Make your changes. +3. Commit your changes: + ```bash + git commit -m "Description of change" + ``` + +### Submitting a Merge Request + +1. Push your changes to your fork: + ```bash + git push origin new-feature-branch + ``` +2. Navigate to the original project repository on `gitlab.schukai.com`. +3. Open a Merge Request and provide a clear description of the changes. + +## Coding Guidelines + +- Follow the coding style used in the project. +- Write unit tests for new features. +- Ensure that all tests pass before submitting a Merge Request. + +## Reporting Issues + +If you find an issue, please create a new issue on `gitlab.schukai.com`. + +## Additional Resources + +- [GitLab Flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html) +- [GitLab Merge Request Guidelines](https://docs.gitlab.com/ee/user/project/merge_requests/) + +Thank you for your contribution! + +EOF + +cat <<'EOF' > LICENSE +Copyright (C) 2023 schukai GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <https://www.gnu.org/licenses/>. + +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. + env: + TEST_BY_TASK: true + cmds: + - echo "Execute unit tests in Go." + - gosec . + - go test -tags=runOnTask -cover -v ./... + - go test -tags=runOnTask -bench -v ./... + - go test -tags=runOnTask -race -v ./... + + test-fuzz: + desc: Conduct fuzzing tests.# + env: + TEST_BY_TASK: true + cmds: + - echo "Conduct fuzzing tests." + - go test -tags=runOnTask -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 + +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" + GIT_DEPTH: 10 + +stages: + - test + - deploy + +before_script: + - 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 + +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 + +EOF ''; @@ -635,4 +711,5 @@ printLogfileAndExit 0 ''; + } -- GitLab