{"id":21327716,"url":"https://github.com/mostafa-wael/goviolin","last_synced_at":"2026-03-07T06:03:07.156Z","repository":{"id":112397900,"uuid":"495606760","full_name":"Mostafa-wael/GoViolin","owner":"Mostafa-wael","description":"Complete deployment and pipeline for the  GoViolin opensource project","archived":false,"fork":false,"pushed_at":"2022-06-26T20:32:03.000Z","size":50542,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-01T22:06:38.760Z","etag":null,"topics":["devops","docker","docker-compose","golang","helm","jenkins","kubernetes","terraform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mostafa-wael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-05-23T23:41:23.000Z","updated_at":"2024-12-05T17:18:41.000Z","dependencies_parsed_at":"2023-05-14T12:00:32.308Z","dependency_job_id":null,"html_url":"https://github.com/Mostafa-wael/GoViolin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mostafa-wael/GoViolin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mostafa-wael%2FGoViolin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mostafa-wael%2FGoViolin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mostafa-wael%2FGoViolin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mostafa-wael%2FGoViolin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mostafa-wael","download_url":"https://codeload.github.com/Mostafa-wael/GoViolin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mostafa-wael%2FGoViolin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30208802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: 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":["devops","docker","docker-compose","golang","helm","jenkins","kubernetes","terraform"],"created_at":"2024-11-21T21:19:14.649Z","updated_at":"2026-03-07T06:03:07.148Z","avatar_url":"https://github.com/Mostafa-wael.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"GoViolin is a helpful way to practice violin written in Go. Listen to any scale or arpeggio with a few mouse clicks. Play along to improve your intonation.\n# Use GO Locally \n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832396-30f2b8cd-1963-4bcb-9d90-b8ee393b24ef.png\" alt=\"drawing\" width=\"400\"/\u003e\n\nBuild, run and test Go locally:\n- Initialize the module: \n  - `go mod init github.com/Rosalita/GoViolin`\n  - `go mod tidy`\n  - `go mod vendor`\n- Build a runnable binary: `go build -o runnable.o .`\n- Run the binary: `./runnable.o`\n- Run the tests: `go test ./...`\n--- \n# Docker\n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832426-b35052ce-4c90-45c5-a70d-82ba92a398a5.png\" alt=\"drawing\" width=\"400\"/\u003e\n\nThe Docker image is based on the concept of multi-stage build. We use a builder stage to build the runnable binary and another light weight stage to run it. The final image using this approach is very small; less than the original image by a factor of 5!\n- Build the Docker image: `docker build -t mostafaw/goviolin:latest .`\n- Run the Docker image: `docker run -p 3000:8080 mostafaw/goviolin:latest`\n---\n# Docker Compose\n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832455-761edfbb-5267-4f6c-8137-bb9151812c8f.png\" alt=\"drawing\" width=\"400\"/\u003e\n\nWe have used Docker compose here to encapsulate the parameters passed during running the docker image. \n- Docker compose: `docker-compose -f docker-compose.yaml up`\n---\n# Jenkins\n![image](https://user-images.githubusercontent.com/56788883/175832347-652d700b-16e1-4b43-8fc2-30f39a86a287.png)\n\nThe pipeline supports three stages: Run the tests, Build the image and Push the image to Docker Hub. It also supports sending emails with the pipeline status. The pipeline can be easily configured by specifying parameters when running it. \n- Run Jenkins: `sudo systemctl start jenkins` on port `8080`\n- Get status(e.g.: password) from Jenkins: `sudo systemctl status jenkins` \n- Stop Jenkins: `sudo systemctl stop jenkins` \n---\n# Kubernetes\n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832473-9b8473f8-4dd8-42f3-ac85-13f7273fba88.png\" alt=\"drawing\" width=\"1000\"/\u003e\n\nDeploy \u0026 access a service in kubernetes:\n- Start the local cluster: `minikube start`\n- Create the deployment  `kubectl apply -f deployment.yaml `\n- Create the service: `kubectl apply -f service.yaml`\n- Get the URL: `minikube service goviolin-service --url`\n- Expose the port (optional): `minikube tunnel`\n\n---\n# Helm\n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832506-9e6be881-ec68-4600-b1c6-12d6debc6c40.png\" alt=\"drawing\" width=\"400\"/\u003e\n\nUse helm charts to manage k8s manifests \n- Install the chart: `helm install goviolin-chart  ./goviolin-chart`\n- Update the chart values: `helm upgrade --install goviolin-chart  ./goviolin-chart`\n- Get the URL: `minikube service goviolin-chart --url`\n---\n# Provisioning using Terraform\n\u003cimg src=\"https://user-images.githubusercontent.com/56788883/175832510-f3611654-3704-43d5-94c3-05cc89923891.png\" alt=\"drawing\" width=\"1000\"/\u003e\n\n- Deploy the infrastructure: `terraform apply`\n- Destroy the infrastructure: `terraform destroy`\n- Stop the instance: `./stop-connection.sh GoViolin`\n- Start the instance: `./start-connection.sh GoViolin`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmostafa-wael%2Fgoviolin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmostafa-wael%2Fgoviolin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmostafa-wael%2Fgoviolin/lists"}