Bird
Raised Fist0
Expressframework~20 mins

CI/CD pipeline for Express apps - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Express CI/CD Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this GitHub Actions step?
Given this GitHub Actions step in a CI pipeline for an Express app, what will be the output if the tests fail?
Express
steps:
  - name: Run tests
    run: npm test
AThe pipeline stops and marks the job as failed.
BThe pipeline skips the test step and marks it as successful.
CThe pipeline retries the test step automatically.
DThe pipeline continues to the next step regardless of test results.
Attempts:
2 left
💡 Hint
By default, a failing command in GitHub Actions stops the job.
❓ Configuration
intermediate
2:00remaining
Which Dockerfile snippet correctly sets up an Express app for production?
Choose the Dockerfile snippet that correctly installs dependencies and starts the Express app in production mode.
A
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
B
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]
C
FROM node:18
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
D
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install --only=production
COPY . .
CMD ["node", "server.js"]
Attempts:
2 left
💡 Hint
Production installs only needed packages and uses the correct start file.
🔀 Workflow
advanced
3:00remaining
What is the correct order of steps in a CI/CD pipeline for an Express app?
Arrange these steps in the correct order for a typical CI/CD pipeline deploying an Express app.
A4,2,1,3
B4,1,2,3
C1,4,2,3
D2,4,1,3
Attempts:
2 left
💡 Hint
Code must be pushed before tests run, then build and deploy.
❓ Troubleshoot
advanced
2:00remaining
Why does this GitHub Actions step fail with 'npm: command not found'?
In a GitHub Actions workflow for an Express app, this step fails: - name: Install dependencies run: npm install What is the most likely cause?
AThe npm install command is misspelled.
BThe package.json file is missing in the repository.
CThe runner does not have Node.js installed or the PATH is incorrect.
DThe workflow YAML syntax is invalid.
Attempts:
2 left
💡 Hint
Check if Node.js is available on the runner environment.
✅ Best Practice
expert
3:00remaining
Which practice improves CI/CD pipeline speed for Express apps?
Select the best practice to speed up the CI/CD pipeline when building Docker images for Express apps.
AUse multi-stage Docker builds to separate dependencies installation from app code copying.
BAlways run npm install without caching to ensure fresh dependencies.
CBuild the Docker image on every commit without using any cache.
DPush the Docker image to the registry before running tests.
Attempts:
2 left
💡 Hint
Separating layers helps Docker cache dependencies and avoid reinstalling them every build.

Practice

(1/5)
1. What is the main purpose of a CI/CD pipeline for an Express app?
easy
A. To automate testing and deployment when code changes
B. To write the Express app code manually
C. To create a user interface for the app
D. To store data in a database

Solution

  1. Step 1: Understand CI/CD pipeline role

    A CI/CD pipeline automates repetitive tasks like testing and deployment to save time and reduce errors.
  2. Step 2: Identify pipeline purpose for Express app

    For an Express app, the pipeline runs tests and deploys the app automatically when code changes.
  3. Final Answer:

    To automate testing and deployment when code changes -> Option A
  4. Quick Check:

    CI/CD automates testing and deployment [OK]
Hint: CI/CD means automatic test and deploy on code change [OK]
Common Mistakes:
  • Thinking CI/CD writes code
  • Confusing deployment with UI design
  • Assuming CI/CD manages databases
2. Which of the following is the correct syntax to run tests in a GitHub Actions workflow for an Express app?
easy
A. execute: npm test
B. run npm test
C. run: npm test
D. command: npm test

Solution

  1. Step 1: Review GitHub Actions syntax for commands

    In GitHub Actions, commands run under a step use the key 'run:' followed by the command string.
  2. Step 2: Identify correct command format for tests

    To run tests with npm, the correct syntax is 'run: npm test'. Other options miss the colon or use wrong keys.
  3. Final Answer:

    run: npm test -> Option C
  4. Quick Check:

    GitHub Actions uses 'run:' before commands [OK]
Hint: GitHub Actions commands start with 'run:' [OK]
Common Mistakes:
  • Omitting colon after 'run'
  • Using 'execute' or 'command' instead of 'run'
  • Writing commands without quotes or colon
3. Given this GitHub Actions step in a CI/CD pipeline for an Express app:
  - name: Install dependencies
    run: npm install
  - name: Run tests
    run: npm test

What happens if the tests fail?
medium
A. The pipeline stops and deployment does not happen
B. The pipeline ignores test failures and continues deployment
C. The pipeline retries the tests automatically
D. The pipeline skips installation and runs tests again

Solution

  1. Step 1: Understand default GitHub Actions behavior on failure

    If a step like 'npm test' fails (returns error), the pipeline stops by default and does not proceed to next steps.
  2. Step 2: Apply this to deployment step

    Since deployment usually comes after tests, if tests fail, deployment will not run to avoid deploying broken code.
  3. Final Answer:

    The pipeline stops and deployment does not happen -> Option A
  4. Quick Check:

    Failed test stops pipeline by default [OK]
Hint: Failed test stops pipeline unless configured otherwise [OK]
Common Mistakes:
  • Assuming pipeline continues after test failure
  • Thinking tests auto-retry without setup
  • Confusing install step with test step
4. You wrote this GitHub Actions workflow snippet for your Express app:
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run npm test
      - name: Deploy
        run: npm run deploy

What is the error in this snippet?
medium
A. Wrong command 'npm run deploy' for deployment
B. Missing colon after 'run' in the Run tests step
C. Install dependencies step should use 'npm ci' instead of 'npm install'
D. Steps should be inside a job, not directly under steps

Solution

  1. Step 1: Check syntax of each step

    In GitHub Actions, each step's command must use 'run:' with a colon. The 'Run tests' step misses the colon after 'run'.
  2. Step 2: Verify other steps

    'npm run deploy' is a valid command if defined in package.json scripts. 'npm install' is acceptable.
  3. Final Answer:

    Missing colon after 'run' in the Run tests step -> Option B
  4. Quick Check:

    GitHub Actions commands need 'run:' with colon [OK]
Hint: Check colons after 'run' in each step [OK]
Common Mistakes:
  • Forgetting colon after 'run'
  • Assuming 'npm run deploy' is invalid
  • Confusing job structure with step syntax
5. You want to add a deployment step to your Express app's GitHub Actions pipeline that only runs when tests pass and on the main branch. Which is the best way to configure this?
hard
A. Put deploy step before tests to speed up pipeline
B. Add 'run: npm deploy' without conditions
C. Use 'if: failure()' to deploy only if tests fail
D. Use 'if: github.ref == "refs/heads/main" && success()' before the deploy step

Solution

  1. Step 1: Understand conditional deployment needs

    Deployment should run only on main branch and only if tests succeed to avoid deploying broken code or on wrong branches.
  2. Step 2: Use GitHub Actions condition syntax

    The 'if:' condition can check branch with 'github.ref == "refs/heads/main"' and check success with 'success()' function.
  3. Final Answer:

    Use 'if: github.ref == "refs/heads/main" && success()' before the deploy step -> Option D
  4. Quick Check:

    Conditional deploy uses 'if:' with branch and success check [OK]
Hint: Use 'if:' with branch and success() to control deploy [OK]
Common Mistakes:
  • Deploying without branch or success check
  • Deploying before tests run
  • Using failure() to deploy on test failure
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard