7 Commits

Author SHA1 Message Date
Alex Shevchuk
9fb046223c 76 ШЕСТЬ
All checks were successful
Go Linter / Run golangci-lint (api_gateway) (push) Successful in 3m57s
Go Linter / Push Docker Images (api_gateway) (push) Successful in 29s
Go Linter / Build golang services (api_gateway) (push) Successful in 2m21s
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Tag Commit (push) Successful in 9s
2025-09-17 15:45:45 +03:00
Alex Shevchuk
0d9dc14131 75
All checks were successful
Go Linter / Run golangci-lint (api_gateway) (push) Has been skipped
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Successful in 32s
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
2025-09-17 15:43:30 +03:00
Alex Shevchuk
cf4a0ac7b7 74
All checks were successful
Go Linter / Run golangci-lint (api_gateway) (push) Has been skipped
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Successful in 21s
2025-09-17 15:41:18 +03:00
Alex Shevchuk
cb4dd943bc 74
All checks were successful
Go Linter / Run golangci-lint (api_gateway) (push) Has been skipped
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Successful in 29s
2025-09-17 15:39:48 +03:00
Alex Shevchuk
9d4b138190 73
All checks were successful
Go Linter / Run golangci-lint (api_gateway) (push) Has been skipped
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Successful in 23s
2025-09-17 15:35:57 +03:00
Alex Shevchuk
e3262d588c 72
All checks were successful
Go Linter / Tag Commit (push) Successful in 14s
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Run golangci-lint (api_gateway) (push) Successful in 3m47s
Go Linter / Build golang services (api_gateway) (push) Successful in 4m15s
Go Linter / Push Docker Images (api_gateway) (push) Successful in 5m4s
2025-09-17 15:24:08 +03:00
Alex Shevchuk
33229f1eb7 71
Some checks failed
Go Linter / Tag Commit (push) Successful in 13s
Go Linter / Build golang services (api_gateway) (push) Successful in 3m2s
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Run golangci-lint (api_gateway) (push) Successful in 3m52s
Go Linter / Push Docker Images (api_gateway) (push) Failing after 1m45s
2025-09-17 15:11:39 +03:00
3 changed files with 94 additions and 79 deletions

View File

@@ -70,79 +70,6 @@ jobs:
SWAGGER_HOST=${HOST} make docs
CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o main cmd/main.go
push:
name: Push Docker Images
runs-on: ubuntu-22.04
needs: lint
if: ${{ gitea.ref == 'refs/heads/master' || gitea.ref == 'refs/heads/release' }}
strategy:
matrix:
project:
- api_gateway
steps:
- name: Checkout репозитория
uses: actions/checkout@v4
- name: Extract Git metadata
id: git-metadata
env:
REPO: ${{ github.repository }}
run: |
GIT_SHA=$(git rev-parse --short HEAD)
GIT_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo 'none')
TARGET_ENV=${{ github.ref == 'refs/heads/release' && 'staging' || 'production' }}
echo "GIT_SHA=${GIT_SHA}" >> $GITHUB_OUTPUT
echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_OUTPUT
echo "TARGET_ENV=${TARGET_ENV}" >> $GITHUB_OUTPUT
echo "REPO_NAME=$(echo $REPO | cut -d'/' -f2)" >> $GITHUB_OUTPUT
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract image metadata
id: docker-metadata
needs: git-metadata
env:
REGISTRY: hub.docker.com
REPO_NAME: ${{ steps.git-metadata.outputs.REPO_NAME }}
TARGET_ENV: ${{ steps.git-metadata.outputs.TARGET_ENV }}
GIT_TAG: ${{ steps.git-metadata.outputs.GIT_TAG }}
GIT_SHA: ${{ steps.git-metadata.outputs.GIT_SHA }}
run: |
IMAGE_TAG=$TARGET_ENV-$($GIT_TAG != 'none' && echo $GIT_TAG || echo $GIT_SHA)
echo "IMAGE_NAME=molvaapp/${{ steps.git-metadata.outputs.REPO_NAME }}" >> $GITHUB_OUTPUT
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT
- name: Build and Push Docker Image
needs: docker-metadata
env:
IMAGE_NAME: ${{ steps.docker-metadata.outputs.IMAGE_NAME }}
IMAGE_TAG: ${{ steps.docker-metadata.outputs.IMAGE_TAG }}
CONFIG_FILE: .build/config/${{ steps.git-metadata.outputs.TARGET_ENV }}.yaml
HOST: ${{ github.event.base_ref == 'refs/heads/release' && secrets.HOST_STG || secrets.HOST_PROD }}
run: |
docker build \
--build-arg BUILD_LDFLAGS="-w -s" \
--build-arg CONFIG_FILE_PATH=$CONFIG_FILE \
--build-arg SWAGGER_HOST=$HOST \
-t $IMAGE_NAME:$IMAGE_TAG \
-t $IMAGE_NAME:latest \
.
docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_NAME:latest
docker push $IMAGE_NAME:$IMAGE_TAG
docker push $IMAGE_NAME:latest
echo "Pushed image $IMAGE_NAME:$IMAGE_TAG and :latest"
tag:
name: Tag Commit
runs-on: ubuntu-22.04
@@ -195,3 +122,87 @@ jobs:
git tag ${{ steps.get-latest-tag.outputs.NEW_TAG }}
git push origin ${{ steps.get-latest-tag.outputs.NEW_TAG }}
echo "Successfully pushed tag: ${{ steps.get-latest-tag.outputs.NEW_TAG }}"
push:
name: Push Docker Images
runs-on: ubuntu-22.04
needs:
lint
tag
if: ${{ gitea.ref == 'refs/heads/master' || gitea.ref == 'refs/heads/release' }}
strategy:
matrix:
project:
- api_gateway
steps:
- name: Checkout репозитория
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Extract Git metadata
id: git-metadata
env:
REPO: ${{ github.repository }}
run: |
git fetch --tags --force
GIT_SHA=$(git rev-parse --short HEAD)
GIT_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")
TARGET_ENV=${{ github.ref == 'refs/heads/release' && 'staging' || 'production' }}
echo "GIT_SHA=${GIT_SHA}" >> $GITHUB_OUTPUT
echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_OUTPUT
echo "TARGET_ENV=${TARGET_ENV}" >> $GITHUB_OUTPUT
echo "REPO_NAME=$(echo $REPO | cut -d'/' -f2)" >> $GITHUB_OUTPUT
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract image metadata
id: docker-metadata
needs: git-metadata
env:
REGISTRY: hub.docker.com
REPO_NAME: ${{ steps.git-metadata.outputs.REPO_NAME }}
TARGET_ENV: ${{ steps.git-metadata.outputs.TARGET_ENV }}
GIT_TAG: ${{ steps.git-metadata.outputs.GIT_TAG }}
GIT_SHA: ${{ steps.git-metadata.outputs.GIT_SHA }}
run: |
if [ "$GIT_TAG" != "none" ]; then
IMAGE_TAG="${TARGET_ENV}-${GIT_TAG}"
else
IMAGE_TAG="${TARGET_ENV}-${GIT_SHA}"
fi
echo "IMAGE_NAME=molvaapp/${{ steps.git-metadata.outputs.REPO_NAME }}" >> $GITHUB_OUTPUT
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT
- name: Build and Push Docker Image
needs: docker-metadata
env:
IMAGE_NAME: ${{ steps.docker-metadata.outputs.IMAGE_NAME }}
IMAGE_TAG: ${{ steps.docker-metadata.outputs.IMAGE_TAG }}
CONFIG_FILE: .build/config/${{ steps.git-metadata.outputs.TARGET_ENV }}.yaml
HOST: ${{ github.event.base_ref == 'refs/heads/release' && secrets.HOST_STG || secrets.HOST_PROD }}
run: |
docker build \
--build-arg BUILD_LDFLAGS="-w -s" \
--build-arg CONFIG_FILE_PATH=$CONFIG_FILE \
--build-arg SWAGGER_HOST=$HOST \
-t $IMAGE_NAME:$IMAGE_TAG \
-t $IMAGE_NAME:latest \
.
docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_NAME:latest
docker push $IMAGE_NAME:$IMAGE_TAG
docker push $IMAGE_NAME:latest
echo "Pushed image $IMAGE_NAME:$IMAGE_TAG and :latest"

View File

@@ -11,6 +11,8 @@ RUN go mod download -x
COPY . .
RUN go mod tidy && go mod download -x
RUN SWAGGER_HOST=${SWAGGER_HOST} make docs
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="${BUILD_LDFLAGS}" -trimpath -o main ./cmd/main.go

View File

@@ -10,6 +10,11 @@ ENV := "local"
UNAME_S := $(shell uname -s)
CONFIG_PATH := .build/config/
SWAGGER_DOCS_PATH := internal/http/swagger/docs
ifeq ($(UNAME_S),Darwin)
SED_INPLACE := -i ''
else
SED_INPLACE := -i
endif
ifeq ($(OS),Windows_NT)
CONFIG_PATH := $(subst /,\,$(CONFIG_PATH))
@@ -60,15 +65,12 @@ docs: $(BIN_DIR)/swag
@mkdir -p $(SWAGGER_DOCS_PATH)
@TEMP_MAIN="cmd/main_temp.go" && \
cp cmd/main.go $$TEMP_MAIN && \
if [[ "$$OSTYPE" == "darwin"* ]]; then \
sed -i '' "s/localhost:8000/$(HOST)/g" $$TEMP_MAIN; \
else \
sed -i "s/localhost:8000/$(HOST)/g" $$TEMP_MAIN; \
fi && \
ESC_HOST=$$(printf '%s\n' "$(HOST)" | sed -e 's/[\\\/&]/\\\\&/g') && \
sed $(SED_INPLACE) "s|localhost:8000|$${ESC_HOST}|g" $$TEMP_MAIN && \
$(BIN_DIR)/swag init -g $$TEMP_MAIN -o $(SWAGGER_DOCS_PATH) --parseDependency --parseInternal && \
rm -f $$TEMP_MAIN && \
echo "Swagger документация успешно сгенерирована с host: $(HOST)" && \
echo "Документация доступна по адресу: http://$(HOST)/swagger/index.html"
echo "Документация доступна по адресу: $(HOST)/swagger/index.html"
## -- Run --
## To change env use: make run CONFIG_PATH={config file dir path} ENV={env}