CICD preparation
This commit is contained in:
14
.bumpversion.cfg
Normal file
14
.bumpversion.cfg
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[bumpversion]
|
||||||
|
current_version = 1.0.0
|
||||||
|
commit = True
|
||||||
|
tag = True
|
||||||
|
tag_name = {new_version}
|
||||||
|
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
|
||||||
|
serialize = {major}.{minor}.{patch}
|
||||||
|
message = [skip ci] Bump version: {current_version} → {new_version}
|
||||||
|
|
||||||
|
[bumpversion:file:VERSION]
|
||||||
|
|
||||||
|
[bumpversion:file:README.md]
|
||||||
|
|
||||||
|
[bumpversion:file:src/main.go]
|
||||||
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.git/
|
||||||
|
.git*
|
||||||
|
docs/
|
||||||
|
.bumpversion.cfg
|
||||||
|
.editorconfig
|
||||||
|
.drone.yml
|
||||||
|
Dockerfile
|
||||||
|
Makefile
|
||||||
|
*.md
|
||||||
|
*.txt
|
||||||
145
.drone.yml
Normal file
145
.drone.yml
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: backend-service
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: "[branch] bump version"
|
||||||
|
image: registry.halfakop.ru/golang/bumpversion:0.1.3
|
||||||
|
environment:
|
||||||
|
GIT_USERNAME:
|
||||||
|
from_secret: GIT_USERNAME
|
||||||
|
GIT_EMAIL:
|
||||||
|
from_secret: GIT_EMAIL
|
||||||
|
entrypoint: ["/bumpversion"]
|
||||||
|
command: ["--no-commit", "--no-tag", "patch"]
|
||||||
|
load: false # do not use /bin/sh -c here
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- task-*
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
- name: "[master] bump version"
|
||||||
|
image: registry.halfakop.ru/golang/bumpversion:0.1.3
|
||||||
|
environment:
|
||||||
|
GIT_USERNAME:
|
||||||
|
from_secret: GIT_USERNAME
|
||||||
|
GIT_EMAIL:
|
||||||
|
from_secret: GIT_EMAIL
|
||||||
|
entrypoint: ["/bumpversion"]
|
||||||
|
command: ["patch"]
|
||||||
|
load: false # do not use /bin/sh -c here
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
- name: "[master] build"
|
||||||
|
image: plugins/docker
|
||||||
|
volumes:
|
||||||
|
- name: docker-sock
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
environment:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
from_secret: DOCKER_USERNAME
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
from_secret: DOCKER_PASSWORD
|
||||||
|
commands:
|
||||||
|
- apk add make git bash
|
||||||
|
- make login build DOCKER_OPTS="--network devtools"
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
|
- name: "[master] tagging"
|
||||||
|
image: alpine/git
|
||||||
|
commands:
|
||||||
|
- git push origin master
|
||||||
|
- git push origin master --tags
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
|
- name: "[master] push"
|
||||||
|
image: plugins/docker
|
||||||
|
volumes:
|
||||||
|
- name: docker-sock
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
environment:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
from_secret: DOCKER_USERNAME
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
from_secret: DOCKER_PASSWORD
|
||||||
|
commands:
|
||||||
|
- apk add make git bash
|
||||||
|
- make login push DOCKER_OPTS="--network devtools"
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
|
- name: "[release] get deployment repo"
|
||||||
|
image: plugins/ansible:1
|
||||||
|
commands:
|
||||||
|
- git clone https://git.halfakop.ru/3dthis.ru/deployment.git
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- release
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
- name: "[release] check deployment playbook"
|
||||||
|
image: plugins/ansible:1
|
||||||
|
environment:
|
||||||
|
SERVICE_NAME: backend
|
||||||
|
settings:
|
||||||
|
playbook: deployment/deployment.yml
|
||||||
|
inventory: deployment/inventory_service.yml
|
||||||
|
syntax_check: true
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- release
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
|
- name: "[release] deploy service"
|
||||||
|
image: plugins/ansible:1
|
||||||
|
environment:
|
||||||
|
SERVICE_NAME: backend
|
||||||
|
DATABASE_URL:
|
||||||
|
from_secret: DATABASE_URL
|
||||||
|
settings:
|
||||||
|
playbook: deployment/deployment.yml
|
||||||
|
inventory: deployment/inventory_service.yml
|
||||||
|
private_key:
|
||||||
|
from_secret: SSHKEY
|
||||||
|
verbose: 1 # 0 .. 4
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- release
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
exclude:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: docker-sock
|
||||||
|
host:
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
|
||||||
|
image_pull_secrets:
|
||||||
|
- dockerconfigjson
|
||||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
FROM golang:1.24.9-alpine AS builder
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
COPY . .
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o service ./src
|
||||||
|
|
||||||
|
FROM gcr.io/distroless/static
|
||||||
|
|
||||||
|
WORKDIR /
|
||||||
|
COPY --from=builder /app/service .
|
||||||
|
ENTRYPOINT [ "/service"]
|
||||||
Reference in New Issue
Block a user