PHP composer/satis application extended with the ability to automate Satis
configuration according to git projects containing a composer.json
file.
It also provides a way to mirror PHP dependencies to allow offline builds.
- PHP 8.2
- GitLab API v4 / GitHub API / Gogs API / Gitea API
git clone https://github.com/netresearch/satis-git
cd satis-git
composer install
# add --archive if you want to mirror tar archives
bin/satis-git git-to-config \
--homepage https://satis.example.org \
--output satis.json \
https://git.example.org [AuthToken]
bin/satis-git build satis.json web
Use you're favorite tool to expose web
directory as https://satis.example.org
.
satis.json should not be exposed, it contains the auth token by default (see --no-token
)
Satis web page suggests to add the following configuration to composer.json in all your projects :
{
"repositories": [{
"type": "composer",
"url": "https://satis.example.org"
}]
}
Alternatively, composer can be configured globally to use Satis :
composer config --global repo.satis.example.org composer https://satis.example.org
(it makes a weaker link between your projects and your Satis instance(s))
If you rely on gitlab.com, you will probably need to find projects according to groups and users:
bin/satis-git git-to-config https://gitlab.com \$AUTH_TOKEN -vv --users=git_username --orgs=organization_name
bin/satis-git git-to-config https://github.com \$AUTH_TOKEN --orgs=git_organization --users=git_username
bin/satis-git build --skip-errors satis.json web
(Note that AUTH_TOKEN is required to avoid rate request limitation)
bin/satis-git git-to-config https://gogs.mydomain.org \$AUTH_TOKEN
bin/satis-git build --skip-errors satis.json web
(Note that Gogs detection is based on hostname)
Note that --archive
option allows to download tar
archives for each tag and each branch in web/dist
for :
- The git projects
- The dependencies of the git projects
Note that AuthToken
is optional so that you can generate a Satis instance only for you're public repositories.
Note that git-to-config
saves the AuthToken
to satis.json
configuration file (so far you expose only the web
directory, it is not a problem).
You may disable this option using --no-token
option and use the following composer command to configure
$COMPOSER_HOME/auth.json
file :
composer config -g git-token.satis.example.org AuthToken
Some command line options provide a basic customization options. You may also use --template my-satis-template.json
to replace the default template :
## Supported PHP versions
PHP 8.2
export SATIS_GITLAB_TOKEN=AnyGitlabToken
export SATIS_GITHUB_TOKEN=AnyGithubToken
make test
Note that an HTML coverage report is generated to output/coverage/index.html
satis-git is licensed under the MIT License - see the LICENSE file for details