add openapi
This commit is contained in:
parent
5eb0e931b2
commit
e32727bf7f
6
.dockerignore
Normal file
6
.dockerignore
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.git/
|
||||||
|
.idea/
|
||||||
|
.cache/
|
||||||
|
Makefile
|
||||||
|
quiz.yaml
|
||||||
|
README.md
|
66
.gitlab-ci.yml
Normal file
66
.gitlab-ci.yml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
include:
|
||||||
|
- project: "devops/pena-continuous-integration"
|
||||||
|
file: "/templates/docker/build-template.gitlab-ci.yml"
|
||||||
|
- project: "devops/pena-continuous-integration"
|
||||||
|
file: "/templates/docker/deploy-template.gitlab-ci.yml"
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
build-app:
|
||||||
|
stage: build
|
||||||
|
extends: .build_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH || $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||||
|
script:
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-core:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-core:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
|
||||||
|
build-storer:
|
||||||
|
stage: build
|
||||||
|
extends: .build_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH || $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||||
|
script:
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-storer:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR -f ./storer/Dockerfile
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-storer:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
|
||||||
|
|
||||||
|
build-worker:
|
||||||
|
stage: build
|
||||||
|
extends: .build_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH || $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||||
|
script:
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-worker:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR -f ./worker/Dockerfile
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-worker:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
|
||||||
|
build-answerer:
|
||||||
|
stage: build
|
||||||
|
extends: .build_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH || $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||||
|
script:
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-answerer:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR -f ./answerer/Dockerfile
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH-answerer:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
|
||||||
|
deploy-staging:
|
||||||
|
stage: deploy
|
||||||
|
tags:
|
||||||
|
- staging
|
||||||
|
extends: .deploy_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH"
|
||||||
|
after_script:
|
||||||
|
- ls
|
||||||
|
|
||||||
|
deploy-prod:
|
||||||
|
stage: deploy
|
||||||
|
tags:
|
||||||
|
- prod
|
||||||
|
extends: .deploy_template
|
||||||
|
rules:
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||||
|
after_script:
|
||||||
|
- ls
|
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
FROM golang:alpine as build
|
||||||
|
WORKDIR /app
|
||||||
|
RUN apk add git
|
||||||
|
COPY . .
|
||||||
|
ARG GITLAB_TOKEN
|
||||||
|
ENV GOPRIVATE=penahub.gitlab.yandexcloud.net/backend/penahub_common
|
||||||
|
RUN git config --global url."https://buildToken:glpat-axA8ttckx3aPf_xd2Dym@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
||||||
|
RUN go mod download
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o core
|
||||||
|
|
||||||
|
FROM alpine as prod
|
||||||
|
COPY --from=build /app/core .
|
||||||
|
COPY --from=build /app/dal/schema /dal/schema
|
||||||
|
EXPOSE 1488
|
||||||
|
ENV IS_PROD_LOG=false
|
||||||
|
ENV IS_PROD=false
|
||||||
|
ENV PORT=1488
|
||||||
|
ENV PG_CRED="host=postgres port=5432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"
|
||||||
|
CMD ["/core"]
|
64
Makefile
Normal file
64
Makefile
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
GOCMD=go
|
||||||
|
GOBUILD=$(GOCMD) build
|
||||||
|
GOCLEAN=$(GOCMD) clean
|
||||||
|
GOTEST=$(GOCMD) test
|
||||||
|
COMMIT?=$(shell git rev-parse --short HEAD)
|
||||||
|
BUILD_TIME?=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
||||||
|
GOOS?=linux
|
||||||
|
GOARCH?=amd64
|
||||||
|
DOCKER_REGISTRY=yourRegistryHost:<port>
|
||||||
|
BINARY_NAME=$(shell basename `pwd`)
|
||||||
|
PORT?=1488
|
||||||
|
SHELL = /bin/bash
|
||||||
|
LDFLAGS=-s -w -X github.com/skeris/appInit/version.Release=${shell git describe --tags --abbrev=0} \
|
||||||
|
-X github.com/skeris/appInit/version.Commit=${COMMIT} -X github.com/skeris/appInit/version.BuildTime=${BUILD_TIME}
|
||||||
|
|
||||||
|
all: compile run
|
||||||
|
clean:
|
||||||
|
rm -f $(BINARY_NAME)
|
||||||
|
rm -f ./worker/worker
|
||||||
|
compile: clean
|
||||||
|
CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} $(GOBUILD) -ldflags "${LDFLAGS}" -o ${BINARY_NAME}
|
||||||
|
CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} $(GOBUILD) -ldflags "${LDFLAGS}" -o ./worker/worker
|
||||||
|
run: compile
|
||||||
|
./$(BINARY_NAME)
|
||||||
|
container: compile
|
||||||
|
docker build -t $(BINARY_NAME):${shell git describe --tags --abbrev=0} .
|
||||||
|
docker build -t $(BINARY_NAME)-worker:${shell git describe --tags --abbrev=0} ./worker
|
||||||
|
docker-push: container
|
||||||
|
docker tag $(BINARY_NAME) $(DOCKER_REGISTRY)/$(BINARY_NAME)
|
||||||
|
docker tag $(BINARY_NAME)-worker $(DOCKER_REGISTRY)/$(BINARY_NAME)-worker
|
||||||
|
pull:
|
||||||
|
docker pull $(DOCKER_REGISTRY)/$(BINARY_NAME)
|
||||||
|
docker pull $(DOCKER_REGISTRY)/$(BINARY_NAME)-worker
|
||||||
|
docker tag $(DOCKER_REGISTRY)/$(BINARY_NAME) $(BINARY_NAME)
|
||||||
|
docker tag $(DOCKER_REGISTRY)/$(BINARY_NAME)-worker $(BINARY_NAME)-worker
|
||||||
|
run-container:
|
||||||
|
docker run --rm --name squiz --network host -p 1488:1488 $(BINARY_NAME):latest
|
||||||
|
test:
|
||||||
|
$(GOTEST) -v -race ./...
|
||||||
|
commit-all:
|
||||||
|
git add -A
|
||||||
|
git commit -a
|
||||||
|
git push
|
||||||
|
push-new-release: commit-all
|
||||||
|
git tag ${shell git describe --tags --abbrev=0 | awk -F '.' '{print "v"$$1+1".0.0"}'}
|
||||||
|
git push --tags
|
||||||
|
push-new-feature: commit-all
|
||||||
|
git tag ${shell git describe --tags --abbrev=0 | awk -F '.' '{print $$1"."$$2+1".0"}'}
|
||||||
|
git push --tags
|
||||||
|
push-new-state: commit-all
|
||||||
|
git tag ${shell git describe --tags --abbrev=0 | awk -F '.' '{print $$1"."$$2"."$$3+1}'}
|
||||||
|
git push --tags
|
||||||
|
benchmark:
|
||||||
|
mv ./tests/new.txt ./tests/old.txt
|
||||||
|
go test -run=NONE -bench=. -benchmem ./tests -test.short > ./tests/new.txt
|
||||||
|
benchstat -html ./tests/old.txt ./tests/new.txt > benchmark.html
|
||||||
|
|
||||||
|
# show full set of messages
|
||||||
|
test-in-docker-debug:
|
||||||
|
docker-compose -f deployments/test/docker-compose.yaml up --build --force-recreate
|
||||||
|
|
||||||
|
# show only relevant messages
|
||||||
|
test-in-docker:
|
||||||
|
docker-compose -f deployments/test/docker-compose.yaml up --build --force-recreate --exit-code-from test-squiz 2>/dev/null | grep ^test-squiz
|
7
TestsDockerfile
Normal file
7
TestsDockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM golang:alpine
|
||||||
|
WORKDIR /app
|
||||||
|
RUN apk add git
|
||||||
|
COPY . .
|
||||||
|
RUN git config --global url."https://forgomod:glpat-uzHiaztQGzR1BL8RiQTK@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
||||||
|
RUN apk add --no-cache git && go mod download
|
||||||
|
CMD ["go", "test", "./tests"]
|
1210
openapi.yaml
1210
openapi.yaml
File diff suppressed because it is too large
Load Diff
21
server.crt
Normal file
21
server.crt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDazCCAlOgAwIBAgIUTZYPqWpnMp0w/hf7OjuNm0FwanYwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
|
||||||
|
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMjAxMjUwMjU2MzBaFw0yMzAx
|
||||||
|
MjUwMjU2MzBaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
|
||||||
|
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
|
||||||
|
AQUAA4IBDwAwggEKAoIBAQCl/UGvlDrkg9Mwqj2rvGkv9jvZ8Z8ZZe6ZHb/KR56Y
|
||||||
|
jgyIKow+bqxpduLXclezaUdG9XFQaR+FD1nK5lW6oUrX8Vcd59ImKBV+cCfMwjCH
|
||||||
|
sYrjheTQyoFY/o3+7bt8nyjnmYG0Z0dQqXSquHngKeoiVqkNGzZHSMLuRuRZFHu/
|
||||||
|
SUj+7WOJsraIWK/8yt0dxjhGA/TMK4MlI2tdJ2vEaP9QPIBoWSGIpEa1myjV9XoG
|
||||||
|
qOtUQzjeRuMHG8Wp+4JzIsNdl1Gg+N3dBEQSExyVv0cLAJouKy2zmR2Eio3nXhWW
|
||||||
|
2kq+x3gjPlf8RDZJz+x/SsDmWvgGOcGTWcSLOdn/fa7VAgMBAAGjUzBRMB0GA1Ud
|
||||||
|
DgQWBBS315REqIh/ACzxxAK3EiZ1zTNSWDAfBgNVHSMEGDAWgBS315REqIh/ACzx
|
||||||
|
xAK3EiZ1zTNSWDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBW
|
||||||
|
pxle1BCaYtVRwT/05XXBFRfB5Mog8ip6JvWpWcixwx7qsCIsZd4VN2tenuvSQFTr
|
||||||
|
o9c2PCnU4fJihIiNZqX9X3UzH4WFmkqv1FMeDPPplzs4yxLxBjDDFmGBXLotZYpN
|
||||||
|
kjq/G1OYdbCssv1oz7S6flqQ1YyzW/Cwx/jkz15uUiqZhDPGj+HX4Fcdl2h3TF9Z
|
||||||
|
mS1s6VDXLlQM3zCcwVJo3Twryc8IjJWkA3VPfACpJF9dBj8RJW42P92+kBI3fhCL
|
||||||
|
nhdBxrAvrXK+HT4jdjnYxVDVWTVYx8Acwlr36yTDcucRJpnVN9zZgr8DuL+Ag4FX
|
||||||
|
xkL9kbdEGt6XnlV8K9Z8
|
||||||
|
-----END CERTIFICATE-----
|
28
server.key
Normal file
28
server.key
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCl/UGvlDrkg9Mw
|
||||||
|
qj2rvGkv9jvZ8Z8ZZe6ZHb/KR56YjgyIKow+bqxpduLXclezaUdG9XFQaR+FD1nK
|
||||||
|
5lW6oUrX8Vcd59ImKBV+cCfMwjCHsYrjheTQyoFY/o3+7bt8nyjnmYG0Z0dQqXSq
|
||||||
|
uHngKeoiVqkNGzZHSMLuRuRZFHu/SUj+7WOJsraIWK/8yt0dxjhGA/TMK4MlI2td
|
||||||
|
J2vEaP9QPIBoWSGIpEa1myjV9XoGqOtUQzjeRuMHG8Wp+4JzIsNdl1Gg+N3dBEQS
|
||||||
|
ExyVv0cLAJouKy2zmR2Eio3nXhWW2kq+x3gjPlf8RDZJz+x/SsDmWvgGOcGTWcSL
|
||||||
|
Odn/fa7VAgMBAAECggEAK1ALbNJkD67qU7+IeiCe3foFohgvaMQ1X1To79KCatJe
|
||||||
|
KMXZdI0Shi6UgJ2AjvtAsx5mpBHaPLFFv/Ecm6dszS5XiiEsr/IzsZt4dzCQ00eb
|
||||||
|
s0UD8Qt2dw9tZAEKtDkfxldDBh0Q+dZN8CJVAw5M3wr378iTAETXQK/U8/2pUL9V
|
||||||
|
6kR899Qb1hnK2NK0vQxvg7JoFxsc8DzLBc3q4UuzvzN1EnUDMhxnCiSR36HaX3CQ
|
||||||
|
c18bSvzchv5HNA+C7oKnvHRcMMfFsbJQZsgXR5oW5pTIsBDPJVW4Ob7DKIZ5r7J9
|
||||||
|
5Ew38dHlE8bYmtp+rRgarj/W/PLEu55s+N09mncL3QKBgQDdCeHq9IwRJM5g4+0w
|
||||||
|
0cRbqU1zsr1jEAPDorLviRi9+GBqUPAwMEEJ3GHZqYofMyAlEmpqHzrJ/Its0IX4
|
||||||
|
eQ+oZfSuRW+XUnlrhgSxqZv5bXOVIHHaMNpumx5bg86/2O/Cgr44qezsHazr+cWB
|
||||||
|
O7cH7Jwe1axGpZrFmJ+yfe7MNwKBgQDAPlx8CTJEh9FfLjg7gKOHMSfMsIh8k4Dh
|
||||||
|
dU9dXFA5g/FmOf01rlIf9qVBwemn14wRx/+o035qRSEDWfMua7PF/yI/KXo9Gmcg
|
||||||
|
U4XNNE1cbPLH7w7kEp9Xx7XsyiOX76S4Aa6Oh383PYQjWb1cb1oug4kWhkJGuRCO
|
||||||
|
1XeznRfPUwKBgQClm5fmf57J4Xe25E57+05RFsHu44Y9yGvpkebazS76djNWtJmg
|
||||||
|
oSa5iqLNf9b6lUWKQQf1xrw3Rb34oysdBScUFn+Caoe3KpXKV7kAm4E/GiA1JP/o
|
||||||
|
aB3gLNxL2K940cKhS2/V6IqYRYufqZ2uu9zgVQiLma/fpogVb8qG4w+ddQKBgH7w
|
||||||
|
7srsm6fK80LhVzpbQCAGIlyz+Pwhvkmh180zJrpD2MQC6KNov0vh5s+cBvjQiOo4
|
||||||
|
4SWOufvcN+dpnv15GtVUGj4Q2mm8pHohDMoqjibIviutPGz3qwYglo2MEKLEGEV0
|
||||||
|
vtnYuPU2Bqn9GOAPm0H5ky0vbFYc38UhShBtXAqHAoGACD57o0rl3nBUoHyk9kuI
|
||||||
|
6EYFV+r6NJhHu+oDrMUNExG59G+nIZ/GujYQCGB8ncCZa+R+CmUdDpOQ88tWbuGC
|
||||||
|
WEdmGyGqWesuSp5mj5171jf5GdoqWvH+N5frD7TGCWUuWF4KCGnMvbcTx/KxEbr7
|
||||||
|
Jzr59ImXdRbFP1sL9CibBw8=
|
||||||
|
-----END PRIVATE KEY-----
|
Loading…
Reference in New Issue
Block a user