PHPackages                             ac-toulouse/satis2nexus - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. ac-toulouse/satis2nexus

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

ac-toulouse/satis2nexus
=======================

Fork de Satis pour automatiser le push de nos packages composer sur Nexus

504PHPCI failing

Since Oct 1Pushed 2y ago1 watchersCompare

[ Source](https://github.com/ptsakyrellis/satis2nexus)[ Packagist](https://packagist.org/packages/ac-toulouse/satis2nexus)[ RSS](/packages/ac-toulouse-satis2nexus/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Satis2Nexus
===========

[](#satis2nexus)

*Satis2Nexus* is a fork of the [Satis project](https://github.com/composer/satis) which automates the build and push of PHP private packages to a [Nexus Repository Manager](https://sonatype.com/nexus-repository-oss) instance where the [composer repository plugin](https://github.com/sonatype-nexus-community/nexus-repository-composer) is installed.

The composer repository Nexus plugin is still in beta and only half done, the sole contributor has decided no to update it anymore. Thus there is no simple way to upload private PHP packages automatically from source repositories to Nexus the same way Satis was doing it.

The only automated feature of the plugin is the mirror / proxy of the public libraries hosted by [packagist.org](https://packagist.org). The main reason for that is that the plugin is only able to understand one type of "packages.json" file, and this is the one from packagist (Satis uses a slightly different schema).

So we decided to fork the Satis project to include an additional step to push the generated zip files to a Nexus composer repository.

Usage
-----

[](#usage)

### Install

[](#install)

On the server which will be used to send the packages to the Nexus instance, clone the project repository :

```
$ git clone git@github.com:ptsakyrellis/satis2nexus.git

```

### Update

[](#update)

On the server which will be used to send the packages to the Nexus instance, update the repository : *satis2nexus*.

```
$ git pull origin master

```

Please delete your packages build directory before updating to avoid any problems.

### Configuration

[](#configuration)

The configuration is made by editing the `satis.json` file located at the root of the project. `satis.json.dist` is an example to guide you.

The `satis.json` file allow you to define the list of the different source code repositories of the projects you want to make available in your composer repository. For this step, you can read [the original Satis documentation](https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#setup).

We have removed the `"homepage"` attribute and added the following elements :

```
{
 "nexus": "http://nexus3.yourdomain.com",
 "nexus-repository": "composer-repository-name",
 "nexus-user": "user_nexus_login",
 "nexus-password": "user_nexus_password"
}

```

A release will be created for each of the tags found inside you Git repositories.

### Commands

[](#commands)

This application is a [symfony console application](https://symfony.com/doc/current/components/console.html), consisting of two tasks, **build** and **purge**.

The best way to use the application is to use a cronjob which will be regularly building and purging the Nexus repository in order to mirror closely what is being released or deleted in your source repositories.

#### Prerequisites

[](#prerequisites)

The application will be making operations using the underlying git command, so you should have the git binary installed on your server, and the user executing the application should have access to the repositories you'll be pushing to Nexus. You can read the [original Nexus documentation](https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#authentication) for more about this.

#### Build command

[](#build-command)

Sends new packages to Nexus (or replaces modified ones).

##### Usage syntax

[](#usage-syntax)

```
$ php bin/satis build --no-interaction \ \

```

- Paramètres
    - **configuration file** : `satis.json` configuration file
    - **build dir** : directory where the `packages.json` file and the zip archives will be created

##### What is going to be done

[](#what-is-going-to-be-done)

- Clone each declared source code repository to create a zip archive for each version tag
- Each archive gets an unique name
- Archives previously created are not created again (based on archive name)
- Archives not present in the Nexus repository are sent
- If a tag is modified, a new archived is created and pushed to the Nexus repository to replace the old one
- A `packages.json` file will be generated and used by the `purge` command

#### Purge Command

[](#purge-command)

Deletes packages in the Nexus repository that no longer exist in the source code repositories.

##### Usage syntax

[](#usage-syntax-1)

```
$ php bin/satis purge

```

- Parameters
    - **configuration file** : satis.json configuration file
    - **build dir** : directory where the `packages.json` file and the zip archives will be created

##### What is going to be done

[](#what-is-going-to-be-done-1)

- Warning : The purge command is based solely on the content of the `packages.json` file, so you can run this command only after the build command has been run.
- Archives found in the Nexus repository but not anymore in the git repository (as a tag) will be deleted

License
=======

[](#license)

Satis2Nexus is licensed under the MIT License - see the LICENSE file for details

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity23

Early-stage or recently created project

 Bus Factor1

Top contributor holds 62.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/436674de5134f88e7bdb24291ac086d0064a2bae939c68e06c6d3eec1021a53f?d=identicon)[joykhub](/maintainers/joykhub)

---

Top Contributors

[![ptsakyrellis](https://avatars.githubusercontent.com/u/13604355?v=4)](https://github.com/ptsakyrellis "ptsakyrellis (5 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![gvnt](https://avatars.githubusercontent.com/u/25453472?v=4)](https://github.com/gvnt "gvnt (1 commits)")

---

Tags

composernexusphpsatis

### Embed Badge

![Health badge](/badges/ac-toulouse-satis2nexus/health.svg)

```
[![Health](https://phpackages.com/badges/ac-toulouse-satis2nexus/health.svg)](https://phpackages.com/packages/ac-toulouse-satis2nexus)
```

###  Alternatives

[deployer/deployer

Deployment Tool

11.0k25.4M207](/packages/deployer-deployer)[appwrite/server-ce

End to end backend server for frontend and mobile apps.

55.3k84.2k](/packages/appwrite-server-ce)[pragmarx/health

Laravel Server &amp; App Health Monitor and Notifier

2.0k1.0M2](/packages/pragmarx-health)[felixfbecker/language-server-protocol

PHP classes for the Language Server Protocol

22476.7M6](/packages/felixfbecker-language-server-protocol)[heroku/heroku-buildpack-php

Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP and Apache2/Nginx as on Heroku

8161.3M10](/packages/heroku-heroku-buildpack-php)[tiamo/phpas2

PHPAS2 is a php-based implementation of the EDIINT AS2 standard

4674.7k](/packages/tiamo-phpas2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
