diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 00000000..95568907 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,33 @@ +name: Docker CI Build + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and start services with Docker Compose (CI Mode) + run: | + CI=true COMMAND="npx serve -s build" docker compose up -d --build + + - name: Check running containers + run: docker ps -a + + - name: Check for container failures + run: | + docker compose logs --tail=50 + if [ "$(docker compose ps --format '{{.State}}' | grep -c exited)" -gt 0 ]; then + echo "A container has exited with an error. Failing the workflow." + exit 1 + fi diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index b6219f5e..e21428df 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,4 +1,4 @@ -name: Docker CI +name: Docker CI LINT on: push: @@ -19,7 +19,7 @@ jobs: - name: Build and start services with Docker Compose (CI Mode) run: | - CI=true COMMAND="npx serve -s build" docker compose up -d --build + CI=true LINT=true COMMAND="npx serve -s build" docker compose up -d --build - name: Check running containers run: docker ps -a diff --git a/Dockerfile b/Dockerfile index 69183eae..26f865ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,8 @@ WORKDIR /app COPY my-app . RUN npm ci ARG CI=false +ARG LINT=false RUN if [ "$CI" = "true" ]; then npm run build; fi -RUN if [ "$CI" = "true" ]; then npm run lint; fi +RUN if [ "$LINT" = "true" ]; then npm run lint; fi EXPOSE 5173 CMD ["npm", "run", "dev"] diff --git a/docker-compose.yml b/docker-compose.yml index 731c689d..64dd9f4b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,7 @@ services: dockerfile: Dockerfile args: - CI=${CI:-false} + - LINT=${LINT:-false} container_name: my-app ports: - "5173:5173"