Example workflows for the ShipStatic GitHub Action — a React + Vite app deployed to action-example.shipstatic.com.
Every one of them writes a summary to its workflow run page — the deployment and its URL, plus the claim link and expiry where the deployment has them. Nothing to configure.
deploy-no-account.yml — Free, No Account Needed
Push to main deploys instantly. No API key, no sign-up, no configuration — the site is public and expires, and the run's summary shows the exact date beside a claim link that keeps it.
name: Deployon:
push:
branches: [main]jobs:
deploy:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v7
- run: npm ci && npm run build
- uses: shipstatic/action@v2with:
path: ./distdeploy-api-key.yml — Free API Key
Push to main deploys permanently. Get a free API key at my.shipstatic.com/api-key and add it as a SHIP_TOKEN secret.
name: Deployon:
push:
branches: [main]permissions:
contents: readjobs:
deploy:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v7
- run: npm ci && npm run build
- uses: shipstatic/action@v2with:
token: ${{ secrets.SHIP_TOKEN }}path: ./distdeploy-domain.yml — Free API Key + Custom Domain
Push to main deploys permanently and links a custom domain. Set a DOMAIN variable with your domain name (Settings > Variables > Actions).
name: Deployon:
push:
branches: [main]permissions:
contents: readjobs:
deploy:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v7
- run: npm ci && npm run build
- uses: shipstatic/action@v2with:
token: ${{ secrets.SHIP_TOKEN }}path: ./distdomain: ${{ vars.DOMAIN }}preview-pr.yml — PR Preview
Every pull request gets a preview deploy, with the URL posted as a comment that updates in place on every push rather than adding a new one. Works without an API key — the preview expires on its own, and the comment shows the exact date beside the claim link that keeps it.
name: Previewon: pull_requestpermissions:
contents: readpull-requests: writejobs:
preview:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v7
- run: npm ci && npm run build
- uses: shipstatic/action@v2with:
path: ./distdeploy-password.yml — Password-Protected Deploy
Push to main deploys with an unlock prompt — visitors enter the password before viewing. Works on any tier (no API key required). Set a SHIP_PASSWORD secret (6–128 characters) and share it out-of-band with the people who should see the site.
name: Deployon:
push:
branches: [main]jobs:
deploy:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v7
- run: npm ci && npm run build
- uses: shipstatic/action@v2with:
path: ./distpassword: ${{ secrets.SHIP_PASSWORD }}See the action documentation for all inputs, outputs, and options.