name: build & test on: # Указываем ветки которые будут триггерить пайплайн pull_request: branches: ["release"] types: [closed] # Указываем триггер - опубликованный релиз release: types: [published] workflow_call: # позволяет запускать пайплайн вручную через вкладку Actions workflow_dispatch: # этап 2. jobs: build: if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} runs-on: self-hosted env: DOTNET_INSTALL_DIR: "./.dotnet" steps: - name: Clone repository uses: actions/checkout@v4 with: ref: release - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal # этап 3. - name: Move files to build deploy 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 backend else echo "docker-compose.yml not found, skipping docker-compose commands" fi