Merge pull request #1 from CSSSR/update-dependencies

Refactor test app
This commit is contained in:
Vadim Aleksandrov 2024-07-15 16:53:14 +03:00 committed by GitHub
commit 36aefd2728
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 169 additions and 16 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1 @@
* @cwarck @qtm @verdel @nitive

View File

@ -0,0 +1,37 @@
name: Docker image build
on:
push:
branches: [master]
paths:
- app/**
pull_request:
paths:
- app/**
jobs:
build-images:
name: Build docker image
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build test-app
run: make build
working-directory: app
- name: Login to Quay
if: github.event_name == 'push'
uses: docker/login-action@v3
with:
registry: quay.csssr.cloud
username: csssr+github_devops_test_app
password: ${{ secrets.QUAY_REGISTRY_PASSWORD }}
- name: Publish test-app
run: make publish
if: github.event_name == 'push'
working-directory: app

19
.github/workflows/lint-renovate.yaml vendored Normal file
View File

@ -0,0 +1,19 @@
name: Lint renovate configuration
on:
push:
branches: [master]
paths:
- .renovaterc
- ".github/workflows/lint-renovate.yaml"
pull_request:
paths:
- .renovaterc
- ".github/workflows/lint-renovate.yaml"
jobs:
validate:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- uses: suzuki-shunsuke/github-action-renovate-config-validator@v1.0.1

29
.renovaterc Normal file
View File

@ -0,0 +1,29 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":disableRateLimiting",
":disableVulnerabilityAlerts"
],
"labels": [
"dependencies"
],
"postUpdateOptions": [
"gomodTidy",
"gomodUpdateImportPaths"
],
"reviewersFromCodeOwners": true,
"enabledManagers": [
"gomod",
"dockerfile",
"github-actions"
],
"packageRules": [
{
"matchDatasources": [
"golang-version"
],
"rangeStrategy": "bump"
}
]
}

View File

@ -1,11 +1,15 @@
.PHONY: publish-app start-app deploy
HELM=$(shell which helm3 2>/dev/null || which helm)
BRANCH ?= master
build-app:
docker build app --tag quay.csssr.cloud/csssr/test-app:$(BRANCH)
docker push quay.csssr.cloud/csssr/test-app:$(BRANCH)
start-app:
$(MAKE) -C app start
HELM ?= helm3
publish-app:
$(MAKE) -C app build version=$(BRANCH)
$(MAKE) -C app publish version=$(BRANCH)
deploy:
$(HELM) upgrade --install my-app-$(BRANCH) chart --set image.tag=$(BRANCH) --set ingress.host=$(BRANCH).my-app.com
$(HELM) upgrade --install my-app-$(BRANCH) chart --set image.tag=$(BRANCH) --set ingress.host=$(BRANCH).csssr.cloud

View File

@ -22,12 +22,18 @@ curl http://my-app.com/image -o image.jpg
- 100% uptime
- Возможность делать несколько релизов для разных веток в один неймспейс (для тестирования)
## Локальный запуск приложения
```sh
make start-app
```
## Деплой
Сборка
```sh
make build BRANCH=master
make publish-app BRANCH=master
```
Деплой helm чарта (используется helm 3)

36
app/.air.toml Normal file
View File

@ -0,0 +1,36 @@
root = '.'
tmp_dir = 'bin'
[build]
cmd = 'go build -o bin/app main.go'
bin = './bin/app'
full_bin = ''
args_bin = []
include_ext = ['go']
exclude_dir = ['bin', 'tests']
include_dir = []
exclude_file = []
exclude_regex = ['_test.go']
exclude_unchanged = false
follow_symlink = false
delay = 1000
stop_on_error = true
send_interrupt = false
kill_delay = 0
[color]
main = 'magenta'
watcher = 'cyan'
build = 'yellow'
runner = 'green'
app = ''
[log]
time = false
[misc]
clean_on_exit = true
[screen]
clear_on_rebuild = false

4
app/.dockerignore Normal file
View File

@ -0,0 +1,4 @@
*
!go.mod
!go.sum
!main.go

1
app/.gitignore vendored
View File

@ -1 +1,2 @@
tmp-image
bin/

View File

@ -1,4 +1,4 @@
FROM golang:1.14
FROM golang:1.22
WORKDIR /app

17
app/Makefile Normal file
View File

@ -0,0 +1,17 @@
.PHONY: start build publish
export GOBIN=${CURDIR}/bin
version ?= master
$(GOBIN)/air:
go install github.com/air-verse/air@latest
start: $(GOBIN)/air
air
build:
docker build . --tag quay.csssr.cloud/csssr/test-app:$(version)
publish:
docker push quay.csssr.cloud/csssr/test-app:$(version)

View File

@ -1,5 +1,5 @@
module github.com/CSSSR/my-app
go 1.14
go 1.22
require github.com/logrusorgru/aurora v2.0.3+incompatible

View File

@ -2,7 +2,7 @@ package main
import (
"fmt"
"io/ioutil"
"io"
"log"
"net/http"
"os"
@ -36,12 +36,12 @@ func uploadFile(w http.ResponseWriter, r *http.Request) {
}
defer file.Close()
fileBytes, err := ioutil.ReadAll(file)
fileBytes, err := io.ReadAll(file)
if err != nil {
log.Fatalf("Error reading file %v", err)
}
ioutil.WriteFile(config.ImagePath, fileBytes, os.FileMode(0600))
os.WriteFile(config.ImagePath, fileBytes, os.FileMode(0600))
log.Println(aurora.Cyan("Successfully Uploaded File"))
fmt.Fprintf(w, "Successfully Uploaded File\n")

View File

@ -29,4 +29,4 @@ spec:
volumes:
- name: data
persistentVolumeClaim:
claimName: my-app
claimName: {{ .Release.Name }}

View File

@ -2,9 +2,8 @@ apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
rules:
- host: {{ .Values.ingress.host }}
http:
@ -13,6 +12,6 @@ spec:
pathType: Prefix
backend:
service:
name: my-app
port:
name: {{ .Release.Name }}
port:
number: 80