# этап 1. name: build & test on: # Указываем ветки которые будут триггерить пайплайн pull_request: branches: ["release"] types: [closed] # Указываем триггер - опубликованный релиз release: types: [published] workflow_call: # позволяет запускать пайплайн вручную через вкладку Actions workflow_dispatch: # этап 2. jobs: build: # Проверяем, что job запустился или при мерже пулл-реквеста, или на событии релиза, или вручную if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} runs-on: RUNNER steps: - name: Clone repository uses: actions/checkout@v4 with: ref: release - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable run: flutter --version - name: Install dependencies run: flutter pub get - name: Analyze project source if: success() run: flutter analyze - name: Run tests run: flutter test - name: Build Flutter Web if: success() run: flutter build web - name: Prepare deployment directory run: | mkdir -p ~/opt/development/frontend cp -r * ~/opt/development/frontend/ - name: Check if Docker is installed run: | if ! command -v docker &> /dev/null; then echo "Docker is not installed" exit 1 fi - name: Try to restart container run: | if [ -f ~/opt/development/docker/docker-compose.yml ]; then echo "docker-compose.yml found, restarting container" docker-compose -f ~/opt/development/docker/docker-compose.yml up -d --build frontend else echo "docker-compose.yml not found, skipping docker-compose commands" fi