From a688fedb2de8d190abf2be62cf69d3c1e1a187ef Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:19:41 +0300 Subject: [PATCH 1/6] Create main_commit.yml --- .github/workflows/main_commit.yml | 121 ++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 .github/workflows/main_commit.yml diff --git a/.github/workflows/main_commit.yml b/.github/workflows/main_commit.yml new file mode 100644 index 0000000..c6b8211 --- /dev/null +++ b/.github/workflows/main_commit.yml @@ -0,0 +1,121 @@ +name: Тесты и раскатка в тестовую среду + +on: + push: + branches: ['main'] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + test: + name: Проверяем стили + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 7.26.3 + + - uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install + run: | + pnpm config set auto-install-peers true + pnpm install + + - name: Check + run: pnpm lint && pnpm stylelint + + test-format: + name: Выполняем тесты + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 7.26.3 + + - uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install + run: pnpm install + + - name: Check + run: pnpm test + + build-test-image: + name: Собираем тестовый Docker + runs-on: ubuntu-latest + needs: + - test + - test-format + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=test,enable=true + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + file: ./deployment/Dockerfile + context: . + push: true + build-args: | + BUILD_MODE=testing + LAUNCH_MODE=testing + APP_VERSION=${{ github.ref_name }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + deploy-test: + name: Раскатываем тестовый Docker + runs-on: [ self-hosted, Linux, testing ] + needs: build-test-image + environment: + name: Testing + url: https://admin.test.profcomff.com/ + env: + CONTAINER_NAME: com_profcomff_api_admin_ui_test + permissions: + packages: read + steps: + - name: Run docker container + run: | + docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:test + docker stop ${{ env.CONTAINER_NAME }} || true && docker rm ${{ env.CONTAINER_NAME }} || true + docker run \ + --detach \ + --restart on-failure:3 \ + --network=web \ + --name ${{ env.CONTAINER_NAME }} \ + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:test From 23844afd38ff20c60256ada146a26cad3b19bfc8 Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:20:30 +0300 Subject: [PATCH 2/6] Create pr_create.yml --- .github/workflows/pr_create.yml | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/pr_create.yml diff --git a/.github/workflows/pr_create.yml b/.github/workflows/pr_create.yml new file mode 100644 index 0000000..c8cfc7c --- /dev/null +++ b/.github/workflows/pr_create.yml @@ -0,0 +1,56 @@ +name: Тесты на Pull Request + +on: pull_request + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + test: + name: Проверяем стили + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 7.26.3 + + - uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install + run: | + pnpm config set auto-install-peers true + pnpm install + + - name: Check + run: pnpm lint && pnpm stylelint + + test-format: + name: Выполняем тесты + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 7.26.3 + + - uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install + run: | + pnpm config set auto-install-peers true + pnpm install + + - name: Check + run: pnpm test From 4ff5a587f55f1b306ab75d1790b58f06d8452059 Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:21:10 +0300 Subject: [PATCH 3/6] Update main_commit.yml --- .github/workflows/main_commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main_commit.yml b/.github/workflows/main_commit.yml index c6b8211..65ea4c3 100644 --- a/.github/workflows/main_commit.yml +++ b/.github/workflows/main_commit.yml @@ -105,7 +105,7 @@ jobs: name: Testing url: https://admin.test.profcomff.com/ env: - CONTAINER_NAME: com_profcomff_api_admin_ui_test + CONTAINER_NAME: com_profcomff_admin_ui_test permissions: packages: read steps: From ec851fec1f9bd5a15c7c9d367944255764bd2874 Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:22:08 +0300 Subject: [PATCH 4/6] Create main_release.yml --- .github/workflows/main_release.yml | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/main_release.yml diff --git a/.github/workflows/main_release.yml b/.github/workflows/main_release.yml new file mode 100644 index 0000000..6a95eee --- /dev/null +++ b/.github/workflows/main_release.yml @@ -0,0 +1,75 @@ +name: Тесты и раскатка в продакшн + +on: + push: + tags: + - 'v*' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-prod-image: + name: Собираем production Docker + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Define production metadata + id: meta-prod + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=tag,enable=true + type=raw,value=prod,enable=true + type=raw,value=latest,enable=true + + - name: Build and push production Docker + uses: docker/build-push-action@v4 + with: + file: ./deployment/Dockerfile + context: . + push: true + build-args: | + BUILD_MODE=production + LAUNCH_MODE=production + APP_VERSION=${{ github.ref_name }} + tags: ${{ steps.meta-prod.outputs.tags }} + labels: ${{ steps.meta-prod.outputs.labels }} + + deploy-production: + name: Раскатываем production среду + runs-on: [ self-hosted, Linux, production ] + needs: [build-prod-image] + environment: + name: Production + url: https://admin.profcomff.com/ + env: + CONTAINER_NAME: com_profcomff_admin_ui + permissions: + packages: read + steps: + - name: Run docker container + run: | + docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:prod + docker stop ${{ env.CONTAINER_NAME }} || true && docker rm ${{ env.CONTAINER_NAME }} || true + docker run \ + --detach \ + --restart always \ + --network=web \ + --name ${{ env.CONTAINER_NAME }} \ + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:prod From 524eaaae76ee74b3a88998e38b6c71d414a408da Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:22:46 +0300 Subject: [PATCH 5/6] Delete .github/workflows/build.yml --- .github/workflows/build.yml | 50 ------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index c651f68..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Build and push docker - - -on: - push: - branches: ['main'] - tags: - - 'v*' - - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - - -jobs: - build-and-push-image: - name: Build and push - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Log in to the Container registry - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=tag,enable=${{ startsWith(github.ref, 'refs/tags/v') }} - type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') }} - type=raw,value={{date 'YYYY-MM-DD_HH:mm:ss'}},enable=true - - name: Build and push Docker image - uses: docker/build-push-action@v4 - with: - context: . - file: deployment/Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - APP_VERSION=${{ github.ref_name }} From 515afe0aa7cac2bc6a32150659bfe7ef792d5d68 Mon Sep 17 00:00:00 2001 From: Ilya Batuev Date: Thu, 21 Aug 2025 19:22:54 +0300 Subject: [PATCH 6/6] Delete .github/workflows/checks.yml --- .github/workflows/checks.yml | 52 ------------------------------------ 1 file changed, 52 deletions(-) delete mode 100644 .github/workflows/checks.yml diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index b23f69e..0000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Тесты и раскатка на Pull Request - -on: pull_request - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - test: - name: Проверяем стили - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v2 - with: - version: 7.26.3 - - - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: 'pnpm' - - - name: Install - run: pnpm install - - - name: Check - run: pnpm run check - - test-format: - name: Выполняем тесты - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v2 - with: - version: 7.26.3 - - - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: 'pnpm' - - - name: Install - run: pnpm install - - - name: Check - run: pnpm test