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 }} 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 diff --git a/.github/workflows/main_commit.yml b/.github/workflows/main_commit.yml new file mode 100644 index 0000000..65ea4c3 --- /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_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 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 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