Skip to content

Instantly share code, notes, and snippets.

View droppoint's full-sized avatar

Aleksei Partilov droppoint

  • SberMarket
  • Krasnogorsk, Russia
View GitHub Profile
@droppoint
droppoint / gist:aab83eb958686d04a9099070fb51dbbc
Created March 12, 2020 12:04
Example of folder structure for project
/
├── cmd
├── deployments
├── internal
├── migrations
├── specs
├── tests
├── go.mod
├── go.sum
├── Dockerfile
@droppoint
droppoint / pre-commit-config.yaml
Last active March 12, 2020 11:24
Example of pre-commit config
repos:
- repo: https://github.com/golangci/golangci-lint
rev: v1.23.7
hooks:
- id: golangci-lint
@droppoint
droppoint / .golangci.yml
Created March 12, 2020 11:20
Example of golangci-lint config
run:
tests: false
# Возможно отключать все линтеры на определенных папках и файлах
skip-dirs:
- generated
skip-files:
- ".*easyjson\\.go$"
output:
print-issued-lines: false
@droppoint
droppoint / Makefile
Created March 12, 2020 11:18
Example of makefile for local development
# Запустить тесты проекта
# Перед запуском тестов разворачивается БД и на нее накатываются миграции
.PHONY: test
test: dev-migrate
go test -cover -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
# Развернуть все dev окружение
.PHONY: dev-server
dev-server:
@droppoint
droppoint / docker-compose.yml
Created March 12, 2020 11:16
Example of docker-compose file for microservice
version: "3.7"
services:
# Контейнер с dev-версией приложения
gift-certificates-dev:
container_name: gift-certificates-dev
# Инструкция о том что контейнер нужно пересобирать, а не делать pull из docker-репозитория
build:
context: ../
# В случае если Dockerfile поддерживает multistage, можно указать на каком месте в сборке
# нужно остановиться. В этом случае нужно остановиться на этапе сборки бинарного файла,
@droppoint
droppoint / example_down.sql
Created March 12, 2020 10:25
Пример миграции "вниз"
BEGIN;
DROP SEQUENCE public.ui_users_id_seq;
DROP TABLE ui_users;
COMMIT;
@droppoint
droppoint / example_up.sql
Created March 12, 2020 10:22
Example of "up" transaction
BEGIN;
CREATE SEQUENCE ui_users_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
CREATE TABLE ui_users (
id INT NOT NULL,
username VARCHAR(180) NOT NULL,
username_canonical VARCHAR(180) NOT NULL,
email VARCHAR(180) NOT NULL,
email_canonical VARCHAR(180) NOT NULL,
@droppoint
droppoint / gist:909b975e5a1bd32cd154816c169a5bf1
Created March 12, 2020 10:19
migrations folder structure
migrations
├── 00001_init.down.sql
├── 00001_init.up.sql
├── 00002_create_ui_users_table.down.sql
├── 00002_create_ui_users_table.up.sql
...
@droppoint
droppoint / Dockerfile
Created March 12, 2020 10:14
Docker image for microservice
FROM gotools.docker.lamoda.ru/base-mod:1.14.0 as build
ENV GOOS linux
ENV GOARCH amd64
ENV CGO_ENABLED 0
ENV GO111MODULE on
WORKDIR /go/src/stash.lamoda.ru/ecom/discounts.endpoint
# We want to populate the module cache based on the go.{mod,sum} files.
COPY go.mod .
@droppoint
droppoint / Dockerfile
Created March 12, 2020 10:11
Base docker image for golang projects
ARG version
FROM golang:$version
ENV GOOS linux
ENV GOARCH amd64
ENV CGO_ENABLED 0
ENV GO111MODULE on
RUN go get github.com/axw/gocov/gocov && \
go get github.com/AlekSi/gocov-xml@d2f6da892a0d5e0b587526abf51349ad654ade51 && \