{"id":18363414,"url":"https://github.com/stuttgart-things/dagger","last_synced_at":"2026-04-25T08:05:02.419Z","repository":{"id":261132756,"uuid":"883349536","full_name":"stuttgart-things/dagger","owner":"stuttgart-things","description":"collection of dagger modules","archived":false,"fork":false,"pushed_at":"2026-02-27T05:17:18.000Z","size":27986,"stargazers_count":1,"open_issues_count":23,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-27T09:18:49.124Z","etag":null,"topics":["cicd","containerization","dagger","docker","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stuttgart-things.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-04T20:08:12.000Z","updated_at":"2026-02-18T13:27:22.000Z","dependencies_parsed_at":"2024-11-04T22:17:31.894Z","dependency_job_id":"523e5375-78ef-429f-9e0e-1ae01cc1af80","html_url":"https://github.com/stuttgart-things/dagger","commit_stats":null,"previous_names":["stuttgart-things/dagger"],"tags_count":135,"template":false,"template_full_name":null,"purl":"pkg:github/stuttgart-things/dagger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fdagger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fdagger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fdagger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fdagger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuttgart-things","download_url":"https://codeload.github.com/stuttgart-things/dagger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fdagger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29981041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T16:35:47.903Z","status":"ssl_error","status_checked_at":"2026-03-01T16:35:44.899Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","containerization","dagger","docker","golang"],"created_at":"2024-11-05T23:06:26.213Z","updated_at":"2026-04-25T08:05:02.405Z","avatar_url":"https://github.com/stuttgart-things.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stuttgart-Things Dagger Modules\n\nA modular collection of Dagger building blocks for infrastructure, containers, security, and DevOps.\n\n## 🚀 Module Overview\n\n| Module         | Purpose                        | Key Features |\n|---------------|--------------------------------|--------------|\n| [Ansible](./ansible/README.md)     | Automation \u0026 Configuration      | Playbook execution, collection build, GitHub release |\n| [ArgoCD](./argocd/README.md)       | ArgoCD GitOps                   | Cluster registration, app-of-apps catalog verification |\n| [Go](./go/README.md)               | Go Development                  | Linting, build, Ko containers, security scan |\n| [Helm](./helm/README.md)           | Kubernetes Package Management   | Chart operations, Helmfile, registry, validation |\n| [Kubernetes](./kubernetes/README.md)   | Kubernetes Management | Kubectl operations |\n| [Homerun](./homerun/README.md)     | Homerun Integration             | Event processing, workflow automation |\n| [Terraform](./terraform/README.md) | Infrastructure as Code          | Plan/apply, Vault, state management |\n| [Docker](./docker/README.md)       | Container Management            | Build, registry, multi-platform, linting |\n| [Hugo](./hugo/README.md)           | Static Websites                 | Build, MinIO, dev server, theme management |\n| [Crossplane](./crossplane/README.md)| Cloud Infrastructure           | Package management, OCI push, custom packages |\n| [GitLab](./gitlab/README.md)       | GitLab Integration              | API, merge requests, repo management |\n| [Packer](./packer/README.md)       | Image Building                  | VM templates, vCenter, Vault |\n| [Kyverno](./kyverno/README.md)     | Policy Management               | Policy validation, compliance, GitOps |\n| [Trivy](./trivy/README.md)         | Security Scanning               | Vulnerability scan, container, compliance |\n| [SOPS](./sops/README.md)           | Secret Management               | Encryption, K8s secrets, key management |\n| [Release](./release/README.md)     | Release Automation              | Semver, changelog, GitHub release |\n| [Git](./git/README.md)             | Git Operations                  | Repo, branch, tag, remote, sync |\n| [Crane](./crane/README.md)         | Registry Operations             | Image copy, manifest, multi-arch |\n| [KCL](./kcl/README.md)             | KCL Config \u0026 CRD Conversion     | KCL CLI, CRD2KCL, validation, OCI push |\n| [OCI](./oci/README.md)             | OCI Artifact Management         | Flux push, batch push, local TLS registry testing |\n\n## 🛠️ Quick Start\n\n### Prerequisites\n- Dagger CLI ([installation guide](https://docs.dagger.io/install))\n- Docker\n- Git\n\n### Using a Module\n\n```bash\n# Example: Lint Go code\ndagger call -m go lint --src ./my-go-project\n\n# Example: Build Helm chart\ndagger call -m helm build-chart --src ./my-helm-chart\n\n# Example: Security scan\ndagger call -m trivy scan-filesystem --src ./my-project\n```\n\n### Development \u0026 Documentation\n\nEach module includes:\n- Features \u0026 capabilities\n- Setup \u0026 quick start\n- API reference\n- Test instructions\n\n## 📋 Task Automation\n\nInteractive task menu with [gum](https://github.com/charmbracelet/gum):\n\n```bash\n# Start task\ntask\n\n# Available tasks:\n# - Module tests and validation\n# - Release management\n# - Documentation generation\n# - Code quality checks\n```\n\n## 🔍 Detailed Examples\n\nFor comprehensive use cases and advanced configurations, see the individual module documentation above. Each module offers:\n\n- Step-by-step tutorials\n- Real-world use cases\n- Integration patterns\n- Best practices\n- Troubleshooting guides\n\n## 📖 Legacy Examples\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eRELEASE\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# SEMANTIC RELEASE\ndagger call -m release semantic \\\n--src ~/projects/k2n/ \\\n--token env:GITHUB_TOKEN \\\n--progress plain -vv \\\n```\n\n```bash\n# DELETE EXISTING TAG\ndagger call -m release delete-tag \\\n--src ~/projects/k2n/ \\\n--release-tag v1.0.0 \\\n--git-config file://~/.gitconfig \\\n-vv --progress plain \\\nexport --path ~/projects/k2n/\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eTRIVY\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# FILESYSTEM SCAN LOCAL\ndagger call -m trivy scan-filesystem \\\n--src /home/sthings/projects/stuttgart-things \\\n--progress plain -vv \\\nexport --path=/tmp/trivy-fs.json\ncat /tmp/trivy-fs.json\n```\n\n```bash\n# FILESYSTEM SCAN FROM REMOTE GIT REPO\ndagger call -m trivy scan-filesystem \\\n--src git://github.com/stuttgart-things/ansible.git \\\n--progress plain -vv \\\nexport --path=/tmp/trivy-fs.json\ncat /tmp/trivy-fs.json\n```\n\n```bash\n# IMAGE SCAN (w/ REG LOGIN)\nexport REG_USER=\"\"\nexport REG_PW=\"\"\n\ndagger call -m trivy scan-image \\\n--image-ref nginx:latest \\\n--registry-user=env:REG_USER \\\n--registry-password=env:REG_PW \\\n--progress plain -vv \\\nexport --path=/tmp/image-nginx.json\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eGIT\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ndagger call -m git clone-git-hub \\\n--repository stuttgart-things/stuttgart-things \\\n--ref main \\\n--token env:GITHUB_TOKEN \\\n-vv --progress plain \\\nexport --path=/tmp/repo\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eSOPS\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# ENCRYPT SOPS SECRET\nexport AGE=age1g438n4l..\n\ndagger call -m sops \\\nencrypt --age-key env:AGE \\\n--sops-config ~/.sops.yaml \\\n--plaintext-file tests/sops/tfvars.json \\\n--file-extension json \\\nexport --path=/tmp/tfvars.enc.json\n```\n\n```bash\n# DECRYPT SOPS SECRET\ndagger call -m sops \\\ndecrypt-sops \\\n--sops-key=env:SOPS_AGE_KEY \\\n--encrypted-file /tmp/tfvars.enc.json\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eTERRAFORM\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# RUN TERRAFORM APPLY AND EXPORTS DIR w/ STATE\ndagger call -m terraform \\\nexecute \\\n--terraform-dir tests/terraform \\\n--variables \"name=patrick,food=kaiserschmarrn\" \\\n--operation apply \\\n-vv --progress plain \\\nexport --path=~/tmp/dagger/tests/terraform/\n```\n\n```bash\n# RUN TERRAFORM APPLY AND EXPORTS DIR w/ STATE + MOUNT SECRETS FILE\n# SECRETS FILE MUST EXIST UNECRYPTED ON FS\ndagger call -m terraform \\\nexecute \\\n--terraform-dir tests/terraform \\\n--variables \"name=patrick\" \\ # HIGHEST VAR PRIORITY\n--secret-json-variables file://tests/terraform/terraform.tfvars.json \\\n--operation apply \\\n-vv --progress plain \\\nexport --path=~/tmp/dagger/tests/terraform/\n```\n\n```bash\n# RUN TERRAFORM APPLY w/ VAULT LOOKUPS\ndagger call -m terraform \\\nexecute \\\n--terraform-dir /home/sthings/projects/blueprints/tests/vmtemplate/tfvaulttest \\\n--vault-secret-id env:VAULT_SECRET_ID \\\n--vault-role-id env:VAULT_ROLE_ID \\\n--variables \"vault_addr=https://vault.example.com:8200\" \\\n--operation apply \\\n-vv --progress plain \\\nexport --path=~/tmp/dagger/tests/terraform/\n```\n\n```bash\n# RUN TERRAFORM OUTPUT\ndagger call -m terraform \\\noutput \\\n--terraform-dir ~/projects/terraform/vms/dagger/ \\\n-vv --progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eHUGO\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# INIT HUGO FOLDER STRUCTURE (INCLUDING THEME)\ndagger call -m hugo \\\ninit-site \\\n--name test \\\n--config tests/hugo/hugo.toml \\\n--content tests/hugo/content \\\nexport --path /tmp/hugo/test\n\n# BUILD AND SERVE\ndagger call -m hugo serve \\\n--config tests/hugo/hugo.toml \\\n--content tests/hugo/content \\\n--port 4144 \\\nup --progress plain\n\n# BUILD + EXPORT STATIC CONTENT (INCLUDING THEME)\ndagger call -m hugo \\\nbuild-and-export \\\n--name blog \\\n--config tests/hugo/hugo.toml \\\n--content tests/hugo/content \\\nexport --path /tmp/blog/static\n\n# JUST SYNC MINIO BUCKET\nexport MINIO_USER=\"\"\nexport MINIO_PASSWORD=\"\"\n\ndagger call -m hugo \\\nsync-minio-bucket \\\n--endpoint https://artifacts.automation.example.com \\\n--bucket-name images \\\n--insecure=true \\\n--access-key=env:MINIO_USER \\\n--secret-key=env:MINIO_PASSWORD \\\n--alias-name artifacts \\\nexport --path /tmp/images\n\n# BUILD + EXPORT STATIC CONTENT (INCLUDING THEME+BUCKET)\nexport MINIO_USER=\"\"\nexport MINIO_PASSWORD=\"\"\n\ndagger call -m hugo \\\nbuild-sync-export \\\n--name blog \\\n--config tests/hugo/hugo.toml \\\n--content tests/hugo/content/ \\\n--endpoint https://artifacts.automation.sthings-vsphere.example.com \\\n--bucket-name idp \\\n--insecure=true \\\n--access-key=env:MINIO_USER \\\n--secret-key=env:MINIO_PASSWORD \\\n--alias-name artifacts \\\n-vv export \\\n--path=/tmp/bucket\n```\n\n# SERVE EXPORTED STATIC CONTENT\n\n```bash\n# WORKAROUND FOR NOW\nchmod -R o+rX /tmp/blog/static\ndocker run --rm -p 8080:80 \\\n-v \"/tmp/blog/static:/usr/share/nginx/html\" nginx\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003ePACKER\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ndagger call -m packer bake \\\n--local-dir \".\" \\\n--build-path tests/packer/hello/hello.pkr.hcl \\\n--progress plain -vv\n```\n\n```bash\n# w/ VAULT AUTH (PACKER ONLY WORKS WITH VAULT TOKEN, FOR ANSIBLE WE'RE USING APPROLE AUTH)\nexport VAULT_ROLE_ID=\u003c\u003e\nexport VAULT_TOKEN=\u003c\u003e\nexport VAULT_SECRET_ID\u003c\u003e\n\ndagger call -m packer bake \\\n--local-dir \"/home/sthings/projects/stuttgart-things/packer/builds/ubuntu24-labda-vsphere/\" \\\n--build-path ubuntu24-base-os.pkr.hc\\\n--vault-addr https://vault-vsphere.example.com:8200 \\\n--vault-role-id env:VAULT_ROLE_ID \\\n--vault-token env:VAULT_TOKEN \\\n--vault-secret-id env:VAULT_SECRET_ID \\\n--progress plain -vv\n```\n\n```bash\n# MOVE VM TEMPLATE\nexport VCENTER_FQDN=https://10.100.135.50/sdk\nexport VCENTER_USER=\u003c\u003e\nexport VCENTER_PASSWORD\u003c\u003e\n\ndagger call -m packer vcenteroperation \\\n--operation move \\\n--vcenter env:VCENTER_FQDN \\\n--username env:VCENTER_USER \\\n--password env:VCENTER_PASSWORD \\\n--source /Datacenter/vm/stuttgart-things/rancher-things/sthings-app-4 \\\n--target /Datacenter/vm/stuttgart-things/testing/ \\\n--progress plain -vv\n```\n\n```bash\n# RENAME VM TEMPLATE\nexport VCENTER_FQDN=https://10.100.135.50/sdk\nexport VCENTER_USER=\u003c\u003e\nexport VCENTER_PASSWORD\u003c\u003e\n\ndagger call -m packer vcenteroperation \\\n--operation rename \\\n--vcenter env:VCENTER_FQDN \\\n--username env:VCENTER_USER \\\n--password env:VCENTER_PASSWORD \\\n--source /Datacenter/vm/stuttgart-things/vm-templates/u22-rke2-ipi  \\\n--target u22-rke2-old \\\n--progress plain -vv\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eKYVERNO\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# VALIDATE RESOURCES AGAINST POLICIES\ndagger call -m kyverno validate \\\n--policy tests/kyverno/policies/ \\\n--resource tests/kyverno/resource-good/ \\\n--progress plain\n```\n\n```bash\n# OUTPUT KYVERNO VERSION\ndagger call -m kyverno version \\\n--progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eGITLAB\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# GET PROJECT ID BY PROJECT NAME\ndagger call -m gitlab get-project-id \\\n--token env:GITLAB_TOKEN \\\n--server gitlab.com \\\n--project-name \"docs\" \\\n--group-path \"Lab/stuttgart-things/idp\"\n```\n\n```bash\n# GET MERGE REQUEST ID BY PROJECT ID\ndagger call -m gitlab list-merge-requests \\\n--token env:GITLAB_TOKEN \\\n--server gitlab.com \\\n--project-id 14160 \\\n--progress plain\n```\n\n```bash\n# GET MERGE REQUEST ID BY PROJECT ID\ndagger call -m gitlab get-merge-request-id \\\n--token env:GITLAB_TOKEN \\\n--server gitlab.com \\\n--project-id 14466 \\\n--merge-request-title \"RFC- -\" \\\n--progress plain\n```\n\n```bash\n# LIST ALL CHANGES FROM MR INTO (USUALY) MAIN\ndagger call -m gitlab list-merge-request-changes \\ --token env:GITLAB_TOKEN \\\n--server gitlab.com \\\n--project-id=\"14466\" \\\n--merge-request-id=\"1\" \\\n--progress plain\n```\n\n```bash\n# LIST ALL CHANGES FROM MR INTO (USUALY) MAIN\ndagger call -m gitlab clone \\\n--repo-url https://gitlab.com/Lab/stuttgart-things/idp/resource-engines.git\n--token env:GITLAB_TOKEN \\\n--branch=main \\\n#export --path /tmp/repo \\ # IF YOU WANT TO EXPORT TO LOCAL FS\n--progress plain\n```\n\n```bash\n# PRINT ALL FILES CHANGED BY A MR\ndagger call -m gitlab print-merge-request-file-changes \\\n--repo-url https://gitlab.com/Lab/stuttgart-things/idp/resource-engines.git \\\n--server gitlab.com \\\n--token env:GITLAB_TOKEN \\\n--merge-request-id=\"1\" \\\n--project-id=\"14466\" \\\n--branch \"RFC-_\" \\\n--progress plain\n```\n\n```bash\n# LIST ALL PROJECTS IN A GROUP\ndagger call -m gitlab list-projects \\\n--server gitlab.com \\\n--token env:GITLAB_TOKEN \\\n--group-path \"Lab%2Fstuttgart-things\"\n--progress plain\n```\n\n```bash\n# PRINT ALL FILES CHANGED BY A MR\ndagger call -m gitlab update-merge-request-state \\\n--server gitlab.com \\\n--token env:GITLAB_TOKEN \\\n--merge-request-id=\"1\" \\\n--project-id=\"14466\" \\\n--action merge \\ # or 'close'\n--progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRANE\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# REG AUTH FOR SOURCE AND TARGET REG\ndagger call -m crane copy \\\n--sourceRegistry ghcr.io \\\n--sourceUsername patrick-hermann-sva \\\n--sourcePassword env:GITHUB_TOKEN \\\n--targetRegistry harbor.example.com \\\n--targetUsername admin \\\n--targetPassword env:HARBOR \\\n--platform linux/amd64 \\\n--insecure=true \\\n--source ghcr.io/stuttgart-things/backstage:2025-04-22 \\\n--target harbor.example.com/test/backstage:2025-04-22 \\\n--progress plain\n```\n\n```bash\n# REG AUTH FOR TARGET REG ONLY\ndagger call -m crane copy \\\n--targetUsername admin \\\n--targetPassword env:HARBOR \\\n--source redis:latest \\\n--target harbor.example.com/test/redis:2025-04-22 \\\n--targetRegistry harbor.example.com \\\n--insecure=true \\\n--platform linux/amd64 \\\n--progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eDOCKER\u003c/b\u003e\u003c/summary\u003e\n\n### LINT\n\n```bash\ndagger call -m docker \\\nlint \\\n--src tests/docker \\\n-vv --progress plain\n```\n\n### BUILD\n\n```bash\ndagger call -m docker \\\nbuild \\\n--src tests/docker \\\n-vv --progress plain\n```\n\n### BUILD + PUSH TEMPORARY IMAGE w/o AUTH\n\n```bash\ndagger call -m docker \\\nbuild-and-push \\\n--source tests/docker \\\n--repository-name stuttgart-things/test \\\n--registry-url ttl.sh \\\n--tag 1.2.3 \\\n-vv --progress plain\n```\n\n### BUILD + PUSH IMAGE w/ AUTH\n\n```bash\ndagger call -m docker \\\nbuild-and-push \\\n--source tests/docker \\\n--repository-name stuttgart-things/test \\\n--registry-url ghcr.io \\\n--tag 1.2.3 \\\n--registry-username=env:GITHUB_USER \\\n--registry-password=env:GITHUB_TOKEN \\\n-vv --progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eGO\u003c/b\u003e\u003c/summary\u003e\n\n### LINT PROJECT\n\n```bash\ndagger call -m go \\\nlint --src \".\" \\\n--timeout 300s \\\n--progress plain \\\n-vv\n```\n\n### BUILD PROJECT\n\n```bash\ndagger call -m go \\\nbuild-binary \\\n--src \".\" \\\n--os linux \\\n--arch amd64 \\\n--ldflags \"cmd.version=1.278910; cmd.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n--package-name github.com/stuttgart-things/k2n \\\n--go-main-file main.go \\\n--bin-name k2 \\\n--go-version 1.25.4 \\\nexport --path=/tmp/go/build/ \\\n--progress plain \\\n-vv\n```\n\n### KO BUILD\n\n```bash\n# BUILD JUST LOCAL\ndagger call -m go ko-build \\\n--src tests/go/calculator/ \\\n--push=\"false\" \\\n--progress plain -vv\n```\n\n```bash\n# BUILD + PUSH\ndagger call -m go ko-build \\\n--src tests/go/calculator/ \\\n--token=env:GITHUB_TOKEN \\\n--repo ghcr.io/stuttgart-things/machineshop \\\n--progress plain -vv\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eANSIBLE\u003c/b\u003e\u003c/summary\u003e\n\n### EXECUTE ANSIBLE\n\n```bash\ndagger call -m ansible execute \\\n--src . \\\n--playbooks tests/ansible/hello.yaml,tests/ansible/hello2.yaml \\\n-vv --progress plain\n```\n\n```bash\ndagger call -m ansible execute \\\n--requirements tests/ansible/requirements.yaml \\\n--src . \\\n--playbooks tests/ansible/hello.yaml,tests/ansible/hello2.yaml \\\n-vv --progress plain\n```\n\n```bash\nexport SSH_USER=sthings\nexport SSH_PASSWORD=\u003cREPLACEME\u003e\n\ndagger call -m ansible execute \\\n--requirements tests/ansible/requirements.yaml \\\n--src . \\\n--playbooks tests/ansible/hello.yaml,sthings.baseos.setup \\\n--inventory /home/sthings/projects/terraform/vms/sthings-runner/rke2.ini \\\n--ssh-user=env:SSH_USER \\\n--ssh-password=env:SSH_PASSWORD \\\n--parameters \"send_to_homerun=false\" \\\n-vv --progress plain\n```\n\nthe idea of this module is to create versioned collection artifcat 'on the fly' -\nthis module can work with a file structure like this:\n\n### CREATE A COLLECTION PACKAGE\n\n```bash\ndagger call --progress plain -m ansible run-collection-build-pipeline \\\n--src ansible/collections/baseos \\\n--progress plain \\\nexport --path=/tmp/ansible/output/\n```\n\n### BUILD A GITHUB RELEASE FROM FILES\n\n```bash\ndagger call --progress plain -m ansible github-release \\\n--token=env:GITHUB_TOKEN \\\n--group stuttgart-things \\\n--repo dagger  \\\n--files \"tests/test-values.yaml,tests/registry/README.md\" \\\n--notes \"test\" \\\n--tag 09.1.6 \\\n--title hello\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eHELM\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# LINT\ndagger call -m helm \\\nlint \\\n--src tests/helm/test-chart \\\n-vv --progress plain\n```\n\n```bash\n# RENDER A CHART w/ VALUES\ndagger call -m helm \\\nrender \\\n--src tests/helm/test-chart \\\n--valuesFile tests/helm/test-values.yaml \\\n-vv --progress plain\n```\n\n```bash\n# PACKAGE + EXPORT CHART AS TGZ\ndagger call -m helm \\\npackage \\\n--src tests/helm/test-chart \\\n-vv --progress plain \\\nexport --path=/tmp/chart.tgz\n```\n\n```bash\n# PUSH CHART TO REGISTRY\ndagger call -m helm \\\npush \\\n--src tests/helm/test-chart \\\n--registry ghcr.io \\\n--repository stuttgart-things \\\n--username patrick-hermann-sva \\\n--password env:GITHUB_TOKEN \\\n-vv --progress plain\n```\n\n```bash\n# RENDER HELMFILE (w/ REG AUTH)\ndagger call -m helm \\\nrender-helmfile \\\n--src tests/helm/ \\\n--registry-secret file://~/.docker/config.json\n```\n\n```bash\n# APPLY HELMFILE (w/ KUBECONFIG)\ndagger call -m helm \\\nhelmfile-operation \\\n--src tests/helm/ \\\n--kube-config file://~/.kube/labda-sthings-infra \\\n-vv --progress plain\n```\n\n```bash\n# DESTROY RELEASES w/ HELMFILE (w/ KUBECONFIG DOWNLOADED FROM VAULT)\ndagger call -m helm \\\nhelmfile-operation \\\n--operation destroy \\\n--src tests/helm/ \\\n--vault-url env:VAULT_ADDR \\\n--vault-secret-id env:VAULT_SECRET_ID \\\n--vault-app-role-id env:VAULT_ROLE_ID \\\n--secretPathKubeconfig kubeconfigs/test2/kubeconfig \\\n-vv --progress plain\n```\n\n```bash\n# DESTROY HELMFILE (w/ KUBECONFIG)\ndagger call -m helm \\\nhelmfile-operation \\\n--operation destroy \\\n--src tests/helm/ \\\n--kube-config file://~/.kube/labda-sthings-infra \\\n-vv --progress plain\n```\n\n```bash\n# MANIFEST VALIDATION w/ POLARIS\ndagger call -m helm \\\nvalidate-chart \\\n--severity danger \\\n--src tests/helm/test-chart/ \\\n-vv --progress plain \\\nexport --path=/tmp/polaris.json\n```\n\n\u003c/details\u003e\n\n## DEV\n\n\u003cdetails\u003e\u003csummary\u003eALL TASKS\u003c/summary\u003e\n\n```bash\ntask: Available tasks for this project:\n* branch:                Create branch from main\n* check:                 Run pre-commit hooks\n* commit:                Commit + push code into branch\n* create:                Create new dagger module\n* do:                    Select a task to run\n* pr:                    Create pull request into main\n* release:               push new version\n* switch-local:          Switch to local branch\n* switch-remote:         Switch to remote branch\n* test:                  Select test to run\n* test-ansible:          Test ansible functions\n* test-crossplane:       Test crossplame functions\n* test-docker:           Test docker module\n* test-gitlab:           Test gitlab functions\n* test-go:               Test go functions\n* test-helm:             Test helm functions\n* test-hugo:             Test hugo\n* test-packer:           Test packer functions\n* test-terraform:        Test terraform functions\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCREATE NEW MODULE\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# EXAMPLE MODULE\nMODULE=crossplane task create\n```\n\n\u003c/details\u003e\n\n## TESTING\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003e.env FILE\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ncat \u003c\u003cEOF \u003e .env\ngitlab_server=\"#TOBESET\"\ngitlab_project=docs # example\ngitlab_group=\"Lab/stuttgart-things/idp\" # example\ngitlab_group_escaped=\"Lab%2Fstuttgart-things%2Fidp\" # example\nEOF\n```\n\n\u003c/details\u003e\n\n## DAGGER\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eLIST FUNCTIONS\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nMODULE=golang #example\ndagger functions -m ${MODULE}/\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCREATE NEW FUNCTION\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nMODULE=example #example\ndagger init --sdk=go --source=./${MODULE} --name=${MODULE}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eINSTAL EXTERNAL DAGGER MODULE\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ndagger install github.com/purpleclay/daggerverse/golang@v0.5.0\n\n\nhttps://github.com/disaster37/dagger-library-go@v0.0.24\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eUPDATE MODULE DEPS\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ncd docker  # your module directory\n\n# Remove the cached module files\nrm -rf dagger.gen.go go.sum\n\n# Update the go.mod dependency\ngo get dagger.io/dagger@v0.19.2\ngo mod tidy\n\n# Regenerate the Dagger SDK files\ndagger develop\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCALL FUNCTION FROM LOCAL\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nMODULE=example #example\ndagger functions -m ${MODULE}\n```\n\n```bash\nMODULE=helm #example\ndagger call -m ./${MODULE} \\\nlint --source tests/test-chart/ \\\n--progress plain\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCALL FUNCTION FROM GIT\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nMODULE=golang #example\ndagger call -m github.com/stuttgart-things/dagger/${MODULE} build  \\\n--progress plain \\\n--src ./ \\\nexport --path build\n```\n\n\u003c/details\u003e\n\n## LICENSE\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eAPACHE 2.0\u003c/b\u003e\u003c/summary\u003e\n\nCopyright 2023 patrick hermann.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\u003c/details\u003e\n\n```yaml\nAuthor Information\n------------------\nPatrick Hermann, stuttgart-things 11/2024\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuttgart-things%2Fdagger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuttgart-things%2Fdagger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuttgart-things%2Fdagger/lists"}