diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 1782624..c64b4ee 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -1,86 +1,134 @@ -# name: Go Linter +name: Go Linter -# on: -# pull_request: -# branches: -# - master -# push: -# branches: -# - master +on: + pull_request: + branches: + - master + - release + push: + branches: + - master + - release -# jobs: -# lint: -# name: Run golangci-lint -# runs-on: ubuntu-22.04 +jobs: + lint: + name: Run golangci-lint + runs-on: ubuntu-22.04 -# strategy: -# matrix: -# project: -# - api_gateway + strategy: + matrix: + project: + - api_gateway -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 + steps: + - name: Checkout repository + uses: actions/checkout@v3 -# - name: Set up Go -# uses: actions/setup-go@v4 -# with: -# go-version: 1.23 + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.23 -# - name: Install golangci-lint -# run: | -# curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.62.2 + - name: Install golangci-lint + run: | + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.62.2 -# - name: Run golangci-lint -# run: | -# go mod tidy -# golangci-lint run -c ./.golangci-lint.yaml --fix=false --color=always + - name: Run golangci-lint + run: | + go mod tidy + golangci-lint run -c ./.golangci-lint.yaml --fix=false --color=always -# build: -# name: Build golang services -# runs-on: ubuntu-22.04 -# needs: lint + build: + name: Build golang services + runs-on: ubuntu-22.04 + needs: lint -# strategy: -# matrix: -# project: -# - api_gateway + strategy: + matrix: + project: + - api_gateway -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 + steps: + - name: Checkout repository + uses: actions/checkout@v3 -# - name: Set up Go -# uses: actions/setup-go@v4 -# with: -# go-version: 1.23 + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.23 -# - name: Build golang services -# run: | -# go mod tidy -# CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o main cmd/main.go + - name: Build golang services + run: | + go mod tidy + 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' + 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 + strategy: + matrix: + project: + - api_gateway -# steps: -# - name: Checkout репозитория -# uses: actions/checkout@v4 + steps: + - name: Checkout репозитория + uses: actions/checkout@v4 -# - name: Build and Push -# env: -# SECDIST_CONFIG: ${{ secrets.FMT_CRM_SECDIST_CONFIG }} -# run: | -# echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin -# IMAGE_NAME="molvaapp/${{ matrix.project }}" -# TAG="latest" -# docker build -t $IMAGE_NAME:$TAG . -# docker push $IMAGE_NAME:$TAG \ No newline at end of file + - 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 + run: | + docker build \ + --build-arg BUILD_LDFLAGS="-w -s" \ + --build-arg CONFIG_FILE_PATH=$CONFIG_FILE \ + -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" \ No newline at end of file diff --git a/.gitea/workflows/deploy_staging.yaml b/.gitea/workflows/deploy_staging.yaml index 173d386..4d9c2bd 100644 --- a/.gitea/workflows/deploy_staging.yaml +++ b/.gitea/workflows/deploy_staging.yaml @@ -11,15 +11,6 @@ on: description: Version to deploy (default is new, to see other versions use the 'Get available versions' workflow) required: false default: new - logLevel: - description: Log level - required: false - default: info - type: choice - options: - - info - - debug - - warning jobs: deploy_to_staging: @@ -81,28 +72,6 @@ jobs: echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT echo "TAG_LAST_PUSHED=${PUSH_DATE}" >> $GITHUB_OUTPUT - - name: Build and Push Docker Image - if: ${{ inputs.version == 'new' }} - needs: docker-metadata - env: - IMAGE_NAME: ${{ steps.docker-metadata.outputs.IMAGE_NAME }} - IMAGE_TAG: ${{ steps.docker-metadata.outputs.IMAGE_TAG }} - CONFIG_FILE: .build/config/staging.yaml - run: | - docker build \ - --build-arg BUILD_LDFLAGS="-w -s" \ - --build-arg CONFIG_FILE_PATH=$CONFIG_FILE \ - -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" - - name: Install dependencies id: install-dependencies run: |