git-pages-cli#
git-pages-cli is a command-line application for publishing sites to git-pages.
TIP
If you want to publish a site from a CI workflow, use the Forgejo Action instead.
Installation#
You can install git-pages-cli using one of the following methods:
-
Downloading a binary. You can download the latest build or pick a release.
-
Using a Docker container. Choose between the latest build or a release tag. Then run:
$ docker run --rm codeberg.org/git-pages/git-pages-cli:latest ... -
Installing from source. First, install Go 1.25 or newer. Then run:
$ go install codeberg.org/git-pages/git-pages-cli@latest
Usage#
To prepare a DNS challenge for a given site and password:
$ git-pages-cli https://example.org --challenge # generate a random password
password: 28a616f4-2fbe-456b-8456-056d1f38e815
_git-pages-challenge.example.org. 3600 IN TXT "a59ecb58f7256fc5afb6b96892501007b0b65d64f251b1aca749b0fca61d582c"
$ git-pages-cli https://example.org --password xyz --challenge
_git-pages-challenge.example.org. 3600 IN TXT "6c47172c027b3c79358f9f8c110886baf4826d9bc2a1c7d0f439cc770ed42dc8"
$ git-pages-cli https://example.org --password xyz --challenge-bare
6c47172c027b3c79358f9f8c110886baf4826d9bc2a1c7d0f439cc770ed42dc8
To publish a site from a git repository available on the internet (--password may be omitted if the repository is allowlisted via DNS):
$ git-pages-cli https://example.org --upload-git https://codeberg.org/username/example.org.git
$ git-pages-cli https://example.org --password xyz --upload-git https://codeberg.org/username/example.org.git
To publish a site from a directory on your machine:
$ git-pages-cli https://example.org --password xyz --upload-dir site-contents
To delete a site:
$ git-pages-cli https://example.org --password xyz --delete
It is not possible to publish a site to a domain for the first time using HTTPS, since the git-pages server is not allowed to acquire a TLS certificate for a domain before a site is published on that domain. Either use plain HTTP instead, or provide a hostname for which the server does have a TLS certificate using the --server option:
$ git-pages-cli https://example.org --server grebedoc.dev --password xyz --upload-dir ...
Forge authorization#
Uploading a directory to a site on a wildcard domain (e.g. https://<owner>.grebedoc.dev/<repo>) requires the use of an access token with push permissions for the corresponding repository (https://codeberg.org/<owner>/<repo>.git in this case).
To create such an access token on Forgejo:
- Open Settings > Applications > Access tokens.
- Expand Select permissions, pick Read and write under repository.
- Set Token name to something informative (e.g. "git-pages publishing").
- Click Generate token.
- The token will appear in a notification (a long string of hexadecimal numbers all on its own).
To deploy using an access token:
$ git-pages-cli https://username.grebedoc.dev --token <token> --upload-dir ...
Keep the access token safe and secure! Anyone who has it will be able to change the data in any of your repositories.
Advanced usage#
To retrieve the site manifest (for debugging only: manifest schema is not versioned and subject to change without notice, including renaming of existing fields):
$ git-pages-cli https://example.org --password xyz --debug-manifest
{
"contents": {
"": {
"type": "Directory"
},
"index.html": {
"type": "InlineFile",
"size": "5",
"data": "bWVvdwo=",
"contentType": "text/html; charset=utf-8"
}
},
"originalSize": "5",
"compressedSize": "5",
"storedSize": "0",
"redirects": [],
"headers": [],
"problems": []
}