# ilot.io

Upstream: https://forge.ilot.io/ilot/ilot.io

## Forgejo Actions

This project's static Pages are built by Forgejo Actions, following the steps defined in `.forgejo/workflows/pages.yaml`. That builds this website using ikiwiki, and pushes the build artifacts to the `public` branch.

The `public` branch has its own workflow following steps defined in `forgejo/workflows/deploy.yaml` that uploads the artifacts to a remote HTTP server for deployment in production. This workflow is automatically updated from `main` so that `public` should never be manually modified.

The deployment is done by a simple remote git push via SSH to a non-bare repo where `git config receive.denyCurrentBranch` is set as `updateInstead`. This allows this repo to be checked out as `public`, allowing it to be a root for your favorite HTTP server.

The following secrets are expected to be set for operation: * PAGES_PRIVKEY: SSH private key that is used to push to the HTTP server's git repo * PAGES_TOKEN: Forgejo application token used to push to `public` branch.

The following variables are expected to be set for operation: * PAGES_TARGET: SSH target for HTTP server's git repo, following this format: user@example.net:/path/to/http/repo

## Building locally

To work locally with this project, you'll have to follow the steps below:

1. Fork, clone or download this project
2. Install ikiwiki:
   - mac
   - linux
   - source
3. Generate the website: `ikiwiki --setup ikiwiki.setup`
4. Start http-server: `./test-server.sh`
5. Preview your project: open 127.0.0.1:8080 in your browser

Read more at ikiwiki's documentation.

## Contributing

1. Fork the main ilot.io repo.

2. Checkout the forked repository.

   - `git clone ssh://git@forge.ilot.io/$USER/ilot.io`
   - `cd ilot.io`

3. Make your changes.

4. Do local build.

   - `ikiwiki --setup ikiwiki.setup`

5. Fix any errors that come up and rebuild until it works locally.

6. Commit the changes to the git repo in a git branch

   - `git checkout -b <name>`
   - `git add` changes
   - `git commit -m 'content/index: descriptive description'`
   - `git push`

7. Create a merge request with your changes by following link in server response.

8. Once the tests in the merge-request pass, and reviewers are happy, your changes will be merged.