From 6a941183773d48f9c6de8ee3e71ed48f3f46c966 Mon Sep 17 00:00:00 2001 From: Alex Shevchuk Date: Tue, 19 Aug 2025 17:26:53 +0300 Subject: [PATCH] 43 --- .gitea/workflows/deploy_staging.yaml | 197 +++++++++++---------------- .gitea/workflows/deploy_trigger.yaml | 51 +++++++ 2 files changed, 133 insertions(+), 115 deletions(-) create mode 100644 .gitea/workflows/deploy_trigger.yaml diff --git a/.gitea/workflows/deploy_staging.yaml b/.gitea/workflows/deploy_staging.yaml index d863ccc..585a5ec 100644 --- a/.gitea/workflows/deploy_staging.yaml +++ b/.gitea/workflows/deploy_staging.yaml @@ -1,49 +1,10 @@ name: Deploy Staging on: - workflow_dispatch: - inputs: - environment: - description: Environment to deploy to - required: true - default: staging - version: - description: Version to deploy (default is latest) - required: false - default: latest - type: choice - options: - - latest - logLevel: - description: Log level - required: false - default: info - type: choice - options: - - info - - debug - - warning + repository_dispatch: + types: [deploy-request] jobs: - get_available_versions: - name: Get available versions - runs-on: ubuntu-22.04 - outputs: - version_options: ${{ steps.get_versions.outputs.version_options }} - steps: - - name: Get available versions from Docker Registry - id: get_versions - env: - REGISTRY: hub.docker.com - REPO: test_deploy - run: | - TAGS=$(wget -q -O - "https://$REGISTRY/v2/namespaces/molvaapp/repositories/$REPO/tags?page_size=100" | jq -r '.results[].name' | tr '\n' ',') - - echo "version_options=${TAGS%,}" >> $GITHUB_OUTPUT - - echo "Tags: $TAGS" - echo "Version options: $version_options" - deploy_to_staging: name: Deploy to Staging runs-on: ubuntu-22.04 @@ -55,98 +16,104 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Extract Git metadata - id: git-metadata + - name: Debug inputs run: | - echo "GIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - echo "GIT_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo 'none')" >> $GITHUB_OUTPUT + echo "Environment: ${{ github.event.client_payload.environment }}" + echo "Version: ${{ github.event.client_payload.version }}" + echo "Available versions: ${{ github.event.client_payload.available_versions }}" - - name: Login to Docker Registry - run: | - echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + # - name: Extract Git metadata + # id: git-metadata + # run: | + # echo "GIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + # echo "GIT_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo 'none')" >> $GITHUB_OUTPUT - - name: Build and Push Docker Image - needs: git-metadata - env: - IMAGE_NAME: molvaapp/test_deploy - CONFIG_FILE: .build/config/staging.yaml - run: | - IMAGE_TAG=${{ inputs.environment }}-${{ steps.git-metadata.outputs.GIT_TAG != 'none' && steps.git-metadata.outputs.GIT_TAG || steps.git-metadata.outputs.GIT_SHA }} + # - name: Login to Docker Registry + # run: | + # echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - docker build \ - --build-arg BUILD_LDFLAGS="-w -s" \ - --build-arg CONFIG_FILE_PATH=$CONFIG_FILE \ - -t $IMAGE_NAME:$IMAGE_TAG \ - -t $IMAGE_NAME:latest \ - . + # - name: Build and Push Docker Image + # needs: git-metadata + # env: + # IMAGE_NAME: molvaapp/test_deploy + # CONFIG_FILE: .build/config/staging.yaml + # run: | + # IMAGE_TAG=${{ inputs.environment }}-${{ steps.git-metadata.outputs.GIT_TAG != 'none' && steps.git-metadata.outputs.GIT_TAG || steps.git-metadata.outputs.GIT_SHA }} - docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_NAME:latest + # 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 push $IMAGE_NAME:$IMAGE_TAG - docker push $IMAGE_NAME:latest + # docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_NAME:latest - echo "Pushed image $IMAGE_NAME:$IMAGE_TAG and :latest" + # docker push $IMAGE_NAME:$IMAGE_TAG + # docker push $IMAGE_NAME:latest - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y gettext jq + # echo "Pushed image $IMAGE_NAME:$IMAGE_TAG and :latest" - - name: Prepare environment - run: | - mkdir -p /tmp/swarm-certs - echo "${{ secrets.SWARM_CA_PEM }}" > /tmp/swarm-certs/ca.pem - echo "${{ secrets.SWARM_CERT_PEM }}" > /tmp/swarm-certs/cert.pem - echo "${{ secrets.SWARM_KEY_PEM }}" > /tmp/swarm-certs/key.pem - chmod 600 /tmp/swarm-certs/*.pem + # - name: Install dependencies + # run: | + # sudo apt-get update + # sudo apt-get install -y gettext jq - - name: Deploy to Swarm - env: - DOCKER_HOST: tcp://${{ secrets.SWARM_MANAGER_HOST }}:2376 - DOCKER_TLS_VERIFY: 1 - DOCKER_CERT_PATH: /tmp/swarm-certs + # - name: Prepare environment + # run: | + # mkdir -p /tmp/swarm-certs + # echo "${{ secrets.SWARM_CA_PEM }}" > /tmp/swarm-certs/ca.pem + # echo "${{ secrets.SWARM_CERT_PEM }}" > /tmp/swarm-certs/cert.pem + # echo "${{ secrets.SWARM_KEY_PEM }}" > /tmp/swarm-certs/key.pem + # chmod 600 /tmp/swarm-certs/*.pem - VERSION: ${{ inputs.version }} + # - name: Deploy to Swarm + # env: + # DOCKER_HOST: tcp://${{ secrets.SWARM_MANAGER_HOST }}:2376 + # DOCKER_TLS_VERIFY: 1 + # DOCKER_CERT_PATH: /tmp/swarm-certs - KEYCLOAK_BASE_URL: ${{ secrets.KEYCLOAK_BASE_URL }} - KEYCLOAK_REALM: ${{ secrets.KEYCLOAK_REALM }} - KEYCLOAK_CLIENT_ID: ${{ secrets.KEYCLOAK_CLIENT_ID }} - KEYCLOAK_CLIENT_SECRET: ${{ secrets.KEYCLOAK_CLIENT_SECRET }} + # VERSION: ${{ inputs.version }} - BROKER_HOST: ${{ secrets.BROKER_HOST }} - BROKER_PORT: ${{ secrets.BROKER_PORT }} - BROKER_USERNAME: ${{ secrets.BROKER_USERNAME }} - BROKER_PASSWORD: ${{ secrets.BROKER_PASSWORD }} + # KEYCLOAK_BASE_URL: ${{ secrets.KEYCLOAK_BASE_URL }} + # KEYCLOAK_REALM: ${{ secrets.KEYCLOAK_REALM }} + # KEYCLOAK_CLIENT_ID: ${{ secrets.KEYCLOAK_CLIENT_ID }} + # KEYCLOAK_CLIENT_SECRET: ${{ secrets.KEYCLOAK_CLIENT_SECRET }} - SHORTENER_SECRET_KEY: ${{ secrets.SHORTENER_SECRET_KEY }} + # BROKER_HOST: ${{ secrets.BROKER_HOST }} + # BROKER_PORT: ${{ secrets.BROKER_PORT }} + # BROKER_USERNAME: ${{ secrets.BROKER_USERNAME }} + # BROKER_PASSWORD: ${{ secrets.BROKER_PASSWORD }} - CACHE_ADDRS: ${{ secrets.CACHE_ADDRS }} - CACHE_PASSWORD: ${{ secrets.CACHE_PASSWORD }} + # SHORTENER_SECRET_KEY: ${{ secrets.SHORTENER_SECRET_KEY }} - DB_HOSTS: ${{ secrets.DB_HOSTS }} - DB_PORT: ${{ secrets.DB_PORT }} - DB_USERNAME: ${{ secrets.DB_STG_USERNAME }} - DB_PASSWORD: ${{ secrets.DB_STG_PASSWORD }} - DB_DBNAME: ${{ secrets.DB_DBNAME }} + # CACHE_ADDRS: ${{ secrets.CACHE_ADDRS }} + # CACHE_PASSWORD: ${{ secrets.CACHE_PASSWORD }} - INTEGRATION_VKUSVILL_API_TOKEN: ${{ secrets.INTEGRATION_VKUSVILL_API_TOKEN }} - run: | - envsubst < docker-compose.staging.yaml > docker-compose.runtime.yaml + # DB_HOSTS: ${{ secrets.DB_HOSTS }} + # DB_PORT: ${{ secrets.DB_PORT }} + # DB_USERNAME: ${{ secrets.DB_STG_USERNAME }} + # DB_PASSWORD: ${{ secrets.DB_STG_PASSWORD }} + # DB_DBNAME: ${{ secrets.DB_DBNAME }} - echo "Deploying version $VERSION to ${{ inputs.environment }}..." - echo "Log level: ${{ inputs.logLevel }}" + # INTEGRATION_VKUSVILL_API_TOKEN: ${{ secrets.INTEGRATION_VKUSVILL_API_TOKEN }} + # run: | + # envsubst < docker-compose.staging.yaml > docker-compose.runtime.yaml - docker stack deploy \ - --with-registry-auth \ - -c docker-compose.runtime.yaml \ - ${{ env.STACK_NAME }} + # echo "Deploying version $VERSION to ${{ inputs.environment }}..." + # echo "Log level: ${{ inputs.logLevel }}" - - name: Cleanup - run: | - rm -rf /tmp/swarm-certs - rm -f docker-compose.runtime.yaml + # docker stack deploy \ + # --with-registry-auth \ + # -c docker-compose.runtime.yaml \ + # ${{ env.STACK_NAME }} - - name: Post-deploy - run: | - echo "Deployment to ${{ inputs.environment }} completed." - echo "Version deployed: ${{ inputs.version }}" + # - name: Cleanup + # run: | + # rm -rf /tmp/swarm-certs + # rm -f docker-compose.runtime.yaml + + # - name: Post-deploy + # run: | + # echo "Deployment to ${{ inputs.environment }} completed." + # echo "Version deployed: ${{ inputs.version }}" diff --git a/.gitea/workflows/deploy_trigger.yaml b/.gitea/workflows/deploy_trigger.yaml new file mode 100644 index 0000000..8268eed --- /dev/null +++ b/.gitea/workflows/deploy_trigger.yaml @@ -0,0 +1,51 @@ +name: Trigger Deploy + +on: + workflow_dispatch: + inputs: + environment: + description: Environment to deploy to + required: true + default: staging + type: choice + options: + - staging + - production + logLevel: + description: Log level + required: false + default: info + type: choice + options: + - info + - debug + - warning + +jobs: + get_versions_and_trigger: + name: Get available versions and trigger deploy + runs-on: ubuntu-22.04 + steps: + - name: Get available versions from Docker Registry + id: get_versions + env: + REGISTRY: hub.docker.com + REPO: ${{ github.repository }} + run: | + TAGS=$(wget -q -O - "https://$REGISTRY/v2/namespaces/molvaapp/repositories/$REPO/tags?page_size=100" | jq -r '.results[].name' | tr '\n' ',') + + echo "version_options=${TAGS%,}" >> $GITHUB_OUTPUT + + - name: Trigger main deployment workflow + uses: peter-evans/repository-dispatch@v2 + with: + token: ${{ secrets.PAT_TOKEN }} + repository: ${{ github.repository }} + event-type: deploy-request + client-payload: | + { + "environment": "${{ github.event.inputs.environment }}", + "version": "latest", + "logLevel": "${{ github.event.inputs.logLevel }}", + "available_versions": "${{ steps.get_versions.outputs.version_options }}" + } \ No newline at end of file