name: Build and deploy demo app on: push: branches: - main workflow_dispatch: env: APP_NAME: demo-app DEPLOY_DIR: /workspace/apps/demo-app REGISTRY: localhost:5001 IMAGE_NAME: localhost:5001/${{ github.repository }} jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout run: | set -eu git clone "http://x-access-token:${GITHUB_TOKEN}@gitea:3000/${GITHUB_REPOSITORY}.git" . git checkout "$GITHUB_SHA" - name: Show context run: | set -eu echo "repository=${{ github.repository }}" echo "sha=${{ github.sha }}" docker version - name: Build image run: | set -eu docker build \ --label "org.opencontainers.image.revision=${{ github.sha }}" \ -t "$IMAGE_NAME:${{ github.sha }}" \ -t "$IMAGE_NAME:latest" \ . - name: Push image run: | set -eu docker push "$IMAGE_NAME:${{ github.sha }}" docker push "$IMAGE_NAME:latest" - name: Deploy with local Docker Compose run: | set -eu mkdir -p "$DEPLOY_DIR" cat > "$DEPLOY_DIR/docker-compose.yml" < "$DEPLOY_DIR/.env" <> "$DEPLOY_DIR/.env" fi fi docker compose -f "$DEPLOY_DIR/docker-compose.yml" pull docker compose -f "$DEPLOY_DIR/docker-compose.yml" up -d - name: Health check run: | set -eu for i in $(seq 1 30); do if curl -fsS http://host.docker.internal:8088/health; then exit 0 fi sleep 2 done docker compose -f "$DEPLOY_DIR/docker-compose.yml" ps docker logs local-demo-app --tail=100 || true exit 1