Skip to content

Commit

Permalink
Action create must not check db connection (#31)
Browse files Browse the repository at this point in the history
* 30 - Action create must not check db connection
  • Loading branch information
raoptimus authored Dec 19, 2023
1 parent 34b3c31 commit 0bb95d4
Show file tree
Hide file tree
Showing 138 changed files with 7,656 additions and 3,238 deletions.
6 changes: 3 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
**
!cmd
!console
!iofile
!migrator
!internal
!pkg
!fixtures
!go.mod
!go.sum
!Makefile
10 changes: 6 additions & 4 deletions .env
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
GO_IMAGE_VERSION="1.21"
GO_LINT_VERSION="1.55.2"
POSTGRES_DB=docker
POSTGRES_USER=docker
POSTGRES_PASSWORD=docker
POSTGRES_DSN=postgres://docker:docker@postgres:5432/docker?sslmode=disable
POSTGRES_MIGRATIONS_PATH=./db/postgresMigration/test_migrates
POSTGRES_MIGRATIONS_PATH=./fixtures/postgres

CLICKHOUSE_DSN=clickhouse://default:@clickhouse:9000/docker?sslmode=disable&compress=true&debug=false
CLICKHOUSE_MIGRATIONS_PATH=./db/clickhouseMigration/test_migrates
CLICKHOUSE_MIGRATIONS_PATH=./fixtures/clickhouse
CLICKHOUSE_CLUSTER_DSN1=clickhouse://default:@clickhouse1:9000/docker?sslmode=disable&compress=true&debug=false
CLICKHOUSE_CLUSTER_DSN2=clickhouse://default:@clickhouse2:9000/docker?sslmode=disable&compress=true&debug=false
CLICKHOUSE_CLUSTER_NAME=test_cluster
CLICKHOUSE_CLUSTER_MIGRATIONS_PATH=./db/clickhouseMigration/test_cluster_migrates
CLICKHOUSE_CLUSTER_MIGRATIONS_PATH=./fixtures/clickhouse_cluster

MYSQL_DSN=mysql://docker:docker@tcp(mysql:3306)/docker
MYSQL_ROOT_PASSWORD=docker-pw
MYSQL_PASSWORD=docker
MYSQL_USER=docker
MYSQL_DATABASE=docker
MYSQL_MIGRATIONS_PATH=./db/mysqlMigration/test_migrates
MYSQL_MIGRATIONS_PATH=./fixtures//mysql
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
**/mock* -diff
**/*.pb.go -diff
56 changes: 34 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,53 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v1

- name: Cache go mods
uses: actions/cache@v2
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
uses: actions/checkout@v3
#
# - name: Cache go mods
# uses: actions/cache@v3
# with:
# path: |
# ~/.cache/go-build
# ~/go/pkg/mod
# key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}

- name: Pull containers
run: docker-compose -f "docker-compose.yml" pull

- name: Cache containers
uses: satackey/[email protected]
continue-on-error: true

- name: Start containers
run: docker-compose -f "docker-compose.yml" up -d --build

- name: Sleep for 5 seconds
uses: jakejarvis/wait-action@master
with:
time: '5s'

- name: Run ps
run: docker-compose -f "docker-compose.yml" ps

- name: Run logs
run: docker-compose -f "docker-compose.yml" logs

- name: Run tests
run: docker-compose -f "docker-compose.yml" exec -T app make test
- name: Run lint
run: docker-compose -f "docker-compose.yml" exec -T app make lint

- name: Run unit tests
run: docker-compose -f "docker-compose.yml" exec -T app make test-unit

- name: Sleep for 10 seconds
uses: jakejarvis/wait-action@master
with:
time: '10s'

- name: Run integration tests
run: docker-compose -f "docker-compose.yml" exec -T app make test-integration

# - name: Publish Test Report
# uses: mikepenz/action-junit-report@v4
# if: success() || failure()
# with:
# report_paths: '**/.report/*.xml'

# - name: Test & publish code coverage
# uses: paambaati/[email protected]
# with:
# coverageLocations: |
# ${{github.workspace}}/.report/*.json:cobertura

- name: Stop containers
if: always()
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.idea
.build
.coverage
build.sh
.report
220 changes: 220 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
# $ golangci-lint run --config=~/.golangci.yml ./... > lint.txt

run:
# timeout for analysis, e.g. 30s, 5m, default is 1m
timeout: 7m

# exit code when at least one issue was found, default is 1
issues-exit-code: 1

# include test files or not, default is true
tests: false

# list of build tags, all linters use it. Default is empty list.
# build-tags:
# - mytag

# which dirs to skip: issues from them won't be reported;
# can use regexp here: generated.*, regexp is applied on full path;
# default value is empty list, but default dirs are skipped independently
# from this option's value (see skip-dirs-use-default).
# "/" will be replaced by current OS file path separator to properly work
# on Windows.
skip-dirs:
- doc
- docker

# default is true. Enables skipping of directories:
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
skip-dirs-use-default: true

# which files to skip: they will be analyzed, but issues from them
# won't be reported. Default value is empty list, but there is
# no need to include all autogenerated files, we confidently recognize
# autogenerated files. If it's not please let us know.
# "/" will be replaced by current OS file path separator to properly work
# on Windows.
skip-files:
- \.pb\.go$
- \.pb\.gw\.go$

# - ".*\\.my\\.go$"
# - lib/bad.go

# by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules":
# If invoked with -mod=readonly, the go command is disallowed from the implicit
# automatic updating of go.mod described above. Instead, it fails when any changes
# to go.mod are needed. This setting is most useful to check that go.mod does
# not need updates, such as in a continuous integration and testing system.
# If invoked with -mod=vendor, the go command assumes that the vendor
# directory holds the correct copies of dependencies and ignores
# the dependency descriptions in go.mod.
# modules-download-mode: readonly|vendor|mod

# Allow multiple parallel golangci-lint instances running.
# If false (default) - golangci-lint acquires file lock on start.
allow-parallel-runners: true

linters:
enable:
# Enabled by default linters:
- errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
- gosimple # Linter for Go source code that specializes in simplifying code
- govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
- ineffassign # Detects when assignments to existing variables are not used
- staticcheck # It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary. The author of staticcheck doesn't support or approve the use of staticcheck as a library inside golangci-lint.
- typecheck # Like the front-end of a Go compiler, parses and type-checks Go code
- unused # Checks Go code for unused constants, variables, functions and types

# Disabled by default linters:
- bodyclose # checks whether HTTP response body is closed successfully
- durationcheck # : check for two durations multiplied together [fast: false, auto-fix: false]
- errchkjson # Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occasions, where the check for the returned error can be omitted.
- errname # Checks that sentinel errors are prefixed with the Err and error types are suffixed with the Error.
- errorlint # errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13.
- exportloopref # checks for pointers to enclosing loop variables
- forcetypeassert # finds forced type assertions
- goconst # Finds repeated strings that could be replaced by a constant
- gocritic # Provides diagnostics that check for bugs, performance and style issues.
- goimports # In addition to fixing imports, goimports also formats your code in the same style as gofmt.
- goerr113 # Golang linter to check the errors handling expressions
- gomnd # An analyzer to detect magic numbers.
- gosec # Inspects source code for security problems
- ireturn # Accept Interfaces, Return Concrete Types
- importas # Enforces consistent import aliases
- makezero # Finds slice declarations with non-zero initial length
- nakedret # Finds naked returns in functions greater than a specified function length
- nestif # Reports deeply nested if statements
- nilerr # Finds the code that returns nil even if it checks that the error is not nil.
- nolintlint # Reports ill-formed or insufficient nolint directives
- prealloc # Finds slice declarations that could potentially be pre-allocated
- predeclared # find code that shadows one of Go's predeclared identifiers
- promlinter # Check Prometheus metrics naming via promlint
- revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.
- stylecheck # Stylecheck is a replacement for golint
- misspell # Finds commonly misspelled English words in comments
- unparam # Reports unused function parameters
- unconvert # Remove unnecessary type conversions
- whitespace # Tool for detection of leading and trailing whitespace
disable:
- godot # Check if comments end in a period
- asasalint # check for pass []any as any in variadic func(...any)
- asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers
- bidichk # Checks for dangerous unicode character sequences
- containedctx # containedctx is a linter that detects struct contained context.Context field
- contextcheck # check the function whether use a non-inherited context
- cyclop # checks function and package cyclomatic complexity
- decorder # check declaration order and count of types, constants, variables and functions
- depguard # Go linter that checks if package imports are in a list of acceptable packages
- dogsled # Checks assignments with too many blank identifiers (e.g. x, , , _, := f())
- execinquery # execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds
- exhaustive # check exhaustiveness of enum switch statements
- exhaustruct # Checks if all structure fields are initialized
- forbidigo # Forbids identifiers
- funlen # Tool for detection of long functions
- gci # Gci controls golang package import order and makes it always deterministic.
- gochecknoglobals # check that no global variables exist
- gochecknoinits # Checks that no init functions are present in Go code
- gocognit # Computes and checks the cognitive complexity of functions
- gocyclo # Computes and checks the cyclomatic complexity of functions
- godox # Tool for detection of FIXME, TODO and other comment keywords
- goheader # Checks is file header matches to pattern
- gofmt # Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification
- gofumpt # Gofumpt checks whether code was gofumpt-ed.
- gomoddirectives # Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.
- gomodguard # Allow and block list linter for direct Go module dependencies. This is different from depguard where there are different block types for example version constraints and module recommendations.
- goprintffuncname # Checks that printf-like functions are named with f at the end
- grouper # An analyzer to analyze expression groups.
- interfacebloat # A linter that checks the number of methods inside an interface.
- lll # Reports long lines
- maintidx # maintidx measures the maintainability index of each function.
- nilnil # Checks that there is no simultaneous return of nil error and an invalid value.
- nlreturn # nlreturn checks for a new line before return and branch statements to increase code clarity
- noctx # noctx finds sending http request without context.Context
- nonamedreturns # Reports all named returns
- nosprintfhostport # Checks for misuse of Sprintf to construct a host with port in a URL.
- paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test
- reassign # Checks that package variables are not reassigned
- rowserrcheck # checks whether Err of rows is checked successfully
- sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed.
- tagliatelle # Checks the struct tags.
- tenv # tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17
- testpackage # linter that makes you use a separate _test package
- thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers
- tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes
- usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library.
- varnamelen # checks that the length of a variable's name matches its scope
- wastedassign # wastedassign finds wasted assignment statements.
- wrapcheck # Checks that errors returned from external packages are wrapped
- wsl # Whitespace Linter - Forces you to use empty lines!

output:
# colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions
# default is "colored-line-number"
format: colored-line-number

# print lines of code with issue, default is true
print-issued-lines: false

# print linter name in the end of issue text, default is true
print-linter-name: true

# make issues output unique by line, default is true
# uniq-by-line: true

# add a prefix to the output file references; default is no prefix
# path-prefix: ""

# sorts results by: filepath, line and column
sort-results: false

# all available settings of specific linters
linters-settings:
govet:
check-shadowing: true

golint:
min-confidence: 0

dupl:
threshold: 100

goconst:
min-len: 2
min-occurrences: 2

errcheck:
exclude-functions:
- io/ioutil.ReadFile
- io.Copy(*bytes.Buffer)
- io.Copy(os.Stdout)
- (io.ReadCloser).Close

gocritic:
# Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks.
# Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags".
disabled-checks:
- importShadow
- emptyStringTest
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style

revive:
rules:
- name: package-comments
severity: warning
disabled: true

issues:
exclude-use-default: true
exclude-rules:
- linters:
- govet
text: "declaration of \"err\" shadows declaration"
- linters:
- goerr113
text: "do not define dynamic errors, use wrapped static errors instead"
2 changes: 2 additions & 0 deletions .mockery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
disable-version-string: True
with-expecter: True
23 changes: 23 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ARG GO_IMAGE_VERSION
FROM golang:${GO_IMAGE_VERSION}-alpine
RUN apk add --no-cache \
tzdata \
ca-certificates \
make \
build-base \
git \
bash \
file \
jq

RUN export BINDIR=/go/bin \
&& export PATH=$PATH:$GOPATH/bin

#RUN go install github.com/boumenot/gocover-cobertura@latest \
# && go install github.com/jstemmer/go-junit-report@latest

ARG GO_LINT_VERSION
RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v${GO_LINT_VERSION}

RUN go env -w GOFLAGS=-buildvcs=false && \
go env -w CGO_ENABLED=0
Loading

0 comments on commit 0bb95d4

Please sign in to comment.