{"id":14984785,"url":"https://github.com/devopscorner/golang-deployment","last_synced_at":"2025-04-05T23:12:07.798Z","repository":{"id":38541218,"uuid":"482490869","full_name":"devopscorner/golang-deployment","owner":"devopscorner","description":"Kubernetes Deployment for Simple Golang API (Bookstore) --- Mirror Repository from GitHub, GitLab, BitBucket, Azure DevOps to AWS CodeCommit --- GO Repository Pattern","archived":false,"fork":false,"pushed_at":"2025-03-12T12:38:29.000Z","size":1554,"stargazers_count":34,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-12T21:48:10.715Z","etag":null,"topics":["azure-devops","bitbucket","cicd","codebuild","codepipeline","container","devopscorner","docker","github","gitlab","go","golang","helm","helm-values","jenkins","jenkins-pipeline","kubernetes"],"latest_commit_sha":null,"homepage":"https://devopscorner.id","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/devopscorner.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}},"created_at":"2022-04-17T10:21:10.000Z","updated_at":"2025-03-12T12:38:33.000Z","dependencies_parsed_at":"2023-09-23T18:14:27.630Z","dependency_job_id":"40f3ca26-033f-4257-b813-b5c33d3cc56d","html_url":"https://github.com/devopscorner/golang-deployment","commit_stats":{"total_commits":2598,"total_committers":4,"mean_commits":649.5,"dds":"0.033102386451116295","last_synced_commit":"b1c55797f31ff31268a0940675451f248ce9b90c"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopscorner%2Fgolang-deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopscorner%2Fgolang-deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopscorner%2Fgolang-deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopscorner%2Fgolang-deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devopscorner","download_url":"https://codeload.github.com/devopscorner/golang-deployment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411239,"owners_count":20934653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["azure-devops","bitbucket","cicd","codebuild","codepipeline","container","devopscorner","docker","github","gitlab","go","golang","helm","helm-values","jenkins","jenkins-pipeline","kubernetes"],"created_at":"2024-09-24T14:09:40.062Z","updated_at":"2025-04-05T23:12:07.779Z","avatar_url":"https://github.com/devopscorner.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Golang Deployment\n\nKubernetes Deployment for Simple Golang API\n\n![goreport](https://goreportcard.com/badge/github.com/devopscorner/golang-deployment/src)\n![all contributors](https://img.shields.io/github/contributors/devopscorner/golang-deployment)\n![tags](https://img.shields.io/github/v/tag/devopscorner/golang-deployment?sort=semver)\n[![docker pulls](https://img.shields.io/docker/pulls/devopscorner/bookstore.svg)](https://hub.docker.com/r/devopscorner/bookstore/)\n![download all](https://img.shields.io/github/downloads/devopscorner/golang-deployment/total.svg)\n![download latest](https://img.shields.io/github/downloads/devopscorner/golang-deployment/4.1/total)\n![view](https://views.whatilearened.today/views/github/devopscorner/golang-deployment.svg)\n![clone](https://img.shields.io/badge/dynamic/json?color=success\u0026label=clone\u0026query=count\u0026url=https://github.com/devopscorner/golang-deployment/blob/master/clone.json?raw=True\u0026logo=github)\n![issues](https://img.shields.io/github/issues/devopscorner/golang-deployment)\n![pull requests](https://img.shields.io/github/issues-pr/devopscorner/golang-deployment)\n![forks](https://img.shields.io/github/forks/devopscorner/golang-deployment)\n![stars](https://img.shields.io/github/stars/devopscorner/golang-deployment)\n[![license](https://img.shields.io/github/license/devopscorner/golang-deployment)](https://img.shields.io/github/license/devopscorner/golang-deployment)\n\n---\n\n## Available Tags\n\n### Alpine\n\n| Image name | Size |\n|------------|------|\n| `devopscorner/bookstore:latest` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/latest.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=latest) ![default-latest](https://img.shields.io/static/v1?label=latest\u0026message=default\u0026color=brightgreen) ![latest](https://img.shields.io/static/v1?label=latest\u0026message=alpine\u0026color=orange) |\n| `devopscorner/bookstore:alpine` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/alpine.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=alpine) ![latest](https://img.shields.io/static/v1?label=latest\u0026message=alpine\u0026color=orange) |\n| `devopscorner/bookstore:alpine-latest` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/alpine-latest.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=alpine-latest) |\n| `devopscorner/bookstore:alpine-3.16` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/alpine-3.16.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=alpine-3.16) |\n| `devopscorner/bookstore:go1.19-alpine3.16` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19-alpine3.16.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19-alpine3.16) |\n| `devopscorner/bookstore:go1.19.5-alpine3.16` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19.5-alpine3.16.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19.5-alpine3.16) |\n| `devopscorner/bookstore:alpine-3.17` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/alpine-3.17.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=alpine-3.17) |\n| `devopscorner/bookstore:go1.19-alpine3.17` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19-alpine3.17.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19-alpine3.17) |\n| `devopscorner/bookstore:go1.19.5-alpine3.17` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19.5-alpine3.17.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19.5-alpine3.17) |\n\n\n### Previous Version - Alpine (Depreciated)\n| Image name | Size |\n|------------|------|\n| `devopscorner/bookstore:alpine-3.15` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/alpine-3.15.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=alpine-3.15) |\n| `devopscorner/bookstore:go1.19-alpine3.15` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19-alpine3.15.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19-alpine3.15) |\n| `devopscorner/bookstore:go1.19.3-alpine3.15` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.19.3-alpine3.15.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.19.3-alpine3.15) |\n| `devopscorner/bookstore:go1.18-alpine3.15` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.18-alpine3.15.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.18-alpine3.15) |\n| `devopscorner/bookstore:go1.18-alpine3.16` | [![docker image size](https://img.shields.io/docker/image-size/devopscorner/bookstore/go1.18-alpine3.16.svg?label=Image%20size\u0026logo=docker)](https://hub.docker.com/repository/docker/devopscorner/bookstore/tags?page=1\u0026ordering=last_updated\u0026name=go1.18-alpine3.16) |\n\n---\n\n## Documentation\n\n- Index Documentation, go to [this](docs/README.md) link\n- Build, Tag \u0026 Push container image to **DockerHub**, go to [this](docs/container-bookstore-dockerhub.md) link\n- Build, Tag \u0026 Push container image to **Amazon ECR (Elastic Container Registry)**, go to [this](docs/container-bookstore-ecr.md) link\n- Workflow CI/CD Pipeline, go to [this](docs/workflow-cicd-bookstore-pipeline.md) link\n- GitOps \u0026 GitOps DevSecOps Flow (Azure DevOps Pipeline), go to [this](docs/gitops-devsecops-flow-azure.md) link\n- Deployments:\n  - **ArgoCD**, detail [here](docs/deployment-argocd.md) link\n  - **AWS CloudFormation**, detail [here](docs/deployment-aws-cloudformation.md) link\n  - **AWS Developer Tools** (AWS CodeCommit, AWS CodeBuild \u0026 AWS CodePipeline), detail [here](docs/deployment-aws-developer-tools.md) link\n  - **Amazon CodeCatalyst Pipeline**, detail [here](docs/deployment-amazon-codecatalyst.md) link\n  - **Azure DevOps Pipeline**, detail [here](docs/deployment-azure-devops.md) link\n  - **Bitbucket Pipeline**, detail [here](docs/deployment-bitbucket.md) link\n  - **CircleCI Pipeline**, detail [here](docs/deployment-circleci.md) link\n  - **DroneCI Pipeline**, detail [here](docs/deployment-droneci.md) link\n  - **GitHub Action**, detail [here](docs/deployment-github.md) link\n  - **GitLab CI/CD**, detail [here](docs/deployment-gitlab.md) link\n  - **Jenkins CI \u0026 Spinnaker CD**, detail [here](docs/deployment-jenkins-spinnaker.md) link\n  - **Jenkins CI/CD**, detail [here](docs/deployment-jenkins.md) link\n  - **OpenShift CI/CD**, detail [here](docs/deployment-openshift.md) link\n  - **SemaphoreCI**, detail [here](docs/deployment-semaphoreci.md) link\n  - **Spinnaker CD**, detail [here](docs/deployment-spinnaker.md) link\n  - **Terraform AWS CodeBuild, AWS CodePipeline \u0026 Amazon SNS**, detail [here](docs/deployment-terraform.md) link\n  - **TravisCI**, detail [here](docs/deployment-travisci.md) link\n\n\n## GO Repository Pattern\n\n- Folder Structure\n  ```\n      .\n      ├── .env\n      ├── .env.example\n      ├── config\n      │   ├── config.go\n      │   ├── config_test.go\n      │   └── const.go\n      ├── controller\n      │   ├── book_controller.go\n      │   ├── book_controller_test.go\n      │   ├── login_controller.go\n      │   └── login_controller_test.go\n      ├── driver\n      │   ├── db.go\n      │   ├── dynamo.go\n      │   ├── mysql.go\n      │   ├── psql.go\n      │   └── sqlite.go\n      ├── go-bookstore.db\n      ├── go.mod\n      ├── go.sum\n      ├── main.go\n      ├── main_test.go\n      ├── middleware\n      │   ├── auth_middleware.go\n      │   └── auth_middleware_test.go\n      ├── migrate_book.go.example\n      ├── migrate_book_dynamo.go.example\n      ├── model\n      │   └── book.go\n      ├── repository\n      │   └── book_repository.go\n      ├── routes\n      │   └── book_routes.go\n      └── view\n          ├── book_view.go\n          ├── error_view.go\n          └── login_view.go\n\n      9 directories, 29 files\n  ```\n\n- Environment Variables (Default)\n  ```\n  GIN_MODE=release\n  APP_URL=http://localhost\n  APP_PORT=8080\n  DB_CONNECTION=sqlite\n  DB_REGION=ap-southeast-1\n  DB_HOST=localhost\n  DB_PORT=\n  DB_DATABASE=go-bookstore.db\n  DB_USERNAME=root\n  DB_PASSWORD=\n  JWT_AUTH_USERNAME=devopscorner\n  JWT_AUTH_PASSWORD=DevOpsCorner@2023\n  JWT_SECRET=s3cr3t\n  ```\n\n- Multi Driver Connection\n  ```\n  DB_CONNECTION=sqlite\n  ---\n  Available for:\n  - sqlite\n  - mysql\n  - postgres\n  - dynamo\n  ```\n\n- DynamoDB Connection\n  ```\n  DB_CONNECTION=dynamo\n  ---\n  DB_DATABASE --\u003e Dynamo Table\n  DB_REGION   --\u003e Dynamo Region\n  ```\n\n## Reproduce Testing\n\n- RESTful API Testing, go to [this](docs/test-restful-api.md) link\n\n## Tested Environment\n\n### Versioning\n\n- Docker version\n\n  ```\n  docker version\n\n  Client:\n    Cloud integration: v1.0.22\n    Version:           20.10.17-rd\n    API version:       1.41\n    Go version:        go1.17.11\n    Git commit:        c2e4e01\n    Built:             Fri Jul 22 18:31:17 2022\n    OS/Arch:           darwin/amd64\n    Context:           default\n    Experimental:      true\n  ```\n\n- Docker-Compose version\n\n  ```\n  docker-compose -v\n  ---\n  Docker Compose version v2.11.1\n  ```\n\n- AWS Cli\n\n  ```\n  aws --version\n  ---\n  aws-cli/2.8.7 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off\n  ```\n\n- Terraform Cli\n\n  ```\n  terraform version\n  ---\n  Terraform v1.3.5\n  on darwin_amd64\n  - provider registry.terraform.io/hashicorp/aws v3.74.3\n  - provider registry.terraform.io/hashicorp/local v2.1.0\n  - provider registry.terraform.io/hashicorp/null v3.1.0\n  - provider registry.terraform.io/hashicorp/random v3.1.0\n  - provider registry.terraform.io/hashicorp/time v0.7.2\n  ```\n\n- Terraform Environment Cli\n\n  ```\n  tfenv -v\n  ---\n  tfenv 2.2.2\n  ```\n\n- Golang Version Manager (GVM)\n\n  ```\n  gvm version\n  ---\n  Go Version Manager v1.0.22 installed at /Users/devopscorner/.gvm\n  ```\n\n- Golang Version\n  ```\n  go version\n  ---\n  go version go1.19.6 darwin/arm64\n  ```\n\n## Security Check\n\nMake sure that you didn't push sensitive information in this repository\n\n- [ ] AWS Credentials (AWS_ACCESS_KEY, AWS_SECRET_KEY)\n- [ ] AWS Account ID\n- [ ] AWS Resources ARN\n- [ ] Username \u0026 Password\n- [ ] Private (id_rsa) \u0026 Public Key (id_rsa.pub)\n- [ ] DNS Zone ID\n- [ ] APP \u0026 API Key\n\n## Copyright\n\n- Author: **Dwi Fahni Denni (@zeroc0d3)**\n- Vendor: **DevOps Corner Indonesia (devopscorner.id)**\n- License: **Apache v2**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopscorner%2Fgolang-deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevopscorner%2Fgolang-deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopscorner%2Fgolang-deployment/lists"}