Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
2b28685
feat: migrate from App Engine to Firebase Hosting
max-ostapenko Sep 14, 2026
b9bfa56
fix(ci): use node 24 and increase emulator startup timeout in test wo…
max-ostapenko Sep 14, 2026
617afcf
Merge branch 'main' into migrate-firebase-hosting
max-ostapenko Sep 20, 2026
3132c34
feat(ci): upgrade to Node 26, enable npm caching, and modularize test…
max-ostapenko Sep 20, 2026
df2f2c8
docs: update README.md
max-ostapenko Sep 20, 2026
7f7d2d1
chore: remove obsolete run_and_test_website.bat
max-ostapenko Sep 20, 2026
c1430c9
ci: cache firebase-tools CLI and simplify test runner script
max-ostapenko Sep 20, 2026
a6a428b
ci: use actions/cache@v6 and native action if for firebase-tools install
max-ostapenko Sep 20, 2026
297bdac
ci: auto-detect npm-global firebase in test script and remove separat…
max-ostapenko Sep 20, 2026
8782845
build(deps-dev): add firebase-tools to devDependencies and simplify w…
max-ostapenko Sep 20, 2026
5ed3e7c
refactor(scripts): add emulate npm script and use it in run_and_test_…
max-ostapenko Sep 20, 2026
a71a37f
ci: merge firebase preview deployment into test-website workflow
max-ostapenko Sep 20, 2026
0d9b09e
ci: guard Firebase preview deployment with GCP_SA_KEY secret check
max-ostapenko Sep 20, 2026
c707f8a
ci: use github.event.pull_request.head.repo.full_name check for fork …
max-ostapenko Sep 20, 2026
84b182f
chore: remove obsolete .gcloudignore and update .nvmrc to Node 26
max-ostapenko Sep 20, 2026
f363e9d
refactor(test): remove HTML dumping from status tests and lint dist d…
max-ostapenko Sep 20, 2026
845d335
chore: remove public static js and html from gitignore
max-ostapenko Sep 20, 2026
84b6737
ci: remove redundant dependabot step from linter workflow
max-ostapenko Sep 20, 2026
91a2e3f
ci: replace super-linter in test-website with native htmlhint
max-ostapenko Sep 20, 2026
0400899
refactor: remove duplicate .htmlhintrc_morechecks
max-ostapenko Sep 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .firebaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"projects": {
"default": "httparchive"
}
}
23 changes: 0 additions & 23 deletions .gcloudignore

This file was deleted.

25 changes: 0 additions & 25 deletions .github/linters/.htmlhintrc_morechecks

This file was deleted.

28 changes: 15 additions & 13 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
## Custom HTTP Archive GitHub action ##
######################################
#
# Deploys the website to Google App Engine (production) on every push to main.
# Deploys the website to Firebase Hosting (production live channel) on every push to main.
# Requires a GCP service account key stored as the GCP_SA_KEY repository secret.
#
name: Deploy to Production
Expand All @@ -12,9 +12,13 @@ on:
branches:
- main

permissions:
checks: write
contents: read

jobs:
deploy:
name: Build and Deploy to App Engine
name: Build and Deploy to Firebase Hosting (Production)
runs-on: ubuntu-latest
if: github.repository == 'HTTPArchive/httparchive.org'
steps:
Expand All @@ -24,21 +28,19 @@ jobs:
- name: Setup Node.js for use with actions
uses: actions/setup-node@v7
with:
node-version: '24'
node-version: '26'
cache: 'npm'

- name: Install dependencies
run: npm ci || npm install
run: npm ci

- name: Build website
run: npm run build

- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v3
- name: Deploy to Firebase Hosting (Live)
uses: FirebaseExtended/action-hosting-deploy@v0
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v3

- name: Deploy to App Engine
run: echo "Y" | gcloud app deploy app.yaml --project httparchive
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.GCP_SA_KEY }}'
channelId: live
projectId: httparchive
33 changes: 3 additions & 30 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ name: Lint Code Base
on:
- workflow_dispatch
- pull_request

jobs:
lint:
name: Lint Code Base
Expand All @@ -20,13 +21,15 @@ jobs:
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0

- name: Set VALIDATE_ALL_CODEBASE variable to false
# Only run the full workflow for manual runs or if upgrading the super linter
if: |
github.event_name != 'workflow_dispatch' &&
startsWith(github.event.pull_request.title,'Bump super-linter/super-linter') != true
run: |
echo "VALIDATE_ALL_CODEBASE=false" >> $GITHUB_ENV

- name: Lint Code Base
uses: super-linter/super-linter/slim@v8
env:
Expand All @@ -42,33 +45,3 @@ jobs:
VALIDATE_JSON: true
VALIDATE_MARKDOWN: true
VALIDATE_YAML: true

dependabot:
name: Dependabot auto-merge
runs-on: ubuntu-latest
needs: lint
if: |
github.event.pull_request.user.login == 'dependabot[bot]' &&
github.repository == 'HTTPArchive/httparchive.org'

permissions:
contents: write
pull-requests: write

steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v3
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

- name: Enable auto-merge for Dependabot PRs
if: |
contains(steps.metadata.outputs.dependency-names, 'super-linter') && (
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
steps.metadata.outputs.update-type == 'version-update:semver-minor'
)
run: gh pr merge --squash --auto "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
9 changes: 8 additions & 1 deletion .github/workflows/predeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@ jobs:
- name: Setup Node.js for use with actions
uses: actions/setup-node@v7
with:
node-version: '24'
node-version: '26'
cache: 'npm'
- name: Install dependencies
run: npm ci

- name: Build website
run: npm run build

- name: Run the website
run: ./tools/scripts/run_and_test_website.sh
- name: Update timestamps
Expand Down
48 changes: 30 additions & 18 deletions .github/workflows/test-website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,24 @@
## Custom HTTP Archive GitHub action ##
#######################################
#
# This generates snd tests the website when a pull request is
# This generates and tests the website when a pull request is
# opened (or added to) on the original repo
#

name: Test Website
on:
workflow_dispatch:
pull_request:

jobs:
build:
name: Build and Test Website
runs-on: ubuntu-latest
if: github.repository == 'HTTPArchive/httparchive.org'
permissions:
checks: write
contents: read
pull-requests: write

steps:
- name: Checkout branch
uses: actions/checkout@v7
Expand All @@ -24,26 +30,34 @@ jobs:
- name: Setup Node.js for use with actions
uses: actions/setup-node@v7
with:
node-version: '26'
node-version: '26'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run the website
- name: Build website
env:
SOURCE_MAPS: true
run: npm run build

- name: Run the website and test
env:
KEEP_SERVER_RUNNING: true
SOURCE_MAPS: true
run: ./tools/scripts/run_and_test_website.sh

- name: Use more complete checks for generated HTML linting
run: cp -f .github/linters/.htmlhintrc_morechecks .github/linters/.htmlhintrc
- name: Deploy to Firebase Hosting Preview Channel
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.GCP_SA_KEY }}'
projectId: httparchive

- name: Lint Generated HTML
uses: super-linter/super-linter/slim@v8
env:
ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT: false
FILTER_REGEX_INCLUDE: .*static/html/.*
FILTER_REGEX_EXCLUDE: .*node_modules/.*
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_HTML: true
USE_FIND_ALGORITHM: true
run: npm run lint:html


- name: Set the list of URLs for Lighthouse to check
env:
Expand Down Expand Up @@ -86,10 +100,8 @@ jobs:

- name: Enable auto-merge for Dependabot PRs
if: |
(
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
steps.metadata.outputs.update-type == 'version-update:semver-minor'
) && !contains(steps.metadata.outputs.dependency-names, 'super-linter')
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
steps.metadata.outputs.update-type == 'version-update:semver-minor'
run: gh pr merge --squash --auto "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
Expand Down
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
.idea/
node_modules/
public/static/js
public/static/html
templates/sitemap.xml
*.log
**/.DS_Store
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24
26
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Run Locally

This is an Astro-based web application for HTTPArchive.org. It requires **Node.js >= 24.0.0**.
This is an Astro-based web application for HTTPArchive.org.

1. Install the NPM dependencies:

Expand Down
68 changes: 0 additions & 68 deletions app.yaml

This file was deleted.

Loading
Loading