Skip to content
FlightStack Docs
Sign in Start free

Deploy Web Job | FlightStack

Takes the artifact produced by Build Web and pushes it to Firebase Hosting. Supports the live channel and time-bounded preview channels.

Step ref: flightstack/deploy-web@1.0.0.

  • A successful Build Web job upstream (artifact: web-release.zip).
  • A Firebase project linked via a Firebase service-account credential in code signing storage.
  • Firebase Hosting enabled on that project.
OptionDescriptionDefault
Project IDFirebase project IDfrom credential
Site IDFirebase Hosting site ID (multi-site setups)
Channellive or a preview channel namelive
Preview expirationDays until preview channel expires (preview only)7
Service accountFirebase service-account credential (FlightStack credential ID)required
  1. The agent downloads web-release.zip and extracts it locally.
  2. Downloads the Firebase service-account JSON from FlightStack code-signing storage.
  3. Runs firebase hosting:channel:deploy (preview) or firebase deploy --only hosting (live).
  4. Posts back the resulting public URL — which appears on the run page.

If Project ID is set on both the credential and the job, the job-level value wins.

┌──────────┐ ┌───────────┐ ┌────────────┐
│ On Push │───▶│ Build Web │───▶│ Deploy Web │
│ main │ │ │ │ live │
└──────────┘ └───────────┘ └────────────┘
┌──────────┐ ┌───────────┐ ┌────────────────┐
│ On PR │───▶│ Build Web │───▶│ Deploy Web │
│ │ │ │ │ preview, 7 days │
└──────────┘ └───────────┘ └────────────────┘
NameDescription
deployedUrlPublic URL of the deployed site or preview
channelIdChannel ID (only for previews)
expiresAtExpiration timestamp (only for previews)

Reference downstream with ${{ steps.deploy.outputs.deployedUrl }} — see variables.

“Project ID is not configured” Set Project ID on the Firebase Service Account credential in FlightStack, or set it explicitly on this job.

“403 PERMISSION_DENIED firebasehosting.googleapis.com” The service account is missing the Firebase Hosting Admin role.