@@ -25,35 +25,23 @@ jobs:
2525 - name : Create placeholder env files
2626 run : |
2727 touch .env
28- mkdir -p backend telegram-bot
29- touch backend/.env telegram-bot/.env
28+ mkdir -p backend
29+ touch backend/.env
3030
3131 - name : Validate local Docker Compose
3232 run : docker compose config
3333
3434 - name : Validate server Docker Compose
3535 env :
3636 BACKEND_IMAGE : ghcr.io/example/focus/backend:test
37- TELEGRAM_BOT_IMAGE : ghcr.io/example/focus/telegram-bot:test
3837 DATABASE_URL : postgres://user:pass@db:5432/focus?sslmode=disable
3938 JWT_SECRET : test-secret
4039 TELEGRAM_BOT_AUTH_TOKEN : test-bot-auth
41- TELEGRAM_BOT_TOKEN : test-bot-token
4240 run : docker compose -f deploy/docker-compose.server.yml config
4341
4442 build-and-push-images :
4543 needs : compose-validate
4644 runs-on : ubuntu-latest
47- strategy :
48- fail-fast : false
49- matrix :
50- include :
51- - service : backend
52- context : ./backend
53- image_suffix : backend
54- - service : telegram-bot
55- context : ./telegram-bot
56- image_suffix : telegram-bot
5745 steps :
5846 - uses : actions/checkout@v4
5947
@@ -67,14 +55,14 @@ jobs:
6755 username : ${{ github.actor }}
6856 password : ${{ secrets.GHCR_TOKEN }}
6957
70- - name : Build and push ${{ matrix.service }}
58+ - name : Build and push backend
7159 uses : docker/build-push-action@v6
7260 with :
73- context : ${{ matrix.context }}
61+ context : ./backend
7462 push : true
7563 tags : |
76- ghcr.io/${{ github.repository }}/${{ matrix.image_suffix }} :${{ github.sha }}
77- ghcr.io/${{ github.repository }}/${{ matrix.image_suffix }} :latest
64+ ghcr.io/${{ github.repository }}/backend :${{ github.sha }}
65+ ghcr.io/${{ github.repository }}/backend :latest
7866 cache-from : type=gha
7967 cache-to : type=gha,mode=max
8068
9280 SSH_PRIVATE_KEY : ${{ secrets.SSH_PRIVATE_KEY }}
9381 GHCR_TOKEN : ${{ secrets.GHCR_TOKEN }}
9482 BACKEND_IMAGE : ghcr.io/${{ github.repository }}/backend:${{ github.sha }}
95- TELEGRAM_BOT_IMAGE : ghcr.io/${{ github.repository }}/telegram-bot:${{ github.sha }}
9683 steps :
9784 - uses : actions/checkout@v4
9885
@@ -167,10 +154,8 @@ jobs:
167154 run : |
168155 cat > deploy.env <<EOF
169156 BACKEND_IMAGE=${BACKEND_IMAGE}
170- TELEGRAM_BOT_IMAGE=${TELEGRAM_BOT_IMAGE}
171157 DOCKER_NETWORK=${{ secrets.DOCKER_NETWORK }}
172158 BACKEND_PORT=${{ secrets.BACKEND_PORT }}
173- BOT_PORT=${{ secrets.BOT_PORT }}
174159 PORT=${{ secrets.PORT }}
175160 DATABASE_URL=${{ secrets.DATABASE_URL }}
176161 CORS_ORIGIN=${{ secrets.CORS_ORIGIN }}
@@ -191,11 +176,6 @@ jobs:
191176 EMAIL_VERIFY_FAIL_REDIRECT=${{ secrets.EMAIL_VERIFY_FAIL_REDIRECT }}
192177 EMAIL_VERIFICATION_TTL_MINUTES=${{ secrets.EMAIL_VERIFICATION_TTL_MINUTES }}
193178 EMAIL_RESET_PASSWORD_URL_BASE=${{ secrets.EMAIL_RESET_PASSWORD_URL_BASE }}
194- TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }}
195- BACKEND_URL=${{ secrets.BACKEND_URL }}
196- APP_URL=${{ secrets.APP_URL }}
197- TELEGRAM_POLL_TIMEOUT_SECONDS=${{ secrets.TELEGRAM_POLL_TIMEOUT_SECONDS }}
198- BOT_INTERNAL_API_ADDR=${{ secrets.BOT_INTERNAL_API_ADDR }}
199179 EOF
200180
201181 - name : Upload env file
@@ -211,6 +191,19 @@ jobs:
211191 echo "$GHCR_TOKEN" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
212192 docker compose --env-file .env pull
213193 docker compose --env-file .env run --rm migrate
214- docker compose --env-file .env up -d backend telegram-bot
194+ docker compose --env-file .env up -d backend
195+ sleep 10
196+ docker compose --env-file .env ps --all || true
197+ docker ps -a --filter "name=mathalama-focus-backend" || true
198+
199+ backend_status="$(docker inspect -f '{{.State.Status}}' mathalama-focus-backend 2>/dev/null || true)"
200+
201+ if [ "$backend_status" != "running" ]; then
202+ echo "Deployed backend container is not running" >&2
203+ echo "backend status: ${backend_status:-missing}" >&2
204+ docker logs mathalama-focus-backend || true
205+ exit 1
206+ fi
207+
215208 docker image prune -f
216209 EOF
0 commit comments