Compare commits
No commits in common. "main" and "librepages" have entirely different histories.
main
...
librepages
69 changed files with 4268 additions and 1845 deletions
32
.github/workflows/publish.yml
vendored
32
.github/workflows/publish.yml
vendored
|
@ -1,32 +0,0 @@
|
|||
name: Documentation
|
||||
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-18.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Zola
|
||||
run: ./scripts/ci.sh install
|
||||
|
||||
- name: Build production website
|
||||
run: ./scripts/ci.sh build
|
||||
|
||||
- name: Deploy to gh-pages 🚀
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.4
|
||||
with:
|
||||
branch: gh-pages
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
folder: ./public
|
||||
|
||||
- name: deploy
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'forgeflux-org/docs' }}
|
||||
run: >-
|
||||
curl --location --request POST "https://deploy.batsense.net/api/v1/update" --header 'Content-Type: application/json' --data-raw "{ \"secret\": \"${{ secrets.DEPLOY_TOKEN }}\", \"branch\": \"gh-pages\" }"
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
public/
|
||||
sec/
|
|
@ -1,10 +0,0 @@
|
|||
pipeline:
|
||||
build:
|
||||
image: python
|
||||
when:
|
||||
event: [ push, pull_request, tag, deployment ]
|
||||
commands:
|
||||
- make env
|
||||
- make
|
||||
- make ci-deploy
|
||||
secrets: [ GITEA_WRITE_DEPLOY_KEY, LIBREPAGES_DEPLOY_SECRET ]
|
3
404.html
Normal file
3
404.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<!doctype html>
|
||||
<title>404 Not Found</title>
|
||||
<h1>404 Not Found</h1>
|
298
Interface/about/index.html
Normal file
298
Interface/about/index.html
Normal file
|
@ -0,0 +1,298 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | About Interface </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="interface">Interface</h1>
|
||||
<p>Interface is a service that acts as a connecting end of the bridge, listening
|
||||
in for Notifications from a particular forge repository.</p>
|
||||
<p>These notifications, which may be in the form of a Comment, Issue, or Pull Request,
|
||||
are then further defined into Events to create
|
||||
a workable unit set, that the interface can use to translate operations from
|
||||
one forge to another forge.</p>
|
||||
<p>The procedure of the Notification-Event Translation System, works as follows,</p>
|
||||
<ol>
|
||||
<li>Upon creation of the Interface, and set up of a forge repository to look for, the interface subscribes to the forge's notifications.</li>
|
||||
<li>Every notification received by the interface from the forges, is then identified and translated into it's respective <code>Event</code> model, be it an Issue or PR.</li>
|
||||
<li>Upon conversion into the respective model, Interface processes these <code>Events</code>, and converts them into the model required for the destination forge.</li>
|
||||
</ol>
|
||||
<h2 id="setting-up-the-development-environment">Setting up the Development Environment</h2>
|
||||
<p>In order to test out and utilise the Northstar lookup service, we will need to set
|
||||
up an interface to be run on the local machine. There are a few configuration
|
||||
changes that must be made for the interface to be recognized by the lookup service.</p>
|
||||
<p>Changes to the <code>config/settings.toml</code>,</p>
|
||||
<pre data-lang="toml" style="background-color:#eff1f5;color:#4f5b66;" class="language-toml "><code class="language-toml" data-lang="toml"><span>[default.system]
|
||||
</span><span style="color:#bf616a;">northstar </span><span>= "</span><span style="color:#a3be8c;">http://computer.domain.com:port</span><span>"
|
||||
</span><span>
|
||||
</span><span>[default.server]
|
||||
</span><span style="color:#bf616a;">url </span><span>= "</span><span style="color:#a3be8c;">http://computer.domain.com:port</span><span>"
|
||||
</span></code></pre>
|
||||
<p>Note that the port assigned to the interface and northstar must not already be in
|
||||
use by another application/service, and that you can find out the hostname for
|
||||
your system through the following command,</p>
|
||||
<pre data-lang="sh" style="background-color:#eff1f5;color:#4f5b66;" class="language-sh "><code class="language-sh" data-lang="sh"><span style="color:#bf616a;">hostname --fqdn
|
||||
</span></code></pre>
|
||||
<p>There are a few more settings to add in, as a means to validate the user who hosts
|
||||
the interface, this also depends on the forge of your choosing. As of right now,
|
||||
<code>interface</code> supports only gitea, and we can fill up the <code>config/settings.toml</code>,
|
||||
with the same.</p>
|
||||
<pre data-lang="toml" style="background-color:#eff1f5;color:#4f5b66;" class="language-toml "><code class="language-toml" data-lang="toml"><span>[default]
|
||||
</span><span style="color:#bf616a;">forge </span><span>= "</span><span style="color:#a3be8c;">gitea</span><span>"
|
||||
</span><span>
|
||||
</span><span>[default.gitea]
|
||||
</span><span style="color:#bf616a;">host </span><span>= "</span><span style="color:#a3be8c;">https://gitea.com</span><span>"
|
||||
</span><span style="color:#bf616a;">api_key </span><span>= "</span><span style="color:#a3be8c;">generate-the-api-key-from-gitea-and-paste-here</span><span>"
|
||||
</span><span style="color:#bf616a;">username </span><span>= "</span><span style="color:#a3be8c;">fluxer101</span><span>"
|
||||
</span><span style="color:#bf616a;">password </span><span>= "</span><span style="color:#a3be8c;">flux101</span><span>"
|
||||
</span></code></pre>
|
||||
<p>Note that the API key in Gitea is known as an access token, one which can be
|
||||
generated <a href="https://gitea.com/user/settings/applications">here</a>.</p>
|
||||
<h2 id="faq">FAQ</h2>
|
||||
<h3 id="why-does-an-integrity-error-show-up">Why does an integrity error show up?</h3>
|
||||
<p>As ForgeFlux's Interface is an actively developing project, there are a few
|
||||
errors that are caused by an upgrade to the database, in which case integrity errors
|
||||
are bound to pop up. In this case, remove the <code>instance/</code> directory where the database
|
||||
for the service would be stored, to rebuild it the next time the application is run.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
43
Interface/index.html
Normal file
43
Interface/index.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Zola</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Welcome to Zola!</h1>
|
||||
<p>
|
||||
You're seeing this page because we couldn't find a template to render.
|
||||
</p>
|
||||
<p>
|
||||
To modify this page, create a <b>section.html</b> file in the templates directory or
|
||||
<a href="https://www.getzola.org/documentation/themes/installing-and-using-themes/" target="_blank">install a theme</a>.
|
||||
<br>
|
||||
You can find what variables are available in this template in the <a href="https://www.getzola.org/documentation/templates/pages-sections/#section-variables" target="_blank">documentation</a>.
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://www.getzola.org/documentation/getting-started/cli-usage/" target="_blank">Get started with Zola</a>
|
||||
</footer>
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.5;
|
||||
}
|
||||
h1 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.container {
|
||||
font-family: "sans-serif";
|
||||
text-align: center;
|
||||
margin-top: 20vh;
|
||||
padding: 2rem;
|
||||
background: #e9e9e9;
|
||||
}
|
||||
footer {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
21
LICENSE
21
LICENSE
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021 Roman Soldatenkov
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
27
Makefile
27
Makefile
|
@ -1,27 +0,0 @@
|
|||
default: ## Build the website
|
||||
./scripts/spellcheck.sh --check
|
||||
./scripts/zola.sh build
|
||||
|
||||
clean: ## Clean build assets
|
||||
./scripts/zola.sh clean
|
||||
|
||||
ci-deploy: ## Deploy from CI/CD. Only call from within CI
|
||||
@if [ "${CI}" != "woodpecker" ]; \
|
||||
then echo "Only call from within CI. Will re-write your local Git configuration. To override, set export CI=woodpecker"; \
|
||||
exit 1; \
|
||||
fi
|
||||
git config --global user.email "${CI_COMMIT_AUTHOR_EMAIL}"
|
||||
git config --global user.name "${CI_COMMIT_AUTHOR}"
|
||||
./scripts/zola.sh deploy librepages public "${CI_COMMIT_AUTHOR} <${CI_COMMIT_AUTHOR_EMAIL}>"
|
||||
./scripts/ci.sh --init "$$GITEA_WRITE_DEPLOY_KEY"
|
||||
./scripts/ci.sh --deploy ${LIBREPAGES_DEPLOY_SECRET} librepages
|
||||
./scripts/ci.sh --clean
|
||||
|
||||
env: ## Download build dependencies and setup dev environment
|
||||
./scripts/zola.sh install
|
||||
|
||||
help: ## Prints help for targets with comments
|
||||
@cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
serve: ## Serve website during development
|
||||
./scripts/zola.sh zola -- serve
|
250
Northstar/about/index.html
Normal file
250
Northstar/about/index.html
Normal file
|
@ -0,0 +1,250 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | About Northstar </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="northstar">Northstar <a class="anchor" href="#northstar"></a></h1>
|
||||
<p>Northstar is a lookup service, which acts as a source of information
|
||||
for interfaces which hold particular forge information.</p>
|
||||
<p>An <a href="https://docs.forgeflux.org/Interface/">Interface</a> connects and looks
|
||||
through an instance of Northstar, to find the appropriate the forge
|
||||
information that it seeks.</p>
|
||||
<p>An instance of Northstar has the functionality to act as an API to
|
||||
register and provide forge information.
|
||||
These routes/payloads are covered in the <a href="https://northstar.forgeflux.org/docs/openapi/">OpenAPI specification</a>
|
||||
for Northstar.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
43
Northstar/index.html
Normal file
43
Northstar/index.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Zola</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Welcome to Zola!</h1>
|
||||
<p>
|
||||
You're seeing this page because we couldn't find a template to render.
|
||||
</p>
|
||||
<p>
|
||||
To modify this page, create a <b>section.html</b> file in the templates directory or
|
||||
<a href="https://www.getzola.org/documentation/themes/installing-and-using-themes/" target="_blank">install a theme</a>.
|
||||
<br>
|
||||
You can find what variables are available in this template in the <a href="https://www.getzola.org/documentation/templates/pages-sections/#section-variables" target="_blank">documentation</a>.
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://www.getzola.org/documentation/getting-started/cli-usage/" target="_blank">Get started with Zola</a>
|
||||
</footer>
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.5;
|
||||
}
|
||||
h1 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.container {
|
||||
font-family: "sans-serif";
|
||||
text-align: center;
|
||||
margin-top: 20vh;
|
||||
padding: 2rem;
|
||||
background: #e9e9e9;
|
||||
}
|
||||
footer {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +0,0 @@
|
|||
# ForgeFlux
|
||||
|
||||
This is the documentation repository for the ForgeFlux Ecosystem. \
|
||||
Check us out at [ForgeFlux.org](https://forgeflux.org).
|
13
config.toml
13
config.toml
|
@ -1,13 +0,0 @@
|
|||
base_url = "https://docs.forgeflux.org"
|
||||
title = "Docs"
|
||||
compile_sass = true
|
||||
build_search_index = true
|
||||
|
||||
[markdown]
|
||||
highlight_code = true
|
||||
highlight_theme = "base16-ocean-light"
|
||||
|
||||
[extra]
|
||||
logo = "/logo.svg"
|
||||
#release = "https://api.github.com/repos/getzola/zola/releases/latest"
|
||||
favicon = "https://forgeflux.org/favicon.ico"
|
|
@ -1,4 +0,0 @@
|
|||
+++
|
||||
title = "Interface"
|
||||
weight = 40
|
||||
+++
|
|
@ -1,72 +0,0 @@
|
|||
+++
|
||||
title = "About Interface"
|
||||
weight = 40
|
||||
+++
|
||||
|
||||
# Interface
|
||||
|
||||
Interface is a service that acts as a connecting end of the bridge, listening
|
||||
in for Notifications from a particular forge repository.
|
||||
|
||||
These notifications, which may be in the form of a Comment, Issue, or Pull Request,
|
||||
are then further defined into Events to create
|
||||
a workable unit set, that the interface can use to translate operations from
|
||||
one forge to another forge.
|
||||
|
||||
The procedure of the Notification-Event Translation System, works as follows,
|
||||
|
||||
1. Upon creation of the Interface, and set up of a forge repository to look for, the interface subscribes to the forge's notifications.
|
||||
2. Every notification received by the interface from the forges, is then identified and translated into it's respective `Event` model, be it an Issue or PR.
|
||||
3. Upon conversion into the respective model, Interface processes these `Events`, and converts them into the model required for the destination forge.
|
||||
|
||||
## Setting up the Development Environment
|
||||
|
||||
In order to test out and utilise the Northstar lookup service, we will need to set
|
||||
up an interface to be run on the local machine. There are a few configuration
|
||||
changes that must be made for the interface to be recognized by the lookup service.
|
||||
|
||||
Changes to the `config/settings.toml`,
|
||||
|
||||
```toml
|
||||
[default.system]
|
||||
northstar = "http://computer.domain.com:port"
|
||||
|
||||
[default.server]
|
||||
url = "http://computer.domain.com:port"
|
||||
```
|
||||
|
||||
Note that the port assigned to the interface and northstar must not already be in
|
||||
use by another application/service, and that you can find out the hostname for
|
||||
your system through the following command,
|
||||
|
||||
```sh
|
||||
hostname --fqdn
|
||||
```
|
||||
|
||||
There are a few more settings to add in, as a means to validate the user who hosts
|
||||
the interface, this also depends on the forge of your choosing. As of right now,
|
||||
`interface` supports only gitea, and we can fill up the `config/settings.toml`,
|
||||
with the same.
|
||||
|
||||
```toml
|
||||
[default]
|
||||
forge = "gitea"
|
||||
|
||||
[default.gitea]
|
||||
host = "https://gitea.com"
|
||||
api_key = "generate-the-api-key-from-gitea-and-paste-here"
|
||||
username = "fluxer101"
|
||||
password = "flux101"
|
||||
```
|
||||
|
||||
Note that the API key in Gitea is known as an access token, one which can be
|
||||
generated [here](https://gitea.com/user/settings/applications).
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why does an integrity error show up?
|
||||
|
||||
As ForgeFlux's Interface is an actively developing project, there are a few
|
||||
errors that are caused by an upgrade to the database, in which case integrity errors
|
||||
are bound to pop up. In this case, remove the `instance/` directory where the database
|
||||
for the service would be stored, to rebuild it the next time the application is run.
|
|
@ -1,5 +0,0 @@
|
|||
+++
|
||||
title = "Northstar"
|
||||
insert_anchor_links = "right"
|
||||
weight = 50
|
||||
+++
|
|
@ -1,18 +0,0 @@
|
|||
+++
|
||||
title = "About Northstar"
|
||||
insert_anchor_links = "right"
|
||||
+++
|
||||
|
||||
# Northstar
|
||||
|
||||
Northstar is a lookup service, which acts as a source of information
|
||||
for interfaces which hold particular forge information.
|
||||
|
||||
An [Interface](@/Interface/_index.md) connects and looks
|
||||
through an instance of Northstar, to find the appropriate the forge
|
||||
information that it seeks.
|
||||
|
||||
An instance of Northstar has the functionality to act as an API to
|
||||
register and provide forge information.
|
||||
These routes/payloads are covered in the [OpenAPI specification](https://northstar.forgeflux.org/docs/openapi/)
|
||||
for Northstar.
|
|
@ -1,92 +0,0 @@
|
|||
+++
|
||||
title = "Welcome to ForgeFlux Documentation"
|
||||
insert_anchor_links = "right"
|
||||
+++
|
||||
|
||||
## Status
|
||||
|
||||
This site is Work-in-Progress, and as such, everything is in an
|
||||
incomplete-state.
|
||||
|
||||
## Source code
|
||||
|
||||
Split between two forges, slowly migrating to self-hosted
|
||||
[Forgejo](https://forgejo.org) instance at
|
||||
[git.batsense.net](https://git.batsense.net)
|
||||
|
||||
1. [git.batsense.net](https://git.batsense.net/ForgeFlux)
|
||||
1. [GitHub](https://github.com/forgeflux-org)
|
||||
|
||||
## Projects Overview
|
||||
|
||||
### Project Status: what does it mean?
|
||||
|
||||
1. WIP: Code isn't usable.
|
||||
2. Usable: Code works, but user experience isn't polished. Can be used
|
||||
with a bit of patience ;)
|
||||
3. Production: Ready for use
|
||||
|
||||
### 1. Interface
|
||||
|
||||
- [Source code](https://github.com/forgeflux-org/interface)
|
||||
- Status: WIP
|
||||
- Description: API-space software forge federation implementation.
|
||||
|
||||
Federation will take time to implement in most, popular software forge
|
||||
implementations. Interface aims to use the forge's REST API or similar
|
||||
and create a federation layer on top of it.
|
||||
|
||||
Currently, implementation has minimal support for Forgejo and Gitea. A
|
||||
Forgejo user can be exposed to Fediverse through WebFinger using
|
||||
Interface.
|
||||
|
||||
### 2. Northstar
|
||||
|
||||
- [Source code](https://github.com/forgeflux-org/northstar)
|
||||
- Status: Production
|
||||
- Description: A lookup service for federating software forges
|
||||
- Flagship instance: [northstar.forgeflux.org](https://northstar.forgeflux.org)
|
||||
|
||||
Interface's API-based, external, third-party approach introduces a
|
||||
unique problem: how to locate the internet address (hostname) of the
|
||||
Interface that services a forgege? Enter Northstar. It is a simple
|
||||
Key-Value search server that maps forges and internfaces
|
||||
|
||||
### 3. Starchart
|
||||
|
||||
- [Source code](https://github.com/forgeflux-org/starchart)
|
||||
- Status: Usable
|
||||
- Description: Spider and search engine for federating forges
|
||||
- Flagship instance:
|
||||
[starchart.forgeflux.org](https://starchart.forgeflux.org)
|
||||
|
||||
Projects on centralized forges like GitHub and GitLab enjoy good
|
||||
visibility through network effect, good search engine indexing and
|
||||
through third-party tools like
|
||||
[awesomeopensource.com/](https://awesomeopensource.com/).
|
||||
|
||||
Starchart aims to provide high-visibility for projects on independently
|
||||
hosted forges by indexing them and exposing the index with a searchable
|
||||
index. The index is designed to be replicated, so that new Starchart
|
||||
instances can be bootstrapped from an existing Starchart instance's
|
||||
data.
|
||||
|
||||
### 4. f3-rs
|
||||
|
||||
- [Source code](https://git.batsense.net/ForgeFlux/f3-rs)
|
||||
- Status: WIP
|
||||
- Description: Rust port of the [Friendly Forge Format](https://f3.forgefriends.org/) library
|
||||
- Documentation link: [f3.forgeflux.org](https://forgeflux.org)
|
||||
|
||||
### 4. ftest
|
||||
|
||||
- [Source code](https://git.batsense.net/ForgeFlux/ftest)
|
||||
- Status: Usable
|
||||
- Description: Compliance checker/test runner for [ActivityPub](https://activitypub.rocks) and by
|
||||
extension, [ForgeFed](https://forgefed.org)
|
||||
|
||||
The idea is to create something similar to
|
||||
[matrix-org/sytest](https://github.com/matrix-org/sytest), but for
|
||||
ActivityPub and ForgeFed. This way, we'll be able to measure how
|
||||
compliant an implementation is to the specifications, which we hope will
|
||||
improve interoperability between instances.
|
|
@ -1,7 +0,0 @@
|
|||
+++
|
||||
title = "ftest"
|
||||
insert_anchor_links = "right"
|
||||
weight = 1
|
||||
sort_by = "weight"
|
||||
redirect_to = "/ftest/introduction"
|
||||
+++
|
|
@ -1,113 +0,0 @@
|
|||
+++
|
||||
title = "Using ftest CLI"
|
||||
insert_anchor_links = "right"
|
||||
weight = 2
|
||||
+++
|
||||
|
||||
The ftest binary can run in the following modes:
|
||||
|
||||
1. Daemon: will act as a job server, listening for webhook events to
|
||||
schedule new jobs. This mode is to be used on servers.
|
||||
|
||||
2. CLI: Useful for running compliance tests locally on one's own
|
||||
computer.
|
||||
|
||||
## 0. Install Runtime Dependencies
|
||||
|
||||
ftest invokes a few binaries that are listed bellow:
|
||||
|
||||
1. [iproute2](https://packages.debian.org/bookworm/iproute2)
|
||||
2. Docker
|
||||
3. docker-compose
|
||||
4. git
|
||||
|
||||
_NOTE: The user running ftest binary must be part of the `docker` UNIX
|
||||
group_
|
||||
|
||||
## 1. Setup networking
|
||||
|
||||
ftest spawns a HTTP server to collect results from test suites. Right
|
||||
now, it is hard-coded to listen on port `29130`. And, since test jobs
|
||||
are run in containers and the ftest binary is going to be run on host
|
||||
machine, we have to setup Docker and host machine's firewall to allow
|
||||
traffic. We use an [nginx
|
||||
container](https://git.batsense.net/ForgeFlux/ftest-nginx-proxy) to
|
||||
achieve this.
|
||||
|
||||
This guide has instructions for `ufw`, please adopt the same for your
|
||||
setup.
|
||||
|
||||
### i. Create Docker network `ftest`
|
||||
|
||||
```
|
||||
docker network create --attachable -d bridge --subnet 192.168.32.0/20 ftest
|
||||
```
|
||||
|
||||
_NOTE: if choosing custom subnet, adjust instructions in the section to match it_
|
||||
|
||||
### ii. Allow traffic from `ftest` net to host machine on port `29130`
|
||||
|
||||
```bash
|
||||
sudo ufw allow from 192.168.32.0/20 proto tcp to any port 29130
|
||||
```
|
||||
|
||||
### 2. [Optional] Install from source
|
||||
|
||||
Requires cargo, the Rust build tool. Please see
|
||||
[here](https://rustup.rs/) for installation instructions.
|
||||
|
||||
```bash
|
||||
git clone https://git.batsense.net/ForgeFlux/ftest
|
||||
cd ftest
|
||||
cargo build --release
|
||||
sudo cp target/release/ftest /usr/local/bin
|
||||
```
|
||||
|
||||
## 2. Install from binary
|
||||
|
||||
### i. Download assets
|
||||
|
||||
```bash
|
||||
wget https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz.asc
|
||||
wget https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz.sha256
|
||||
wget https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz
|
||||
```
|
||||
|
||||
### ii Verify checksum
|
||||
|
||||
```bash
|
||||
sha256sum -c ftest-master-linux-amd64.tar.gz.sha256
|
||||
```
|
||||
|
||||
### iii Verify GPG signature
|
||||
|
||||
All ForgeFlux binaries are signed with [our GPG
|
||||
key](http://keyserver.ubuntu.com/pks/lookup?search=56861597C15E54520A36983A6828E4A2E5B91DB9&fingerprint=on&op=index).
|
||||
Please verify signatures to verify authenticity.
|
||||
|
||||
```bash
|
||||
gpg --keyserver keyserver.ubuntu.com --recv 56861597C15E54520A36983A6828E4A2E5B91DB9
|
||||
gpg --verify ftest-master-linux-amd64.tar.gz.asc
|
||||
```
|
||||
|
||||
### iv. Install binary
|
||||
|
||||
```bash
|
||||
tar -xvzf ftest-master-linux-amd64.tar.gz && sudo cp ftest-master-linux-amd64/ftest /usr/local/bin
|
||||
```
|
||||
|
||||
## 3. Run
|
||||
|
||||
The [control repository](@/ftest/terminology.md#control-repository) has
|
||||
a few pre-configured targets. We recommend starting from there. Please
|
||||
see [here](@/ftest/tutorial-new-specimen.md) to configure ftest for new [specimens](@/ftest/terminology.md#specimen).
|
||||
|
||||
```bash
|
||||
git clone https://git.batsense.net/ForgeFlux/ftest-control
|
||||
cd ftest-control/targets/forgejo
|
||||
ftest test .
|
||||
```
|
||||
|
||||
The results will be available in JSON format and HTML format (like this
|
||||
one [here](/example/ftest/results/targets/forgejo/results)) in the same
|
||||
directory.
|
|
@ -1,53 +0,0 @@
|
|||
+++
|
||||
title = "ftest.toml"
|
||||
insert_anchor_links = "right"
|
||||
weight = 5
|
||||
+++
|
||||
|
||||
## `fest.toml` or Job Manifest
|
||||
|
||||
Job manifest is defined in `ftest.toml` file in the specimen's
|
||||
subdirectory.
|
||||
|
||||
## ftest.toml contents:
|
||||
|
||||
It can contain information on:
|
||||
|
||||
### 1. Initialization code
|
||||
|
||||
The code that needs to be run to prepare the test environment. ftest
|
||||
runs Docker containers to initialize test environments.
|
||||
|
||||
#### Example
|
||||
|
||||
[forgejo-init-script](https://git.batsense.net/ForgeFlux/forgejo-init-script) performs the following operations in a sequence:
|
||||
|
||||
1. Install Forgejo (the binary starts with a web installer that accepts
|
||||
configuration parameters for database, mailer, etc.)
|
||||
2. Create accounts
|
||||
3. Create repositories
|
||||
4. Create issues
|
||||
5. Create access tokens
|
||||
|
||||
NOTE: Some of these operations are irrelevant, as I (@realaravinth) had nicked them from
|
||||
another project of mine and was too lazy to modify ;)
|
||||
|
||||
### 2. Test Suite
|
||||
|
||||
A test suite is a collection of tests. For instance, ActivityPub is a
|
||||
test suite that could include tests for the WebFinger protocol and the
|
||||
Nodeinfo protocol.
|
||||
|
||||
### 3. Tests
|
||||
|
||||
A test is a docker container that tests the
|
||||
[specimen](@/ftest/terminology.md#specimen) for a specific protocol or
|
||||
feature.
|
||||
|
||||
#### Example
|
||||
|
||||
[Nodeinfo test](https://git.batsense.net/nodeinfo-test) is the simplest
|
||||
test available within ftest at the moment. It tests the specimen's
|
||||
Nodeinfo implementation against the [Nodeinfo specification](https://nodeinfo.diaspora.software/protocol.html).
|
||||
|
||||
Please see [here](/ftest/tests.md) for developing new tests.
|
|
@ -1,40 +0,0 @@
|
|||
+++
|
||||
title = "Introducing ftest"
|
||||
insert_anchor_links = "right"
|
||||
weight = 1
|
||||
+++
|
||||
|
||||
- [Source code](https://git.batsense.net/ForgeFlux/ftest)
|
||||
- Status: Usable
|
||||
- Description: Compliance checker/test runner for [ActivityPub](https://activitypub.rocks) and by
|
||||
extension, [ForgeFed](https://forgefed.org)
|
||||
|
||||
`ftest` is a compliance checking tool that is similar to
|
||||
[matrix-org/sytest](https://github.com/matrix-org/sytest) but for ActivityPub and ForgeFed.
|
||||
|
||||
An instance (will be) is hosted by ForgeFlux, that is run on renewable
|
||||
energy.
|
||||
|
||||
## Mechanism
|
||||
|
||||
1. New jobs are fetched from the [control repository](@/ftest/terminology.md#control-repository). At any given time, ftest will run only one job. Therefore, each commit on the control repository must modify one [specimen](@/ftest/terminology.md#specimen) only.
|
||||
2. TODO: create `ftest` Docker network (right now, this is done by hand)
|
||||
3. The specimen test environment is deployed using `docker-compose.yml`
|
||||
available in the test network. The specimen might have dependency
|
||||
services (like a database or a chase), but the specimen service
|
||||
should be added to the `ftest` network.
|
||||
4. Get a list of initialization workflows from `ftest.toml` and run them
|
||||
sequentially.
|
||||
5. Run test suites sequentially. A test suite might contain more than
|
||||
one tests, all of them are launched in parallel. They are added to
|
||||
the `ftest` Docker net by the `ftest` server.
|
||||
6. Wait for tests from previous test to run to completion, collect logs
|
||||
and delete containers. And run next test suite.
|
||||
7. Aggregate logs and write to [result repository](@/ftest/terminology.md#result-repository).
|
||||
8. Push result repository.
|
||||
9. Wait for next test job.
|
||||
|
||||
## Quick links
|
||||
|
||||
- [Add new specimen to ftest](@/ftest/tutorial-new-specimen.md)
|
||||
- [Terminology](@/ftest/terminology.md)
|
|
@ -1,28 +0,0 @@
|
|||
+++
|
||||
title = "Quick Links"
|
||||
insert_anchor_links = "right"
|
||||
weight = 4
|
||||
+++
|
||||
|
||||
# Quick Links
|
||||
|
||||
## Repositories
|
||||
|
||||
- [Source code](https://git.batsense.net/ForgeFlux/ftest)
|
||||
- [Control repository](https://git.batsense.net/ForgeFlux/ftest-control)
|
||||
- [Results repository](https://git.batsense.net/ForgeFlux/ftest-results)
|
||||
- [Forgejo-init-script (Initialization code)](https://git.batsense.net/ForgeFlux/forgejo-init-script)
|
||||
|
||||
## Test suites
|
||||
|
||||
- [WebFinger](https://git.batsense.net/ForgeFlux/webfinger-test)
|
||||
- [Nodeinfo](https://git.batsense.net/ForgeFlux/nodeinfo-test)
|
||||
- [ActivityPub (WIP)](https://git.batsense.net/ForgeFlux/nodeinfo-test)
|
||||
- [Host Meta (RFC6415)](https://git.batsense.net/ForgeFlux/host-meta-test)
|
||||
|
||||
## Container Images
|
||||
|
||||
- [WebFinger](https://hub.docker.com/r/forgeflux/webfinger-test/)
|
||||
- [Nodeinfo](https://hub.docker.com/r/forgeflux/nodeinfo-test/)
|
||||
- [ActivityPub](https://hub.docker.com/r/forgeflux/ap-test/)
|
||||
- [Host Meta (RFC6415)](https://hub.docker.com/r/forgeflux/host-meta-test/)
|
|
@ -1,58 +0,0 @@
|
|||
+++
|
||||
title = "Terminology"
|
||||
insert_anchor_links = "right"
|
||||
weight = 3
|
||||
+++
|
||||
|
||||
## Specimen
|
||||
|
||||
The target of a ftest test job. These are the ActityPub or ForgeFlux
|
||||
implementations that must be tested for compliance.
|
||||
|
||||
## Job Manifest
|
||||
|
||||
or `ftest.toml`
|
||||
|
||||
Contains information on the test environment, initialization code and
|
||||
the test suites that has to be run on the [specimen](/ftest/terminology.md#specimen)
|
||||
|
||||
## Control Repository
|
||||
|
||||
- Flagship instance: [git.batsense.net/ForgeFlux/ftest-control](https://forgeflux.org/ForgeFlux/ftest-control)
|
||||
|
||||
A Repository that houses [job manifests](@/ftest/terminology.md#job-manifest), and Infrastructure-as-Code
|
||||
(docker-compose, currently) to spin up a test environment containing the
|
||||
[specimen](@/ftest/terminology.md#specimen).
|
||||
|
||||
### Directory structure
|
||||
|
||||
Each specimen has it's own directory in the control repository:
|
||||
|
||||
```bash
|
||||
23:50 atm@lab ftest-control ±|gotosocial ✗|→ tree
|
||||
|
||||
└── targets
|
||||
├── forgejo
|
||||
│ ├── conf
|
||||
│ │ └── app.ini
|
||||
│ ├── docker-compose.yml
|
||||
│ └── ftest.toml
|
||||
└── gotosocial
|
||||
├── data
|
||||
│ └── config
|
||||
│ └── config.yaml
|
||||
├── docker-compose.yaml
|
||||
└── Dockerfile
|
||||
```
|
||||
|
||||
### Specimen docker-compose.yml
|
||||
|
||||
The control repository _MUST_ contain a `docker-compose.yml` to spin up
|
||||
the specimen. It may include configuration files in the same directory,
|
||||
which to docker-compose file can rely on using bind mounts within the container.
|
||||
|
||||
|
||||
## Result Repository
|
||||
|
||||
Result repository contains the results of all the targets' jobs in JSON
|
||||
format.
|
|
@ -1,50 +0,0 @@
|
|||
+++
|
||||
title = "Tests"
|
||||
insert_anchor_links = "right"
|
||||
weight = 6
|
||||
+++
|
||||
|
||||
Tests are Docker containers that test
|
||||
[specimens](@/ftest/terminology.md#specimen) a very specific protocol
|
||||
or a feature. They integrate with ftest by accepting configuration
|
||||
parameters through environment variables and uploading results through a
|
||||
REST API.
|
||||
|
||||
## Configuration (Environment Variables)
|
||||
|
||||
### Auto-generated
|
||||
|
||||
Some environment variables are automatically generated by ftest
|
||||
|
||||
| Name | Purpose |
|
||||
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `FTEST_AUTH` | Authentication token that should be used when uploading results to ftest server. It is ephemeral, and randomly generated for each test. |
|
||||
| `FTEST_HOST` | The hostname of the ftest server. Results must be uploaded to here. Will be in format http://ftest:9000 |
|
||||
| `FTEST_TARGET_HOST` | The hostname of the specimen server. Tests must be run against this hostname. Will be in format http://specimen:8080 |
|
||||
|
||||
### User provided
|
||||
|
||||
There's option to fetch custom environment variables also. Please
|
||||
specify them in your test's documentation clearly. The README file of
|
||||
the test is recommended.
|
||||
|
||||
## Results API:
|
||||
|
||||
A formal OpenAPI specification for the ftest server is yet to be
|
||||
created. For now, this command should upload test results to the ftest
|
||||
server:
|
||||
|
||||
```python
|
||||
def upload_logs_to_ftest(auth, success: bool, logs: str):
|
||||
ftest = f"http://ftest.example.org/api/v1/{auth}/results"
|
||||
payload = {"success": success, "logs": logs}
|
||||
res = requests.post(
|
||||
ftest, json=payload, headers={"Origin": "http://example.org"}
|
||||
)
|
||||
if res.status_code == 200:
|
||||
logger.info("Upload successful")
|
||||
else:
|
||||
print(res)
|
||||
|
||||
upload_logs_to_ftest("supersecretauthtoekn_provided_by_ftest", True, "")
|
||||
```
|
|
@ -1,40 +0,0 @@
|
|||
+++
|
||||
title = "[Tutorial] Add new specimen"
|
||||
insert_anchor_links = "right"
|
||||
weight = 7
|
||||
+++
|
||||
|
||||
## How to add new specimen
|
||||
|
||||
### 1. Fork the [control repository](@/ftest/terminology.md#control-repository).
|
||||
|
||||
```
|
||||
git clone https://git.batsense.net/ForgeFlux/ftest-control
|
||||
```
|
||||
|
||||
### 2. Create specimen subdirectory
|
||||
|
||||
If [specimen](@/ftest/terminology.md#specimen) doesn't exist within `targets/` directory, then create subdirectory for it:
|
||||
|
||||
```bash
|
||||
mkdir targets/<insert-specimen-name>
|
||||
cd targets/<insert-specimen-name>
|
||||
```
|
||||
|
||||
### 3. Create docker-compose.yml:
|
||||
|
||||
```bash
|
||||
touch docker-compose.yml
|
||||
```
|
||||
|
||||
Populate docker-compose.yml with instructions to spin up a test
|
||||
environment for the specimen. The specimen's upstream sources
|
||||
will include a reference docker-compose file should be fine in most cases.
|
||||
|
||||
### 4. Create job manifest
|
||||
|
||||
Job manifest is defined in `ftest.toml` file in the specimen's
|
||||
subdirectory. It can contain information on:
|
||||
|
||||
#### Initialization code
|
||||
needs to be run to prepare the test environment.
|
|
@ -1,5 +0,0 @@
|
|||
+++
|
||||
title = "Updates"
|
||||
weight = 90
|
||||
sort_by = "weight"
|
||||
+++
|
|
@ -1,34 +0,0 @@
|
|||
+++
|
||||
title = "December 2020"
|
||||
weight = 40
|
||||
+++
|
||||
|
||||
# December 2020
|
||||
## Northstar
|
||||
|
||||
As the development on [Northstar](@/Northstar/_index.md) nears the completion phase,
|
||||
updates on it have slowed down, and the only updates that were made during this
|
||||
stage mostly comprises of configuration updates.
|
||||
These updates were mostly related to bootstrapping [DynaConf](https://www.dynaconf.com/),
|
||||
as we embraced 12-factor app configuration recommendations, allowing for better
|
||||
configuration management.
|
||||
|
||||
## Interface
|
||||
|
||||
Realising the need for validation of a request to an actor, an authentication
|
||||
mechanism was developed to implement Matrix's [signed JSON](https://github.com/matrix-org/python-signedjson)
|
||||
feature, but, was later replaced in favor of [HTTP Signatures](https://tools.ietf.org/html/draft-cavage-http-signatures).
|
||||
|
||||
Interface underwent major refactoring to improve test-ability and reliability in addition
|
||||
to implementing authentication by a [signed JSON](https://github.com/matrix-org/python-signedjson)
|
||||
mechanism implemented by the Matrix project. Taking note of rate-limits imposed by some forges,
|
||||
we figured we'd have to cache responses and so data persistence was implemented by way of
|
||||
storing in a database.
|
||||
|
||||
## References
|
||||
These are a list of the Pull Requests where the following updates took place for the
|
||||
organization.
|
||||
|
||||
- Forking Implementation :: [#34](https://github.com/forgeflux-org/interface/commit/5c9f61d60ce069963da7abc761b9ba3d81c8883a)
|
||||
- Authentication :: [#36](https://github.com/forgeflux-org/interface/commit/5cc206cbe5be83cedac14949a537baad4c6351e3)
|
||||
- DB Refactor :: [#39](https://github.com/forgeflux-org/interface/commit/57c9a085b38f8c3bab7975e18d21e4455ad3cac9), [#40](https://github.com/forgeflux-org/interface/commit/d9d785ca116e9a2bb9a40cf3eaa16a8b275d1593)
|
|
@ -1,28 +0,0 @@
|
|||
+++
|
||||
title = "November 2020"
|
||||
weight = 40
|
||||
+++
|
||||
|
||||
# November 2020
|
||||
|
||||
Errors were modularized at the back of [Northstar](https://github.com/forgeflux-org/northstar/),
|
||||
and A Docker CI was set up for the Northstar builds.
|
||||
|
||||
A [GitHub organization](https://github.com/forgeflux-org) was created for ForgeFedv2,
|
||||
and the repositories for the projects were transferred over to it.
|
||||
|
||||
A Notification-Event Translation Mechanism was set up.
|
||||
|
||||
1. Northstar functionality was integrated into Interface, and tests were set up to ensure that it could be contacted through Interface's methods.
|
||||
2. A locking mechanism was set up for concurrent operations on Git utilizing [Sled](https://sled.rs/).
|
||||
3. Implementations of a basic job runner was set up to mimic retrieving requests from Forges, through periodically retrieving notifications.
|
||||
4. The endpoints for notifications was subsequently set up, and responses to these Notifications were termed as events.
|
||||
5. The endpoints for processing these events were then created.
|
||||
|
||||
Shifted over the configuration management to [Dynaconf](https://www.dynaconf.com/).
|
||||
|
||||
## References
|
||||
|
||||
- Integration with Northstar :: [Info](https://github.com/forgeflux-org/interface/commit/0c9d8bdff05e668d77a85fdfc89b37abe1ac86cb)
|
||||
- Locking Mechanism with Sled :: [Info](https://github.com/forgeflux-org/interface/commit/d3e7c81c95d87b612ebb9562cac31d371fe8629e)
|
||||
- Defining Events :: [Info](https://github.com/forgeflux-org/interface/commit/30547b783578a7a9548aca55b3b7c932ed8130e6)
|
|
@ -1,35 +0,0 @@
|
|||
+++
|
||||
title = "October 2020"
|
||||
weight = 40
|
||||
+++
|
||||
|
||||
# October 2020
|
||||
|
||||
In the month of October, there were significant changes to the development
|
||||
in ForgeFedv2, with the addition of the [OpenAPI Specification](https://forgeflux-org.github.io/northstar/)
|
||||
for Northstar.
|
||||
|
||||
## Northstar
|
||||
|
||||
A database model was created to store the details of the various forge interfaces,
|
||||
having these details would be a prerequisite to looking up a server.
|
||||
|
||||
Endpoints were subsequently created, following the defined OpenAPI specification.
|
||||
While the Lookup service was in the process of development, terminologies and the
|
||||
concept for Forge Federation was also being [discussed](https://github.com/forgeflux-org/spec/tree/master/rfc).
|
||||
|
||||
Docker support as part of the CI process was added into the mix, while
|
||||
keeping in mind, that the test suite was the method to work with the application for
|
||||
the time being.
|
||||
An initial working model for the lookup service was established.
|
||||
|
||||
## Interface
|
||||
|
||||
Development of the `libgit` library had begun at this point.
|
||||
|
||||
[libgit] is a library that processes the contributor's changes, and generates a patch.
|
||||
Details regarding the implementation and feature set of libgit will be covered in another section.
|
||||
|
||||
## References
|
||||
|
||||
- Database Initialization :: [database init](https://github.com/forgeflux-org/northstar/commit/6a82a1bc83d4733a5a077e33ad0c222aed496145)
|
|
@ -1,16 +0,0 @@
|
|||
+++
|
||||
title = "September 2020"
|
||||
weight = 40
|
||||
+++
|
||||
|
||||
# September 2020
|
||||
|
||||
In the month of September, project "ForgeFedv2" started off by
|
||||
initializing the lookup service, [Northstar](https://github.com/forgeflux-org/northstar/).
|
||||
|
||||
The initialization mostly comprised of setting up the CI environment,
|
||||
and focused more on defining the structure of the project, and how
|
||||
we were to be going about it.
|
||||
|
||||
A discussion on the terminology and the primitive method of the
|
||||
project's functionality were discussed.
|
10
elasticlunr.min.js
vendored
Normal file
10
elasticlunr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
fabric-icons-inline.css
Normal file
1
fabric-icons-inline.css
Normal file
|
@ -0,0 +1 @@
|
|||
@font-face{font-family:'FabricMDL2Icons';src:url("data:application/octet-stream;base64,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") format("truetype")}.ms-Icon{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-family:'FabricMDL2Icons';font-style:normal;font-weight:normal;speak:none}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--ProductRelease:before{content:"\EE2E"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Search:before{content:"\E721"}
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
388
ftest/cli/index.html
Normal file
388
ftest/cli/index.html
Normal file
|
@ -0,0 +1,388 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | Using ftest CLI </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul id="toc">
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#0-install-runtime-dependencies">0. Install Runtime Dependencies</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#1-setup-networking">1. Setup networking</a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#i-create-docker-network-ftest">i. Create Docker network ftest</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#ii-allow-traffic-from-ftest-net-to-host-machine-on-port-29130">ii. Allow traffic from ftest net to host machine on port 29130</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#2-optional-install-from-source">2. [Optional] Install from source</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#2-install-from-binary">2. Install from binary</a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#i-download-assets">i. Download assets</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#ii-verify-checksum">ii Verify checksum</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#iii-verify-gpg-signature">iii Verify GPG signature</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#iv-install-binary">iv. Install binary</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/cli/#3-run">3. Run</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<p>The ftest binary can run in the following modes:</p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Daemon: will act as a job server, listening for webhook events to
|
||||
schedule new jobs. This mode is to be used on servers.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>CLI: Useful for running compliance tests locally on one's own
|
||||
computer.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h2 id="0-install-runtime-dependencies">0. Install Runtime Dependencies <a class="anchor" href="#0-install-runtime-dependencies"></a></h2>
|
||||
<p>ftest invokes a few binaries that are listed bellow:</p>
|
||||
<ol>
|
||||
<li><a href="https://packages.debian.org/bookworm/iproute2">iproute2</a></li>
|
||||
<li>Docker</li>
|
||||
<li>docker-compose</li>
|
||||
<li>git</li>
|
||||
</ol>
|
||||
<p><em>NOTE: The user running ftest binary must be part of the <code>docker</code> UNIX
|
||||
group</em></p>
|
||||
<h2 id="1-setup-networking">1. Setup networking <a class="anchor" href="#1-setup-networking"></a></h2>
|
||||
<p>ftest spawns a HTTP server to collect results from test suites. Right
|
||||
now, it is hard-coded to listen on port <code>29130</code>. And, since test jobs
|
||||
are run in containers and the ftest binary is going to be run on host
|
||||
machine, we have to setup Docker and host machine's firewall to allow
|
||||
traffic. We use an <a href="https://git.batsense.net/ForgeFlux/ftest-nginx-proxy">nginx
|
||||
container</a> to
|
||||
achieve this.</p>
|
||||
<p>This guide has instructions for <code>ufw</code>, please adopt the same for your
|
||||
setup.</p>
|
||||
<h3 id="i-create-docker-network-ftest">i. Create Docker network <code>ftest</code> <a class="anchor" href="#i-create-docker-network-ftest"></a></h3>
|
||||
<pre style="background-color:#eff1f5;color:#4f5b66;"><code><span>docker network create --attachable -d bridge --subnet 192.168.32.0/20 ftest
|
||||
</span></code></pre>
|
||||
<p><em>NOTE: if choosing custom subnet, adjust instructions in the section to match it</em></p>
|
||||
<h3 id="ii-allow-traffic-from-ftest-net-to-host-machine-on-port-29130">ii. Allow traffic from <code>ftest</code> net to host machine on port <code>29130</code> <a class="anchor" href="#ii-allow-traffic-from-ftest-net-to-host-machine-on-port-29130"></a></h3>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> ufw allow from 192.168.32.0/20 proto tcp to any port 29130
|
||||
</span></code></pre>
|
||||
<h3 id="2-optional-install-from-source">2. [Optional] Install from source <a class="anchor" href="#2-optional-install-from-source"></a></h3>
|
||||
<p>Requires cargo, the Rust build tool. Please see
|
||||
<a href="https://rustup.rs/">here</a> for installation instructions.</p>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> clone https://git.batsense.net/ForgeFlux/ftest
|
||||
</span><span style="color:#96b5b4;">cd</span><span> ftest
|
||||
</span><span style="color:#bf616a;">cargo</span><span> build</span><span style="color:#bf616a;"> --release
|
||||
</span><span style="color:#bf616a;">sudo</span><span> cp target/release/ftest /usr/local/bin
|
||||
</span></code></pre>
|
||||
<h2 id="2-install-from-binary">2. Install from binary <a class="anchor" href="#2-install-from-binary"></a></h2>
|
||||
<h3 id="i-download-assets">i. Download assets <a class="anchor" href="#i-download-assets"></a></h3>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">wget</span><span> https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz.asc
|
||||
</span><span style="color:#bf616a;">wget</span><span> https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz.sha256
|
||||
</span><span style="color:#bf616a;">wget</span><span> https://dl.forgeflux.org/forgeflux/ftest/master/ftest-master-linux-amd64.tar.gz
|
||||
</span></code></pre>
|
||||
<h3 id="ii-verify-checksum">ii Verify checksum <a class="anchor" href="#ii-verify-checksum"></a></h3>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sha256sum -c</span><span> ftest-master-linux-amd64.tar.gz.sha256
|
||||
</span></code></pre>
|
||||
<h3 id="iii-verify-gpg-signature">iii Verify GPG signature <a class="anchor" href="#iii-verify-gpg-signature"></a></h3>
|
||||
<p>All ForgeFlux binaries are signed with <a href="http://keyserver.ubuntu.com/pks/lookup?search=56861597C15E54520A36983A6828E4A2E5B91DB9&fingerprint=on&op=index">our GPG
|
||||
key</a>.
|
||||
Please verify signatures to verify authenticity.</p>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">gpg --keyserver</span><span> keyserver.ubuntu.com</span><span style="color:#bf616a;"> --recv</span><span> 56861597C15E54520A36983A6828E4A2E5B91DB9
|
||||
</span><span style="color:#bf616a;">gpg --verify</span><span> ftest-master-linux-amd64.tar.gz.asc
|
||||
</span></code></pre>
|
||||
<h3 id="iv-install-binary">iv. Install binary <a class="anchor" href="#iv-install-binary"></a></h3>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">tar -xvzf</span><span> ftest-master-linux-amd64.tar.gz && </span><span style="color:#bf616a;">sudo</span><span> cp ftest-master-linux-amd64/ftest /usr/local/bin
|
||||
</span></code></pre>
|
||||
<h2 id="3-run">3. Run <a class="anchor" href="#3-run"></a></h2>
|
||||
<p>The <a href="https://docs.forgeflux.org/ftest/terminology/#control-repository">control repository</a> has
|
||||
a few pre-configured targets. We recommend starting from there. Please
|
||||
see <a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">here</a> to configure ftest for new <a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimens</a>.</p>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> clone https://git.batsense.net/ForgeFlux/ftest-control
|
||||
</span><span style="color:#96b5b4;">cd</span><span> ftest-control/targets/forgejo
|
||||
</span><span style="color:#bf616a;">ftest</span><span> test .
|
||||
</span></code></pre>
|
||||
<p>The results will be available in JSON format and HTML format (like this
|
||||
one <a href="/example/ftest/results/targets/forgejo/results">here</a>) in the same
|
||||
directory.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
311
ftest/ftest-toml/index.html
Normal file
311
ftest/ftest-toml/index.html
Normal file
|
@ -0,0 +1,311 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | ftest.toml </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul id="toc">
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/ftest-toml/#fest-toml-or-job-manifest">fest.toml or Job Manifest</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/ftest-toml/#ftest-toml-contents">ftest.toml contents:</a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/ftest-toml/#1-initialization-code">1. Initialization code</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/ftest-toml/#2-test-suite">2. Test Suite</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/ftest-toml/#3-tests">3. Tests</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h2 id="fest-toml-or-job-manifest"><code>fest.toml</code> or Job Manifest <a class="anchor" href="#fest-toml-or-job-manifest"></a></h2>
|
||||
<p>Job manifest is defined in <code>ftest.toml</code> file in the specimen's
|
||||
subdirectory.</p>
|
||||
<h2 id="ftest-toml-contents">ftest.toml contents: <a class="anchor" href="#ftest-toml-contents"></a></h2>
|
||||
<p>It can contain information on:</p>
|
||||
<h3 id="1-initialization-code">1. Initialization code <a class="anchor" href="#1-initialization-code"></a></h3>
|
||||
<p>The code that needs to be run to prepare the test environment. ftest
|
||||
runs Docker containers to initialize test environments.</p>
|
||||
<h4 id="example">Example <a class="anchor" href="#example"></a></h4>
|
||||
<p><a href="https://git.batsense.net/ForgeFlux/forgejo-init-script">forgejo-init-script</a> performs the following operations in a sequence:</p>
|
||||
<ol>
|
||||
<li>Install Forgejo (the binary starts with a web installer that accepts
|
||||
configuration parameters for database, mailer, etc.)</li>
|
||||
<li>Create accounts</li>
|
||||
<li>Create repositories</li>
|
||||
<li>Create issues</li>
|
||||
<li>Create access tokens</li>
|
||||
</ol>
|
||||
<p>NOTE: Some of these operations are irrelevant, as I (@realaravinth) had nicked them from
|
||||
another project of mine and was too lazy to modify ;)</p>
|
||||
<h3 id="2-test-suite">2. Test Suite <a class="anchor" href="#2-test-suite"></a></h3>
|
||||
<p>A test suite is a collection of tests. For instance, ActivityPub is a
|
||||
test suite that could include tests for the WebFinger protocol and the
|
||||
Nodeinfo protocol.</p>
|
||||
<h3 id="3-tests">3. Tests <a class="anchor" href="#3-tests"></a></h3>
|
||||
<p>A test is a docker container that tests the
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimen</a> for a specific protocol or
|
||||
feature.</p>
|
||||
<h4 id="example-1">Example <a class="anchor" href="#example-1"></a></h4>
|
||||
<p><a href="https://git.batsense.net/nodeinfo-test">Nodeinfo test</a> is the simplest
|
||||
test available within ftest at the moment. It tests the specimen's
|
||||
Nodeinfo implementation against the <a href="https://nodeinfo.diaspora.software/protocol.html">Nodeinfo specification</a>.</p>
|
||||
<p>Please see <a href="/ftest/tests.md">here</a> for developing new tests.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
6
ftest/index.html
Normal file
6
ftest/index.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="canonical" href="https://docs.forgeflux.org/ftest/introduction/">
|
||||
<meta http-equiv="refresh" content="0; url=https://docs.forgeflux.org/ftest/introduction/">
|
||||
<title>Redirect</title>
|
||||
<p><a href="https://docs.forgeflux.org/ftest/introduction/">Click here</a> to be redirected.</p>
|
277
ftest/introduction/index.html
Normal file
277
ftest/introduction/index.html
Normal file
|
@ -0,0 +1,277 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | Introducing ftest </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<ul>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/ftest">Source code</a></li>
|
||||
<li>Status: Usable</li>
|
||||
<li>Description: Compliance checker/test runner for <a href="https://activitypub.rocks">ActivityPub</a> and by
|
||||
extension, <a href="https://forgefed.org">ForgeFed</a></li>
|
||||
</ul>
|
||||
<p><code>ftest</code> is a compliance checking tool that is similar to
|
||||
<a href="https://github.com/matrix-org/sytest">matrix-org/sytest</a> but for ActivityPub and ForgeFed.</p>
|
||||
<p>An instance (will be) is hosted by ForgeFlux, that is run on renewable
|
||||
energy.</p>
|
||||
<h2 id="mechanism">Mechanism <a class="anchor" href="#mechanism"></a></h2>
|
||||
<ol>
|
||||
<li>New jobs are fetched from the <a href="https://docs.forgeflux.org/ftest/terminology/#control-repository">control repository</a>. At any given time, ftest will run only one job. Therefore, each commit on the control repository must modify one <a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimen</a> only.</li>
|
||||
<li>TODO: create <code>ftest</code> Docker network (right now, this is done by hand)</li>
|
||||
<li>The specimen test environment is deployed using <code>docker-compose.yml</code>
|
||||
available in the test network. The specimen might have dependency
|
||||
services (like a database or a chase), but the specimen service
|
||||
should be added to the <code>ftest</code> network.</li>
|
||||
<li>Get a list of initialization workflows from <code>ftest.toml</code> and run them
|
||||
sequentially.</li>
|
||||
<li>Run test suites sequentially. A test suite might contain more than
|
||||
one tests, all of them are launched in parallel. They are added to
|
||||
the <code>ftest</code> Docker net by the <code>ftest</code> server.</li>
|
||||
<li>Wait for tests from previous test to run to completion, collect logs
|
||||
and delete containers. And run next test suite.</li>
|
||||
<li>Aggregate logs and write to <a href="https://docs.forgeflux.org/ftest/terminology/#result-repository">result repository</a>.</li>
|
||||
<li>Push result repository.</li>
|
||||
<li>Wait for next test job.</li>
|
||||
</ol>
|
||||
<h2 id="quick-links">Quick links <a class="anchor" href="#quick-links"></a></h2>
|
||||
<ul>
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">Add new specimen to ftest</a></li>
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
271
ftest/quick-links/index.html
Normal file
271
ftest/quick-links/index.html
Normal file
|
@ -0,0 +1,271 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | Quick Links </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="quick-links">Quick Links <a class="anchor" href="#quick-links"></a></h1>
|
||||
<h2 id="repositories">Repositories <a class="anchor" href="#repositories"></a></h2>
|
||||
<ul>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/ftest">Source code</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/ftest-control">Control repository</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/ftest-results">Results repository</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/forgejo-init-script">Forgejo-init-script (Initialization code)</a></li>
|
||||
</ul>
|
||||
<h2 id="test-suites">Test suites <a class="anchor" href="#test-suites"></a></h2>
|
||||
<ul>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/webfinger-test">WebFinger</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/nodeinfo-test">Nodeinfo</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/nodeinfo-test">ActivityPub (WIP)</a></li>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/host-meta-test">Host Meta (RFC6415)</a></li>
|
||||
</ul>
|
||||
<h2 id="container-images">Container Images <a class="anchor" href="#container-images"></a></h2>
|
||||
<ul>
|
||||
<li><a href="https://hub.docker.com/r/forgeflux/webfinger-test/">WebFinger</a></li>
|
||||
<li><a href="https://hub.docker.com/r/forgeflux/nodeinfo-test/">Nodeinfo</a></li>
|
||||
<li><a href="https://hub.docker.com/r/forgeflux/ap-test/">ActivityPub</a></li>
|
||||
<li><a href="https://hub.docker.com/r/forgeflux/host-meta-test/">Host Meta (RFC6415)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
321
ftest/terminology/index.html
Normal file
321
ftest/terminology/index.html
Normal file
|
@ -0,0 +1,321 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | Terminology </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul id="toc">
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#specimen">Specimen</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#job-manifest">Job Manifest</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#control-repository">Control Repository</a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#directory-structure">Directory structure</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#specimen-docker-compose-yml">Specimen docker-compose.yml</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/terminology/#result-repository">Result Repository</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h2 id="specimen">Specimen <a class="anchor" href="#specimen"></a></h2>
|
||||
<p>The target of a ftest test job. These are the ActityPub or ForgeFlux
|
||||
implementations that must be tested for compliance.</p>
|
||||
<h2 id="job-manifest">Job Manifest <a class="anchor" href="#job-manifest"></a></h2>
|
||||
<p>or <code>ftest.toml</code></p>
|
||||
<p>Contains information on the test environment, initialization code and
|
||||
the test suites that has to be run on the <a href="/ftest/terminology.md#specimen">specimen</a></p>
|
||||
<h2 id="control-repository">Control Repository <a class="anchor" href="#control-repository"></a></h2>
|
||||
<ul>
|
||||
<li>Flagship instance: <a href="https://forgeflux.org/ForgeFlux/ftest-control">git.batsense.net/ForgeFlux/ftest-control</a></li>
|
||||
</ul>
|
||||
<p>A Repository that houses <a href="https://docs.forgeflux.org/ftest/terminology/#job-manifest">job manifests</a>, and Infrastructure-as-Code
|
||||
(docker-compose, currently) to spin up a test environment containing the
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimen</a>.</p>
|
||||
<h3 id="directory-structure">Directory structure <a class="anchor" href="#directory-structure"></a></h3>
|
||||
<p>Each specimen has it's own directory in the control repository:</p>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">23:50</span><span> atm@lab ftest-control ±|</span><span style="color:#bf616a;">gotosocial</span><span> ✗|</span><span style="color:#bf616a;">→</span><span> tree
|
||||
</span><span>
|
||||
</span><span style="color:#bf616a;">└──</span><span> targets
|
||||
</span><span> </span><span style="color:#bf616a;">├──</span><span> forgejo
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> ├── conf
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> │ └── app.ini
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> ├── docker-compose.yml
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> └── ftest.toml
|
||||
</span><span> </span><span style="color:#bf616a;">└──</span><span> gotosocial
|
||||
</span><span> </span><span style="color:#bf616a;">├──</span><span> data
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> └── config
|
||||
</span><span> </span><span style="color:#bf616a;">│</span><span> └── config.yaml
|
||||
</span><span> </span><span style="color:#bf616a;">├──</span><span> docker-compose.yaml
|
||||
</span><span> </span><span style="color:#bf616a;">└──</span><span> Dockerfile
|
||||
</span></code></pre>
|
||||
<h3 id="specimen-docker-compose-yml">Specimen docker-compose.yml <a class="anchor" href="#specimen-docker-compose-yml"></a></h3>
|
||||
<p>The control repository <em>MUST</em> contain a <code>docker-compose.yml</code> to spin up
|
||||
the specimen. It may include configuration files in the same directory,
|
||||
which to docker-compose file can rely on using bind mounts within the container.</p>
|
||||
<h2 id="result-repository">Result Repository <a class="anchor" href="#result-repository"></a></h2>
|
||||
<p>Result repository contains the results of all the targets' jobs in JSON
|
||||
format.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
283
ftest/tests/index.html
Normal file
283
ftest/tests/index.html
Normal file
|
@ -0,0 +1,283 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | Tests </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<p>Tests are Docker containers that test
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimens</a> a very specific protocol
|
||||
or a feature. They integrate with ftest by accepting configuration
|
||||
parameters through environment variables and uploading results through a
|
||||
REST API.</p>
|
||||
<h2 id="configuration-environment-variables">Configuration (Environment Variables) <a class="anchor" href="#configuration-environment-variables"></a></h2>
|
||||
<h3 id="auto-generated">Auto-generated <a class="anchor" href="#auto-generated"></a></h3>
|
||||
<p>Some environment variables are automatically generated by ftest</p>
|
||||
<table><thead><tr><th>Name</th><th>Purpose</th></tr></thead><tbody>
|
||||
<tr><td><code>FTEST_AUTH</code></td><td>Authentication token that should be used when uploading results to ftest server. It is ephemeral, and randomly generated for each test.</td></tr>
|
||||
<tr><td><code>FTEST_HOST</code></td><td>The hostname of the ftest server. Results must be uploaded to here. Will be in format http://ftest:9000</td></tr>
|
||||
<tr><td><code>FTEST_TARGET_HOST</code></td><td>The hostname of the specimen server. Tests must be run against this hostname. Will be in format http://specimen:8080</td></tr>
|
||||
</tbody></table>
|
||||
<h3 id="user-provided">User provided <a class="anchor" href="#user-provided"></a></h3>
|
||||
<p>There's option to fetch custom environment variables also. Please
|
||||
specify them in your test's documentation clearly. The README file of
|
||||
the test is recommended.</p>
|
||||
<h2 id="results-api">Results API: <a class="anchor" href="#results-api"></a></h2>
|
||||
<p>A formal OpenAPI specification for the ftest server is yet to be
|
||||
created. For now, this command should upload test results to the ftest
|
||||
server:</p>
|
||||
<pre data-lang="python" style="background-color:#eff1f5;color:#4f5b66;" class="language-python "><code class="language-python" data-lang="python"><span style="color:#b48ead;">def </span><span style="color:#8fa1b3;">upload_logs_to_ftest</span><span>(</span><span style="color:#bf616a;">auth</span><span>, </span><span style="color:#bf616a;">success</span><span>: bool, </span><span style="color:#bf616a;">logs</span><span>: str):
|
||||
</span><span> ftest = </span><span style="color:#b48ead;">f</span><span>"</span><span style="color:#a3be8c;">http://ftest.example.org/api/v1/</span><span>{auth}</span><span style="color:#a3be8c;">/results</span><span>"
|
||||
</span><span> payload = {"</span><span style="color:#a3be8c;">success</span><span>": success, "</span><span style="color:#a3be8c;">logs</span><span>": logs}
|
||||
</span><span> res = requests.</span><span style="color:#bf616a;">post</span><span>(
|
||||
</span><span> ftest, </span><span style="color:#bf616a;">json</span><span>=payload, </span><span style="color:#bf616a;">headers</span><span>={"</span><span style="color:#a3be8c;">Origin</span><span>": "</span><span style="color:#a3be8c;">http://example.org</span><span>"}
|
||||
</span><span> )
|
||||
</span><span> </span><span style="color:#b48ead;">if </span><span>res.status_code == </span><span style="color:#d08770;">200</span><span>:
|
||||
</span><span> logger.</span><span style="color:#bf616a;">info</span><span>("</span><span style="color:#a3be8c;">Upload successful</span><span>")
|
||||
</span><span> </span><span style="color:#b48ead;">else</span><span>:
|
||||
</span><span> </span><span style="color:#96b5b4;">print</span><span>(res)
|
||||
</span><span>
|
||||
</span><span style="color:#bf616a;">upload_logs_to_ftest</span><span>("</span><span style="color:#a3be8c;">supersecretauthtoekn_provided_by_ftest</span><span>", </span><span style="color:#d08770;">True</span><span>, "")
|
||||
</span></code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
294
ftest/tutorial-new-specimen/index.html
Normal file
294
ftest/tutorial-new-specimen/index.html
Normal file
|
@ -0,0 +1,294 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | [Tutorial] Add new specimen </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul id="toc">
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/#how-to-add-new-specimen">How to add new specimen</a>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/#1-fork-the-control-repository">1. Fork the control repository.</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/#2-create-specimen-subdirectory">2. Create specimen subdirectory</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/#3-create-docker-compose-yml">3. Create docker-compose.yml:</a></li>
|
||||
|
||||
<li><a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/#4-create-job-manifest">4. Create job manifest</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h2 id="how-to-add-new-specimen">How to add new specimen <a class="anchor" href="#how-to-add-new-specimen"></a></h2>
|
||||
<h3 id="1-fork-the-control-repository">1. Fork the <a href="https://docs.forgeflux.org/ftest/terminology/#control-repository">control repository</a>. <a class="anchor" href="#1-fork-the-control-repository"></a></h3>
|
||||
<pre style="background-color:#eff1f5;color:#4f5b66;"><code><span>git clone https://git.batsense.net/ForgeFlux/ftest-control
|
||||
</span></code></pre>
|
||||
<h3 id="2-create-specimen-subdirectory">2. Create specimen subdirectory <a class="anchor" href="#2-create-specimen-subdirectory"></a></h3>
|
||||
<p>If <a href="https://docs.forgeflux.org/ftest/terminology/#specimen">specimen</a> doesn't exist within <code>targets/</code> directory, then create subdirectory for it:</p>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">mkdir</span><span> targets/<insert-specimen-name>
|
||||
</span><span style="color:#96b5b4;">cd</span><span> targets/<insert-specimen-name>
|
||||
</span></code></pre>
|
||||
<h3 id="3-create-docker-compose-yml">3. Create docker-compose.yml: <a class="anchor" href="#3-create-docker-compose-yml"></a></h3>
|
||||
<pre data-lang="bash" style="background-color:#eff1f5;color:#4f5b66;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">touch</span><span> docker-compose.yml
|
||||
</span></code></pre>
|
||||
<p>Populate docker-compose.yml with instructions to spin up a test
|
||||
environment for the specimen. The specimen's upstream sources
|
||||
will include a reference docker-compose file should be fine in most cases.</p>
|
||||
<h3 id="4-create-job-manifest">4. Create job manifest <a class="anchor" href="#4-create-job-manifest"></a></h3>
|
||||
<p>Job manifest is defined in <code>ftest.toml</code> file in the specimen's
|
||||
subdirectory. It can contain information on:</p>
|
||||
<h4 id="initialization-code">Initialization code <a class="anchor" href="#initialization-code"></a></h4>
|
||||
<p>needs to be run to prepare the test environment.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
308
index.html
Normal file
308
index.html
Normal file
|
@ -0,0 +1,308 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title>Docs</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
|
||||
<img src="/logo.svg" alt="" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h2 id="status">Status <a class="anchor" href="#status"></a></h2>
|
||||
<p>This site is Work-in-Progress, and as such, everything is in an
|
||||
incomplete-state.</p>
|
||||
<h2 id="source-code">Source code <a class="anchor" href="#source-code"></a></h2>
|
||||
<p>Split between two forges, slowly migrating to self-hosted
|
||||
<a href="https://forgejo.org">Forgejo</a> instance at
|
||||
<a href="https://git.batsense.net">git.batsense.net</a></p>
|
||||
<ol>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux">git.batsense.net</a></li>
|
||||
<li><a href="https://github.com/forgeflux-org">GitHub</a></li>
|
||||
</ol>
|
||||
<h2 id="projects-overview">Projects Overview <a class="anchor" href="#projects-overview"></a></h2>
|
||||
<h3 id="project-status-what-does-it-mean">Project Status: what does it mean? <a class="anchor" href="#project-status-what-does-it-mean"></a></h3>
|
||||
<ol>
|
||||
<li>WIP: Code isn't usable.</li>
|
||||
<li>Usable: Code works, but user experience isn't polished. Can be used
|
||||
with a bit of patience ;)</li>
|
||||
<li>Production: Ready for use</li>
|
||||
</ol>
|
||||
<h3 id="1-interface">1. Interface <a class="anchor" href="#1-interface"></a></h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/forgeflux-org/interface">Source code</a></li>
|
||||
<li>Status: WIP</li>
|
||||
<li>Description: API-space software forge federation implementation.</li>
|
||||
</ul>
|
||||
<p>Federation will take time to implement in most, popular software forge
|
||||
implementations. Interface aims to use the forge's REST API or similar
|
||||
and create a federation layer on top of it.</p>
|
||||
<p>Currently, implementation has minimal support for Forgejo and Gitea. A
|
||||
Forgejo user can be exposed to Fediverse through WebFinger using
|
||||
Interface.</p>
|
||||
<h3 id="2-northstar">2. Northstar <a class="anchor" href="#2-northstar"></a></h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/forgeflux-org/northstar">Source code</a></li>
|
||||
<li>Status: Production</li>
|
||||
<li>Description: A lookup service for federating software forges</li>
|
||||
<li>Flagship instance: <a href="https://northstar.forgeflux.org">northstar.forgeflux.org</a></li>
|
||||
</ul>
|
||||
<p>Interface's API-based, external, third-party approach introduces a
|
||||
unique problem: how to locate the internet address (hostname) of the
|
||||
Interface that services a forgege? Enter Northstar. It is a simple
|
||||
Key-Value search server that maps forges and internfaces</p>
|
||||
<h3 id="3-starchart">3. Starchart <a class="anchor" href="#3-starchart"></a></h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/forgeflux-org/starchart">Source code</a></li>
|
||||
<li>Status: Usable</li>
|
||||
<li>Description: Spider and search engine for federating forges</li>
|
||||
<li>Flagship instance:
|
||||
<a href="https://starchart.forgeflux.org">starchart.forgeflux.org</a></li>
|
||||
</ul>
|
||||
<p>Projects on centralized forges like GitHub and GitLab enjoy good
|
||||
visibility through network effect, good search engine indexing and
|
||||
through third-party tools like
|
||||
<a href="https://awesomeopensource.com/">awesomeopensource.com/</a>.</p>
|
||||
<p>Starchart aims to provide high-visibility for projects on independently
|
||||
hosted forges by indexing them and exposing the index with a searchable
|
||||
index. The index is designed to be replicated, so that new Starchart
|
||||
instances can be bootstrapped from an existing Starchart instance's
|
||||
data.</p>
|
||||
<h3 id="4-f3-rs">4. f3-rs <a class="anchor" href="#4-f3-rs"></a></h3>
|
||||
<ul>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/f3-rs">Source code</a></li>
|
||||
<li>Status: WIP</li>
|
||||
<li>Description: Rust port of the <a href="https://f3.forgefriends.org/">Friendly Forge Format</a> library</li>
|
||||
<li>Documentation link: <a href="https://forgeflux.org">f3.forgeflux.org</a></li>
|
||||
</ul>
|
||||
<h3 id="4-ftest">4. ftest <a class="anchor" href="#4-ftest"></a></h3>
|
||||
<ul>
|
||||
<li><a href="https://git.batsense.net/ForgeFlux/ftest">Source code</a></li>
|
||||
<li>Status: Usable</li>
|
||||
<li>Description: Compliance checker/test runner for <a href="https://activitypub.rocks">ActivityPub</a> and by
|
||||
extension, <a href="https://forgefed.org">ForgeFed</a></li>
|
||||
</ul>
|
||||
<p>The idea is to create something similar to
|
||||
<a href="https://github.com/matrix-org/sytest">matrix-org/sytest</a>, but for
|
||||
ActivityPub and ForgeFed. This way, we'll be able to measure how
|
||||
compliant an implementation is to the specifications, which we hope will
|
||||
improve interoperability between instances.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
1
main.css
Normal file
1
main.css
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:recommended",
|
||||
":dependencyDashboard"
|
||||
],
|
||||
"labels": [
|
||||
"renovate-bot"
|
||||
],
|
||||
"prHourlyLimit": 0,
|
||||
"timezone": "Asia/kolkata",
|
||||
"prCreation": "immediate",
|
||||
"vulnerabilityAlerts": {
|
||||
"enabled": true,
|
||||
"labels": [
|
||||
"renovate-bot",
|
||||
"renovate-security",
|
||||
"security"
|
||||
]
|
||||
}
|
||||
}
|
3
robots.txt
Normal file
3
robots.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
User-agent: *
|
||||
Allow: /
|
||||
Sitemap: https://docs.forgeflux.org/sitemap.xml
|
|
@ -1,61 +0,0 @@
|
|||
.search-container {
|
||||
display: none;
|
||||
|
||||
&--is-visible {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#search {
|
||||
width: 100%;
|
||||
display: block;
|
||||
border:none;
|
||||
border-left: 1px solid $color;
|
||||
padding:1px 0;
|
||||
text-align: left;
|
||||
line-height: $baseline;
|
||||
font-size: $font-size;
|
||||
font-family:$font-family;
|
||||
color:$color;
|
||||
background:transparent;
|
||||
}
|
||||
|
||||
#search:focus {
|
||||
outline:none;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.search-results {
|
||||
&__header {
|
||||
font-weight: bold;
|
||||
padding: 1rem 0rem;
|
||||
}
|
||||
|
||||
&__items {
|
||||
margin: 0 2vw;
|
||||
padding: 0;
|
||||
list-style: circle;
|
||||
}
|
||||
|
||||
&__item {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
&__teaser {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#on_right {
|
||||
display: block;
|
||||
text-align: right;
|
||||
margin-bottom: $baseline;
|
||||
}
|
||||
|
||||
#search-ico {
|
||||
font-family: 'FabricMDL2Icons';
|
||||
cursor: pointer;
|
||||
font-size: $baseline;
|
||||
line-height: 1;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
$baseline: 1.5rem;
|
||||
|
||||
$background:#f9f9f9;
|
||||
$color:#222;
|
||||
|
||||
$links: #00f;
|
||||
$hover-links:#c00;
|
||||
$visited-links:#009;
|
||||
|
||||
$font-size: 1.125rem;
|
||||
$font-family: Segoe UI,system-ui,-apple-system,sans-serif;
|
||||
$line-height: 1.75;
|
||||
$code_font: 400 1.125rem/1.75 SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fabric-assets-license
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FabricMDL2Icons';
|
||||
src: url('data:application/octet-stream;base64,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') format('truetype');
|
||||
}
|
||||
|
||||
.ms-Icon {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-family: 'FabricMDL2Icons';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: none;
|
||||
}
|
||||
|
||||
// Mixins
|
||||
@mixin ms-Icon--ChevronRightSmall { content: "\E970"; }
|
||||
@mixin ms-Icon--ChromeClose { content: "\E8BB"; }
|
||||
@mixin ms-Icon--Copy { content: "\E8C8"; }
|
||||
@mixin ms-Icon--GlobalNavButton { content: "\E700"; }
|
||||
@mixin ms-Icon--MiniLink { content: "\E732"; }
|
||||
@mixin ms-Icon--Page { content: "\E7C3"; }
|
||||
@mixin ms-Icon--ProductRelease { content: "\EE2E"; }
|
||||
@mixin ms-Icon--Save { content: "\E74E"; }
|
||||
@mixin ms-Icon--Search { content: "\E721"; }
|
||||
|
||||
|
||||
// Classes
|
||||
.ms-Icon--ChevronRightSmall:before { @include ms-Icon--ChevronRightSmall }
|
||||
.ms-Icon--ChromeClose:before { @include ms-Icon--ChromeClose }
|
||||
.ms-Icon--Copy:before { @include ms-Icon--Copy }
|
||||
.ms-Icon--GlobalNavButton:before { @include ms-Icon--GlobalNavButton }
|
||||
.ms-Icon--MiniLink:before { @include ms-Icon--MiniLink }
|
||||
.ms-Icon--Page:before { @include ms-Icon--Page }
|
||||
.ms-Icon--ProductRelease:before { @include ms-Icon--ProductRelease }
|
||||
.ms-Icon--Save:before { @include ms-Icon--Save }
|
||||
.ms-Icon--Search:before { @include ms-Icon--Search }
|
342
sass/main.scss
342
sass/main.scss
|
@ -1,342 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
html {
|
||||
font-kerning: normal;
|
||||
text-rendering: optimizeLegibility;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
margin:$baseline 0;
|
||||
font-size:$font-size;
|
||||
font-family:$font-family;
|
||||
line-height: $line-height;
|
||||
background:$background;
|
||||
color:$color;
|
||||
}
|
||||
|
||||
@keyframes fade-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
50% {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
&:link {
|
||||
color:$links;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color:$hover-links;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
color:$visited-links;
|
||||
}
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
.anchor {
|
||||
visibility: hidden;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
line-height: 1;
|
||||
color:$color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.anchor {
|
||||
visibility: visible;
|
||||
animation: fade-in 0.3s ease-in-out;
|
||||
font-family: 'FabricMDL2Icons';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
margin:$baseline 0;
|
||||
border-radius: 4px;
|
||||
padding:$baseline;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
|
||||
code {
|
||||
background:transparent;
|
||||
|
||||
&::after {
|
||||
content: attr(data-lang);
|
||||
font-style: italic;
|
||||
line-height: 1;
|
||||
opacity:0.3;
|
||||
position:absolute;
|
||||
bottom:$baseline;
|
||||
right:$baseline;
|
||||
z-index:1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
font: $code_font;
|
||||
}
|
||||
|
||||
.copy-code-button {
|
||||
font-family: 'FabricMDL2Icons';
|
||||
display:none;
|
||||
background:$background;
|
||||
border-radius: 4px;
|
||||
border:none;
|
||||
cursor: pointer;
|
||||
animation: fade-in 0.3s ease-in-out;
|
||||
font-size: $baseline;
|
||||
color:$color;
|
||||
z-index: 10;
|
||||
position:absolute;
|
||||
top:$baseline;
|
||||
right:$baseline;
|
||||
}
|
||||
|
||||
pre:hover .copy-code-button {
|
||||
display: block;
|
||||
}
|
||||
|
||||
nav {
|
||||
position: sticky;
|
||||
height: 92vh;
|
||||
top:$baseline;
|
||||
left:$baseline;
|
||||
bottom: $baseline;
|
||||
padding-right: $baseline;
|
||||
width: 20rem;
|
||||
|
||||
img {
|
||||
width:128px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin:0;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
|
||||
#toc {
|
||||
margin-left:calc(#{$baseline} + #{$font-size});
|
||||
padding:0;
|
||||
margin:0 0 0 $baseline;
|
||||
font-size: 80%;
|
||||
|
||||
li {
|
||||
color:$color;
|
||||
margin-left: $font-size;
|
||||
|
||||
&::before {
|
||||
display: inline-block;
|
||||
content:"";
|
||||
}
|
||||
|
||||
ul {
|
||||
padding:0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
main {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
animation: fade-in 0.4s ease-in-out;
|
||||
}
|
||||
|
||||
#release {
|
||||
text-align: left;
|
||||
margin:$baseline 0;
|
||||
|
||||
&::before {
|
||||
display: inline-block;
|
||||
content: "\EE2E";
|
||||
font-family: 'FabricMDL2Icons';
|
||||
margin-right:calc(#{$baseline} / 8);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideIn {
|
||||
0% {
|
||||
max-height:0;
|
||||
opacity:0
|
||||
}
|
||||
100% {
|
||||
max-height:999px;
|
||||
opacity:1
|
||||
}
|
||||
}
|
||||
@keyframes slideOut {
|
||||
0% {
|
||||
height:auto;
|
||||
opacity:1
|
||||
}
|
||||
100% {
|
||||
height:0;
|
||||
opacity:0
|
||||
}
|
||||
}
|
||||
|
||||
nav label {
|
||||
display:block;
|
||||
}
|
||||
|
||||
#trees {
|
||||
overflow-y: auto;
|
||||
height: 80%;
|
||||
}
|
||||
|
||||
.subtree {
|
||||
overflow:hidden;
|
||||
margin:calc(#{$baseline} / 8) 0;
|
||||
transition: overflow 0.2s ease-in-out;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tree-toggle-label {
|
||||
user-select:none;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.tree-toggle-label::before {
|
||||
display:inline-block;
|
||||
content:"\E970";
|
||||
font-family:'FabricMDL2Icons';
|
||||
font-size:.75rem;
|
||||
transform:rotate(0deg);
|
||||
transform-origin:50% 50% 0px;
|
||||
transition:transform 0.1s linear 0s;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
|
||||
.tree-toggle {
|
||||
position:absolute;
|
||||
opacity:0;
|
||||
z-index:-1;
|
||||
}
|
||||
|
||||
.tree-toggle:checked+.tree-toggle-label::before {
|
||||
content:"\E970";
|
||||
font-family:'FabricMDL2Icons';
|
||||
font-size:.75rem;
|
||||
transform:rotate(90deg);
|
||||
transform-origin:50% 50% 0px;
|
||||
transition:transform 0.1s linear 0s;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.tree-toggle:checked+.tree-toggle-label {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.tree-toggle+.tree-toggle-label+.subtree {
|
||||
animation-name:slideOut;
|
||||
animation-duration:0.25s;
|
||||
animation-fill-mode:both;
|
||||
}
|
||||
|
||||
.tree-toggle:checked+.tree-toggle-label+.subtree {
|
||||
animation-name:slideIn;
|
||||
animation-duration:0.25s;
|
||||
animation-fill-mode:both;
|
||||
}
|
||||
|
||||
|
||||
.subtree li {
|
||||
list-style-type: none;
|
||||
margin-left: $baseline;
|
||||
|
||||
|
||||
a {
|
||||
color:$color;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "\E7C3";
|
||||
font-family:'FabricMDL2Icons';
|
||||
font-size:0.75rem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.active a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
article {
|
||||
width: calc(100% - (#{$baseline} * 4 + 20rem));
|
||||
margin-left:calc(#{$baseline} * 2);
|
||||
|
||||
img {
|
||||
max-width:100%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 1023px) {
|
||||
|
||||
main {
|
||||
flex-flow: column nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
nav {
|
||||
position: inherit;
|
||||
height:auto;
|
||||
margin:$baseline $baseline 0 $baseline;
|
||||
}
|
||||
|
||||
article {
|
||||
width: calc(100% - (#{$baseline} * 2));
|
||||
margin:0 $baseline;
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
#mobile {
|
||||
font-family: 'FabricMDL2Icons';
|
||||
cursor: pointer;
|
||||
font-size: $baseline;
|
||||
margin:0 $baseline 0 0;
|
||||
display: block;
|
||||
color:$color;
|
||||
}
|
||||
|
||||
#trees {
|
||||
display: none;
|
||||
position:absolute;
|
||||
background: $background;
|
||||
height:auto;
|
||||
width:100vw;
|
||||
z-index:10;
|
||||
box-shadow: 0 2px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
#on_right {
|
||||
margin-top:$baseline;
|
||||
}
|
||||
}
|
||||
|
||||
@import "fabric-icons-inline";
|
||||
@import "search";
|
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
Before Width: | Height: | Size: 147 KiB |
120
scripts/ci.sh
120
scripts/ci.sh
|
@ -1,120 +0,0 @@
|
|||
#!/bin/bash
|
||||
# ci.sh: Helper script to automate deployment operations on CI/CD
|
||||
# Copyright © 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
set -xEeuo pipefail
|
||||
#source $(pwd)/scripts/lib.sh
|
||||
|
||||
readonly SSH_ID_FILE=/tmp/ci-ssh-id
|
||||
readonly SSH_REMOTE_NAME=origin-ssh
|
||||
|
||||
match_arg() {
|
||||
if [ $1 == $2 ] || [ $1 == $3 ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
help() {
|
||||
cat << EOF
|
||||
USAGE: ci.sh [SUBCOMMAND]
|
||||
Helper script to automate deployment operations on CI/CD
|
||||
|
||||
Subcommands
|
||||
|
||||
-c --clean cleanup secrets, SSH key and other runtime data
|
||||
-i --init <SSH_PRIVATE_KEY> initialize environment, write SSH private to file
|
||||
-d --deploy <PAGES-SECRET> <TARGET BRANCH> push branch to Gitea and call Pages server
|
||||
-h --help print this help menu
|
||||
EOF
|
||||
}
|
||||
|
||||
# $1: SSH private key
|
||||
write_ssh(){
|
||||
truncate --size 0 $SSH_ID_FILE
|
||||
echo "$1" > $SSH_ID_FILE
|
||||
chmod 600 $SSH_ID_FILE
|
||||
}
|
||||
|
||||
set_ssh_remote() {
|
||||
http_remote_url=$(git remote get-url origin)
|
||||
remote_hostname=$(echo $http_remote_url | cut -d '/' -f 3)
|
||||
repository_owner=$(echo $http_remote_url | cut -d '/' -f 4)
|
||||
repository_name=$(echo $http_remote_url | cut -d '/' -f 5)
|
||||
ssh_remote="git@$remote_hostname:$repository_owner/$repository_name"
|
||||
ssh_remote="git@git.batsense.net:ForgeFlux/docs.git"
|
||||
git remote add $SSH_REMOTE_NAME $ssh_remote
|
||||
}
|
||||
|
||||
clean() {
|
||||
if [ -f $SSH_ID_FILE ]
|
||||
then
|
||||
shred $SSH_ID_FILE
|
||||
rm $SSH_ID_FILE
|
||||
fi
|
||||
}
|
||||
|
||||
# $1: Pages API secret
|
||||
# $2: Deployment target branch
|
||||
deploy() {
|
||||
if (( "$#" < 2 ))
|
||||
then
|
||||
help
|
||||
else
|
||||
git -c core.sshCommand="/usr/bin/ssh -oStrictHostKeyChecking=no -i $SSH_ID_FILE"\
|
||||
push --force $SSH_REMOTE_NAME $2
|
||||
curl -vv --location --request \
|
||||
POST "https://deploy.batsense.net/api/v1/update"\
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw "{ \"secret\": \"$1\", \"branch\": \"$2\" }"
|
||||
fi
|
||||
}
|
||||
|
||||
if (( "$#" < 1 ))
|
||||
then
|
||||
help
|
||||
exit -1
|
||||
fi
|
||||
|
||||
|
||||
if match_arg $1 '-i' '--init'
|
||||
then
|
||||
if (( "$#" < 2 ))
|
||||
then
|
||||
help
|
||||
exit -1
|
||||
fi
|
||||
set_ssh_remote
|
||||
write_ssh "$2"
|
||||
elif match_arg $1 '-c' '--clean'
|
||||
then
|
||||
clean
|
||||
elif match_arg $1 '-d' '--deploy'
|
||||
then
|
||||
if (( "$#" < 3 ))
|
||||
then
|
||||
help
|
||||
exit -1
|
||||
fi
|
||||
deploy $2 $3
|
||||
elif match_arg $1 '-h' '--help'
|
||||
then
|
||||
help
|
||||
else
|
||||
help
|
||||
fi
|
|
@ -1,32 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Copyright © 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
check_arg(){
|
||||
if [ -z $1 ]
|
||||
then
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
match_arg() {
|
||||
if [ $1 == $2 ] || [ $1 == $3 ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
|
@ -1,98 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Used in CI workflow: install and check for spelling errors
|
||||
# Copyright © 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
readonly MISSPELL_DOWNLOAD="https://github.com/client9/misspell/releases/download/v0.3.4/misspell_0.3.4_linux_64bit.tar.gz"
|
||||
readonly TMP_DIR=$(pwd)/tmp
|
||||
readonly PROJECT_ROOT=$(pwd)
|
||||
readonly MISSPELL_TARBALL="$TMP_DIR/misspell.tar.bz2"
|
||||
readonly MISSPELL="$TMP_DIR/misspell"
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
source $(pwd)/scripts/lib.sh
|
||||
|
||||
FLAGS=""
|
||||
|
||||
help() {
|
||||
cat << EOF
|
||||
spellcheck.sh: Check for spelling errors
|
||||
USAGE:
|
||||
spellcheck.sh <options>
|
||||
OPTIONS:
|
||||
c --check check for spelling erros
|
||||
h --help print this help menu
|
||||
w --write check and fix spelling errors
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
|
||||
download() {
|
||||
if [ ! -e $MISSPELL ];
|
||||
then
|
||||
echo "[*] Downloading misspell"
|
||||
wget --quiet --output-doc=$MISSPELL_TARBALL $MISSPELL_DOWNLOAD;
|
||||
cd $TMP_DIR
|
||||
tar -xf $MISSPELL_TARBALL;
|
||||
cd $PROJECT_ROOT
|
||||
pip install codespell
|
||||
else
|
||||
echo "[*] Found misspell"
|
||||
fi
|
||||
}
|
||||
|
||||
spell_check_codespell() {
|
||||
_check(){
|
||||
codespell $FLAGS $PROJECT_ROOT/$1 #|| true
|
||||
}
|
||||
_check README.md
|
||||
_check contents
|
||||
}
|
||||
|
||||
spell_check_misspell() {
|
||||
mkdir $TMP_DIR || true
|
||||
download
|
||||
|
||||
_check(){
|
||||
$MISSPELL $FLAGS $PROJECT_ROOT/$1
|
||||
}
|
||||
|
||||
_check contents
|
||||
_check README.md
|
||||
}
|
||||
|
||||
check_arg $1
|
||||
|
||||
if match_arg $1 'w' '--write'
|
||||
then
|
||||
echo "[*] checking and correcting spellings"
|
||||
FLAGS="-w"
|
||||
spell_check_misspell
|
||||
spell_check_codespell
|
||||
elif match_arg $1 'c' '--check'
|
||||
then
|
||||
echo "[*] checking spellings"
|
||||
spell_check_misspell
|
||||
spell_check_codespell
|
||||
elif match_arg $1 'h' '--help'
|
||||
then
|
||||
help
|
||||
else
|
||||
echo "undefined option"
|
||||
help
|
||||
exit 1
|
||||
fi
|
158
scripts/zola.sh
158
scripts/zola.sh
|
@ -1,158 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Used in CI workflow: install Zola binary from GitHub
|
||||
# Copyright © 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readonly PROJECT_ROOT=$(pwd)
|
||||
readonly TARBALL=zola.tar.gz
|
||||
readonly SOURCE="https://github.com/getzola/zola/releases/download/v0.15.3/zola-v0.15.3-x86_64-unknown-linux-gnu.tar.gz"
|
||||
|
||||
readonly BIN_PATH=tmp/bin
|
||||
readonly BIN=$BIN_PATH/zola
|
||||
|
||||
readonly DIST=public
|
||||
|
||||
source $(pwd)/scripts/lib.sh
|
||||
|
||||
help() {
|
||||
cat << EOF
|
||||
zola.sh: Zola build script
|
||||
USAGE:
|
||||
zola.sh <options>
|
||||
OPTIONS:
|
||||
b build build website
|
||||
c clean clean dependencies and build artifacts
|
||||
d deploy deploy build to branch
|
||||
h help print this help menu
|
||||
i install install build dependencies
|
||||
u url make urls relative
|
||||
z zola invoke zola
|
||||
EOF
|
||||
}
|
||||
|
||||
download() {
|
||||
if [ ! -e $BIN_PATH ];
|
||||
then
|
||||
mkdir -p $BIN_PATH
|
||||
cd $BIN_PATH
|
||||
echo "[*] Downloading Zola"
|
||||
wget --quiet --output-document=$TARBALL $SOURCE
|
||||
tar -xvzf $TARBALL > /dev/null
|
||||
rm $TARBALL
|
||||
echo "[*] Downloaded zola into $BIN"
|
||||
cd $PROJECT_ROOT
|
||||
fi
|
||||
}
|
||||
|
||||
init() {
|
||||
if [ ! -d $BIN_PATH ]
|
||||
then
|
||||
mkdir $BIN_PATH
|
||||
fi
|
||||
|
||||
if [ ! -f $BIN ]
|
||||
then
|
||||
cd $BIN_PATH
|
||||
download
|
||||
fi
|
||||
}
|
||||
|
||||
run() {
|
||||
$BIN "${@:1}"
|
||||
}
|
||||
|
||||
build() {
|
||||
run build
|
||||
}
|
||||
|
||||
no_absolute_url() {
|
||||
sed -i 's/https:\/\/hostea.org//g' $(find public -type f | grep html)
|
||||
}
|
||||
|
||||
clean() {
|
||||
rm -rf $BIN_PATH || true
|
||||
rm -rf $DIST || true
|
||||
echo "[*] Workspace cleaned"
|
||||
}
|
||||
|
||||
# $1: branch name
|
||||
# $2: directory containing build assets
|
||||
# $3: Author in <author-name author@example.com> format
|
||||
deploy() {
|
||||
cd $PROJECT_ROOT
|
||||
original_branch=$(git branch --show-current)
|
||||
tmp_dir=$(mktemp -d)
|
||||
cp -r $2/* $tmp_dir
|
||||
|
||||
if [[ -z $(git ls-remote --heads origin ${1}) ]]
|
||||
then
|
||||
echo "[*] Creating deployment branch $1"
|
||||
git checkout --orphan $1
|
||||
else
|
||||
echo "[*] Deployment branch $1 exists, pulling changes from remote"
|
||||
git fetch origin $1
|
||||
git switch $1
|
||||
fi
|
||||
|
||||
git rm -rf .
|
||||
/bin/rm -rf *
|
||||
cp -r $tmp_dir/* .
|
||||
git add --all
|
||||
if [ $(git status --porcelain | xargs | sed '/^$/d' | wc -l) -gt 0 ];
|
||||
then
|
||||
echo "[*] Repository has changed, committing changes"
|
||||
git commit \
|
||||
--author="$3" \
|
||||
--message="new deploy: $(date --iso-8601=seconds)"
|
||||
fi
|
||||
git checkout $original_branch
|
||||
}
|
||||
|
||||
check_arg $1
|
||||
download
|
||||
|
||||
if match_arg $1 'i' 'install'
|
||||
then
|
||||
init
|
||||
elif match_arg $1 'c' 'clean'
|
||||
then
|
||||
clean
|
||||
elif match_arg $1 'd' 'deploy'
|
||||
then
|
||||
check_arg $2
|
||||
check_arg $3
|
||||
check_arg $4
|
||||
deploy $2 $3 $4
|
||||
elif match_arg $1 'b' 'build'
|
||||
then
|
||||
build
|
||||
elif match_arg $1 'h' 'help'
|
||||
then
|
||||
help
|
||||
elif match_arg $1 'u' 'url'
|
||||
then
|
||||
no_absolute_url
|
||||
elif match_arg $1 'z' 'zola'
|
||||
then
|
||||
$BIN "${@:3}"
|
||||
else
|
||||
echo "Error: $1 is not an option"
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
1
search_index.en.js
Normal file
1
search_index.en.js
Normal file
File diff suppressed because one or more lines are too long
57
sitemap.xml
Normal file
57
sitemap.xml
Normal file
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/Interface/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/Interface/about/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/Northstar/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/Northstar/about/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/ftest-toml/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/introduction/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/quick-links/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/terminology/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/tests/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/ftest/tutorial-new-specimen/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/updates/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/updates/december2020/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/updates/november2020/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/updates/october2020/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.forgeflux.org/updates/september2020/</loc>
|
||||
</url>
|
||||
</urlset>
|
|
@ -1 +0,0 @@
|
|||
<a class="anchor" href="#{{ id }}"></a>
|
|
@ -1,137 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="{{ get_url(path="main.css") | safe }}">
|
||||
{% if config.extra.favicon %}
|
||||
<link rel="icon" href="{{ config.extra.favicon | safe }}">
|
||||
{% endif %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{% if config.extra.release %}
|
||||
<script>
|
||||
fetch('{{ config.extra.release | safe }}')
|
||||
.then((response) => {
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
let release_name = data.name;
|
||||
let html_url = data.html_url;
|
||||
release.innerHTML = `<a href='${html_url}'>${release_name}</a>`;
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
<main>
|
||||
|
||||
{% block nav %}
|
||||
|
||||
<nav>
|
||||
{% if config.extra.logo %}
|
||||
{% if current_path == "/" %}
|
||||
<img src="{{ config.extra.logo | safe }}" alt="" />
|
||||
|
||||
{% else %}<a href="{{ config.base_url }}">
|
||||
<img src="{{ config.extra.logo | safe }}" alt="" />
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
<h1><a href="{{ config.base_url }}">{{ config.title }}</a></h1>
|
||||
{% endif %}
|
||||
|
||||
{% if config.extra.release %}
|
||||
<div id="release"></div>
|
||||
{% endif %}
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
{% set section = get_section(path="_index.md") %}
|
||||
{% for p in section.subsections %}
|
||||
{% set subsection = get_section(path=p) %}
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="{{ subsection.title | slugify }}"
|
||||
{% if current_path is starting_with(subsection.path) %}checked{% endif %} />
|
||||
<label class="tree-toggle-label" for="{{ subsection.title | slugify }}">{{ subsection.title }}</label>
|
||||
|
||||
<ul class="subtree">
|
||||
{% for page in subsection.pages %}
|
||||
<li {% if current_path == page.path %}class="active"{% endif %}>
|
||||
<a href="{{page.permalink | safe }}">{{page.title}}</a>
|
||||
</li>
|
||||
|
||||
{% if page.toc %}
|
||||
|
||||
{% if current_path == page.path %}
|
||||
|
||||
{% set_global header_count = 0 %}
|
||||
{% for h2 in page.toc %}
|
||||
{% set_global header_count = header_count + 1 %}
|
||||
{% for h3 in h2.children %}
|
||||
{% set_global header_count = header_count + 1 %}
|
||||
{% for h4 in h3.children %}
|
||||
{% set_global header_count = header_count + 1 %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% if header_count > 4 %}
|
||||
<ul id="toc">
|
||||
{% for h2 in page.toc %}
|
||||
<li><a href="{{ h2.permalink | safe }}">{{ h2.title }}</a>
|
||||
{% if h2.children %}
|
||||
<ul>
|
||||
{% for h3 in h2.children %}
|
||||
<li><a href="{{ h3.permalink | safe }}">{{ h3.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</nav>
|
||||
{% endblock nav %}
|
||||
|
||||
<article>
|
||||
|
||||
{% if config.build_search_index %}
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div id="wrap">
|
||||
{% block content %}
|
||||
{{ section.content | safe }}
|
||||
{% endblock content %}
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
{% if config.build_search_index %}
|
||||
<script type="text/javascript" src="{{ get_url(path="elasticlunr.min.js") | safe }}" defer></script>
|
||||
<script type="text/javascript" src="{{ get_url(path="search_index.en.js") | safe }}" defer></script>
|
||||
<script type="text/javascript" src="{{ get_url(path="js.js") | safe }}" defer></script>
|
||||
{% endif %}
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %} {{ config.title }} | {{ page.title }} {% endblock title %}
|
||||
{% block content %}
|
||||
{{ page.content | safe }}
|
||||
{% endblock content %}
|
10
theme.toml
10
theme.toml
|
@ -1,10 +0,0 @@
|
|||
name = "EasyDocs"
|
||||
description = "An easy way to create docs for your project"
|
||||
license = "MIT"
|
||||
homepage = "https://github.com/codeandmedia/zola_easydocs_theme"
|
||||
min_version = "0.13.0"
|
||||
demo = "https://easydocs.codeandmedia.com"
|
||||
|
||||
[author]
|
||||
name = "Roman Soldatenkov"
|
||||
homepage = "https://codeandmedia.com"
|
274
updates/december2020/index.html
Normal file
274
updates/december2020/index.html
Normal file
|
@ -0,0 +1,274 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | December 2020 </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="december-2020">December 2020</h1>
|
||||
<h2 id="northstar">Northstar</h2>
|
||||
<p>As the development on <a href="https://docs.forgeflux.org/Northstar/">Northstar</a> nears the completion phase,
|
||||
updates on it have slowed down, and the only updates that were made during this
|
||||
stage mostly comprises of configuration updates.
|
||||
These updates were mostly related to bootstrapping <a href="https://www.dynaconf.com/">DynaConf</a>,
|
||||
as we embraced 12-factor app configuration recommendations, allowing for better
|
||||
configuration management.</p>
|
||||
<h2 id="interface">Interface</h2>
|
||||
<p>Realising the need for validation of a request to an actor, an authentication
|
||||
mechanism was developed to implement Matrix's <a href="https://github.com/matrix-org/python-signedjson">signed JSON</a>
|
||||
feature, but, was later replaced in favor of <a href="https://tools.ietf.org/html/draft-cavage-http-signatures">HTTP Signatures</a>.</p>
|
||||
<p>Interface underwent major refactoring to improve test-ability and reliability in addition
|
||||
to implementing authentication by a <a href="https://github.com/matrix-org/python-signedjson">signed JSON</a>
|
||||
mechanism implemented by the Matrix project. Taking note of rate-limits imposed by some forges,
|
||||
we figured we'd have to cache responses and so data persistence was implemented by way of
|
||||
storing in a database.</p>
|
||||
<h2 id="references">References</h2>
|
||||
<p>These are a list of the Pull Requests where the following updates took place for the
|
||||
organization.</p>
|
||||
<ul>
|
||||
<li>Forking Implementation :: <a href="https://github.com/forgeflux-org/interface/commit/5c9f61d60ce069963da7abc761b9ba3d81c8883a">#34</a></li>
|
||||
<li>Authentication :: <a href="https://github.com/forgeflux-org/interface/commit/5cc206cbe5be83cedac14949a537baad4c6351e3">#36</a></li>
|
||||
<li>DB Refactor :: <a href="https://github.com/forgeflux-org/interface/commit/57c9a085b38f8c3bab7975e18d21e4455ad3cac9">#39</a>, <a href="https://github.com/forgeflux-org/interface/commit/d9d785ca116e9a2bb9a40cf3eaa16a8b275d1593">#40</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
43
updates/index.html
Normal file
43
updates/index.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Zola</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Welcome to Zola!</h1>
|
||||
<p>
|
||||
You're seeing this page because we couldn't find a template to render.
|
||||
</p>
|
||||
<p>
|
||||
To modify this page, create a <b>section.html</b> file in the templates directory or
|
||||
<a href="https://www.getzola.org/documentation/themes/installing-and-using-themes/" target="_blank">install a theme</a>.
|
||||
<br>
|
||||
You can find what variables are available in this template in the <a href="https://www.getzola.org/documentation/templates/pages-sections/#section-variables" target="_blank">documentation</a>.
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://www.getzola.org/documentation/getting-started/cli-usage/" target="_blank">Get started with Zola</a>
|
||||
</footer>
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.5;
|
||||
}
|
||||
h1 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.container {
|
||||
font-family: "sans-serif";
|
||||
text-align: center;
|
||||
margin-top: 20vh;
|
||||
padding: 2rem;
|
||||
background: #e9e9e9;
|
||||
}
|
||||
footer {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
263
updates/november2020/index.html
Normal file
263
updates/november2020/index.html
Normal file
|
@ -0,0 +1,263 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | November 2020 </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="november-2020">November 2020</h1>
|
||||
<p>Errors were modularized at the back of <a href="https://github.com/forgeflux-org/northstar/">Northstar</a>,
|
||||
and A Docker CI was set up for the Northstar builds.</p>
|
||||
<p>A <a href="https://github.com/forgeflux-org">GitHub organization</a> was created for ForgeFedv2,
|
||||
and the repositories for the projects were transferred over to it.</p>
|
||||
<p>A Notification-Event Translation Mechanism was set up.</p>
|
||||
<ol>
|
||||
<li>Northstar functionality was integrated into Interface, and tests were set up to ensure that it could be contacted through Interface's methods.</li>
|
||||
<li>A locking mechanism was set up for concurrent operations on Git utilizing <a href="https://sled.rs/">Sled</a>.</li>
|
||||
<li>Implementations of a basic job runner was set up to mimic retrieving requests from Forges, through periodically retrieving notifications.</li>
|
||||
<li>The endpoints for notifications was subsequently set up, and responses to these Notifications were termed as events.</li>
|
||||
<li>The endpoints for processing these events were then created.</li>
|
||||
</ol>
|
||||
<p>Shifted over the configuration management to <a href="https://www.dynaconf.com/">Dynaconf</a>.</p>
|
||||
<h2 id="references">References</h2>
|
||||
<ul>
|
||||
<li>Integration with Northstar :: <a href="https://github.com/forgeflux-org/interface/commit/0c9d8bdff05e668d77a85fdfc89b37abe1ac86cb">Info</a></li>
|
||||
<li>Locking Mechanism with Sled :: <a href="https://github.com/forgeflux-org/interface/commit/d3e7c81c95d87b612ebb9562cac31d371fe8629e">Info</a></li>
|
||||
<li>Defining Events :: <a href="https://github.com/forgeflux-org/interface/commit/30547b783578a7a9548aca55b3b7c932ed8130e6">Info</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
271
updates/october2020/index.html
Normal file
271
updates/october2020/index.html
Normal file
|
@ -0,0 +1,271 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | October 2020 </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="october-2020">October 2020</h1>
|
||||
<p>In the month of October, there were significant changes to the development
|
||||
in ForgeFedv2, with the addition of the <a href="https://forgeflux-org.github.io/northstar/">OpenAPI Specification</a>
|
||||
for Northstar.</p>
|
||||
<h2 id="northstar">Northstar</h2>
|
||||
<p>A database model was created to store the details of the various forge interfaces,
|
||||
having these details would be a prerequisite to looking up a server.</p>
|
||||
<p>Endpoints were subsequently created, following the defined OpenAPI specification.
|
||||
While the Lookup service was in the process of development, terminologies and the
|
||||
concept for Forge Federation was also being <a href="https://github.com/forgeflux-org/spec/tree/master/rfc">discussed</a>.</p>
|
||||
<p>Docker support as part of the CI process was added into the mix, while
|
||||
keeping in mind, that the test suite was the method to work with the application for
|
||||
the time being.
|
||||
An initial working model for the lookup service was established.</p>
|
||||
<h2 id="interface">Interface</h2>
|
||||
<p>Development of the <code>libgit</code> library had begun at this point.</p>
|
||||
<p>[libgit] is a library that processes the contributor's changes, and generates a patch.
|
||||
Details regarding the implementation and feature set of libgit will be covered in another section.</p>
|
||||
<h2 id="references">References</h2>
|
||||
<ul>
|
||||
<li>Database Initialization :: <a href="https://github.com/forgeflux-org/northstar/commit/6a82a1bc83d4733a5a077e33ad0c222aed496145">database init</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
248
updates/september2020/index.html
Normal file
248
updates/september2020/index.html
Normal file
|
@ -0,0 +1,248 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://docs.forgeflux.org/main.css">
|
||||
|
||||
<link rel="icon" href="https://forgeflux.org/favicon.ico">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<title> Docs | September 2020 </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
<nav>
|
||||
|
||||
<a href="https://docs.forgeflux.org">
|
||||
<img src="/logo.svg" alt="" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="javascript:void(0);" onclick="burger()" id="mobile" class="ms-Icon--GlobalNavButton"></a>
|
||||
<div id="trees">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="ftest"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="ftest">ftest</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/introduction/">Introducing ftest</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/cli/">Using ftest CLI</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/terminology/">Terminology</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/quick-links/">Quick Links</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/ftest-toml/">ftest.toml</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tests/">Tests</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/ftest/tutorial-new-specimen/">[Tutorial] Add new specimen</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="interface"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="interface">Interface</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Interface/about/">About Interface</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="northstar"
|
||||
/>
|
||||
<label class="tree-toggle-label" for="northstar">Northstar</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/Northstar/about/">About Northstar</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="tree-toggle" type="checkbox" id="updates"
|
||||
checked />
|
||||
<label class="tree-toggle-label" for="updates">Updates</label>
|
||||
|
||||
<ul class="subtree">
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/december2020/">December 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/november2020/">November 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li >
|
||||
<a href="https://docs.forgeflux.org/updates/october2020/">October 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="active">
|
||||
<a href="https://docs.forgeflux.org/updates/september2020/">September 2020</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<div id="on_right">
|
||||
<span id="search-ico" class="ms-Icon--Search"></span>
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<input id="search" type="search" placeholder="Search as you type...">
|
||||
<div class="search-results">
|
||||
<div class="search-results__header"></div>
|
||||
<ul class="search-results__items"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<h1 id="september-2020">September 2020</h1>
|
||||
<p>In the month of September, project "ForgeFedv2" started off by
|
||||
initializing the lookup service, <a href="https://github.com/forgeflux-org/northstar/">Northstar</a>.</p>
|
||||
<p>The initialization mostly comprised of setting up the CI environment,
|
||||
and focused more on defining the structure of the project, and how
|
||||
we were to be going about it.</p>
|
||||
<p>A discussion on the terminology and the primitive method of the
|
||||
project's functionality were discussed.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/elasticlunr.min.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/search_index.en.js" defer></script>
|
||||
<script type="text/javascript" src="https://docs.forgeflux.org/js.js" defer></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue