Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: adding FAQs and must do in case of emergency #10

Merged
merged 1 commit into from
Jul 22, 2024
Merged
Changes from all commits
Commits
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
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

Repo management for Nethsecurity installations.

Something went wrong with some packages? Go straight to
the [faulty packages section](#list-of-behaviours-in-case-of-distribution-of-faulty-packages). :rocket:

## Application Structure

The application is structured as follows:
Expand Down Expand Up @@ -290,6 +293,8 @@ php artisan repository:sync {repository_name}

### Freezing repositories

Freezing a repository will prevent the system to use the normal defer release using the snapshots. This won't halt
syncs, so you can freeze the repository to avoid a faulty package, you then unfreeze it to skip faulty packages.
To freeze a repository, you can use the `php artisan repository:freeze {repository_name}` command.

```bash
Expand Down Expand Up @@ -330,6 +335,16 @@ You can specify the path to list the files in a specific directory.
php artisan repository:files {repository_name} {path}
```

This is useful when looking for a specific package that is causing issues like this:

```bash
php artisan repository:files {repository_name} . | grep {package_name}
```

Using `.` as path everything on the storage will be listed, allowing to find for each snapshot the package that has been
released. Remember that `source/{repository_name}` folder is always the latest sync, while `snapshots/{repository_name}`
are the daily syncs.

### List repository snapshots

To list all the snapshots of a repository, you can use the `php artisan snapshot:list {repository_name}` command, you'll
Expand All @@ -339,3 +354,30 @@ be provided the folder that are snapshotted and which one is currently being ser
php artisan snapshot:list {repository_name}
```

## List of behaviours in case of distribution of faulty packages

The following list is a guide on how to handle the distribution of faulty packages, to find which of the snapshots has a
faulty package go to the [list repository files](#listing-files-in-a-repository) section.

- **Community repository has a faulty package**:
Try to fix the issue before the daily sync happens, otherwise follow through in the next steps.

- **Faulty package is in the snapshot `X`**:
You can safely delete the faulty snapshot, Parceler will use the oldest snapshot available inside the `delay`
timer given for each repo.

- **Faulty package is in snapshot `X`, but community has a fix**:
You can manually [sync the repository](#repo-sync) to get the latest snapshot (if you don't have it already),
then delete all the snapshots with the faulty package, Parceler will have the same behaviour as in the previous
step.

- **Faulty package is in snapshot `X`, with no fix available**:
You can [freeze the repository](#freezing-repositories) to avoid the faulty package, then when a fix is
eventually released you can [unfreeze the repository](#unfreezing-repositories) to skip the faulty package.

## FAQ

### How do I know when the latest sync happened?

You can check the timestamp of the latest snapshot for each repository, otherwise you can check the `worker` container
logs.