CICD preparation

This commit is contained in:
2025-11-19 01:29:36 +03:00
parent 1b9bb09ca4
commit 1252b7a0d1
5 changed files with 183 additions and 0 deletions

14
.bumpversion.cfg Normal file
View 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
View File

@@ -0,0 +1,10 @@
.git/
.git*
docs/
.bumpversion.cfg
.editorconfig
.drone.yml
Dockerfile
Makefile
*.md
*.txt

145
.drone.yml Normal file
View 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
View 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"]

1
VERSION Normal file
View File

@@ -0,0 +1 @@
1.0.0