Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

The package server on GitHub

The GitHub repository behind the package server, se7enxweb/exponential.packages.exponential.earth, and how it becomes a web site - the GitHub Pages settings, the workflow file line by line, the directory listing action…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/site-packages/package-server/the-package-server-on-github.md

On this page

The package server on GitHub

This page is for developers who want to understand, copy or contribute to the package server. It explains the repository se7enxweb/exponential.packages.exponential.earth, how GitHub turns it into https://exponential.packages.exponential.earth/, and what each file outside the release folders is for. Repository facts were read with gh api (read only) on 2026-10-18.

Contents

  1. The repository
  2. From push to web site
  3. The workflow file
  4. The directory listing action
  5. CNAME
  6. FUNDING.yml
  7. crossdomain.xml and README.md
  8. Copying the setup for your own server
  9. Related pages

The repository

PropertyValue
Namese7enxweb/exponential.packages.exponential.earth
Visibilitypublic
Default branchmaster
Homepagehttps://exponential.packages.exponential.earth/
Fork ofezpublishlegacy/packages.ezpublishlegacy.com, the 2014 mirror (History)
Sizeabout 2.5 GB with its history (the GitHub API reports 2,520,299 KB)
Issuesenabled
Commits341 (to 2026-10-16)

The tree:

.github/FUNDING.yml
.github/workflows/workflow.yml
CNAME
README.md
crossdomain.xml
exponential/6.0/<version>/index.xml
exponential/6.0/<version>/<name>.ezpkg
exponential/6.0/<version>/thumbnails/<name>.png

Tip

The repository is large because every .ezpkg of every release is kept in its history. For reading, clone it without blobs: git clone --filter=blob:none https://github.com/se7enxweb/exponential.packages.exponential.earth.git, then use git log and git ls-tree -r -l HEAD; Git fetches a file's content only when you open it.

From push to web site

StepWhat happens
1A commit is pushed to master (directly or by merging a pull request)
2The workflow main starts (on: [push])
3Job pages-directory-listing checks out master, writes an index.html into every folder and uploads the whole tree as the Pages artifact
4Job deploy publishes that artifact to the github-pages environment
5GitHub Pages serves it under the custom domain from CNAME, HTTPS enforced

The Pages settings, as the API reports them: build type workflow (not a branch), source branch master, custom domain exponential.packages.exponential.earth, HTTPS enforced. The workflow has run 150 times; the runs are listed under Actions.

Note

While a deployment runs, the server can answer with errors for a few minutes. This is why the setup wizard retries a failed download (When the package server cannot be reached).

The workflow file

.github/workflows/workflow.yml, shortened to its working lines:

name: main
on: [push]

concurrency:
  group: pages
  cancel-in-progress: false

jobs:
  pages-directory-listing:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
        with:
          ref: master
      - uses: jayanta525/github-pages-directory-listing@main
        with:
          FOLDER: .
      - uses: actions/upload-pages-artifact@v3
        with:
          path: '.'

  deploy:
    needs: pages-directory-listing
    permissions:
      pages: write
      id-token: write
    environment:
      name: github-pages
    runs-on: ubuntu-latest
    steps:
      - id: deployment
        uses: actions/deploy-pages@v4
PartWhy
concurrency: group: pages, cancel-in-progress: falseOne deployment at a time. Its comment: "A push that arrives while a deployment runs waits for it, and only the newest waiting push deploys; each deployment publishes the whole tree as of its commit, so nothing is lost when an older waiting one is skipped." Added on 2026-10-12, when packages pushed one after another made each other's deployments fail
ref: masterAlways deploys the branch, whatever ref was pushed
FOLDER: .Listing pages for the whole tree, from the top
path: '.'The whole checkout is the site
permissionsThe deploy job may write to Pages and request an OIDC token, which deploy-pages needs

The real file also has steps that print ls -al and du -sh ., to see the size of the artifact in the log.

The directory listing action

jayanta525/github-pages-directory-listing generates the "Index of /..." page for each folder. What the pages look like is described in Browsing the package server in a browser. Before 2023-12-24 the server used a JavaScript file browser in a hand-made index.html; it was replaced by this action.

CNAME

CNAME holds one line, the host name GitHub Pages answers to:

exponential.packages.exponential.earth

It has had this value since 2025-08-13. Changing it moves the site to another host name; every installation whose RemotePackagesIndexURL names the old one would then depend on a redirect. Do not change it in a pull request.

FUNDING.yml

.github/FUNDING.yml makes GitHub show a Sponsor button on the repository. It names GitHub Sponsors for the se7enxweb organization, Patreon, and custom links to PayPal, Venmo, Cash App and https://se7enx.com. It was created on 2023-12-24. It has no effect on the web site. See Who is the Exponential Foundation? for how the project is funded.

crossdomain.xml and README.md

  • crossdomain.xml is a cross-domain policy that allows access from any domain (<allow-access-from domain="*"/>). It came with the 2014 mirror; nothing in Exponential reads it.
  • README.md names the server ("Package server for Exponential 6."), the date of its last update, and links to the project, the package server, the documentation, the community and the vendor. It is served as a file of the site and shown on the repository's front page.

Copying the setup for your own server

The same three things make any repository a package server: release folders with an index.xml and the packages, a Pages workflow like the one above, and, if you want your own host name, a CNAME file and a DNS record for it. See Running your own package server. For a package that everyone should get, a pull request to this repository is the better way: Contribute your site package.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x