WarpFleet Synchronizer is a Web server which aims to synchronize your Git repositories containing macros against your Warp 10 instance.
WarpFleet Git Synchronizer for Warp 10 is a Web server that aims to synchronize your Git repositories containing macros (WarpScript) with your Warp 10 instance.
Warp 10 provides a powerful repository manager through the WarpFleet mechanism and especially the WarpFleet Resolver.
The main idea is to use a post-commit hook in your favorite Git SCM (GitHub, GitLab, …) to run a synchronization. WarpFleet Synchronizer then runs a git clone/pull locally. Your Warp 10 instance uses WarpFleet Synchronizer as a WarpFleet Resolver backend.
Setup
The setup is easy. You have to compile and package WarpFleetSynchronizer. At first, get the source code here: https://github.com/senx/WarpFleetSynchronizer
git clone https://github.com/senx/WarpFleetSynchronizer.git
cd WarpFleetSynchronizer
./gradlew shadowJar
Now you have to configure your first repo. Create a file conf.json
:
{
"host": "0.0.0.0",
"port": 8082,
"remotes": "*",
"repos": [
{
"name": "my-warpfleet-macros", // must be unique
"url": "git@github.com:senx/my-warpfleet-macros.git",
"passphrase": "sshPass"
}
]
}
You can configure public or private repositories depending on your needs, HTTP(S) or git URLs, with ssh or user/password authentication.
Public repo:
{
"name": "my-warpfleet-macros",
"url": "https://github.com/senx/my-warpfleet-macros.git"
}
Private repository with ssh (you may have an SSH key deployed on your server):
{
"name": "my-warpfleet-macros",
"url": "git@github.com:senx/my-warpfleet-macros.git"
}
Private repository with SSH and passphrase:
{
"name": "my-warpfleet-macros",
"url": "git@github.com:senx/my-warpfleet-macros.git",
"passphrase": "sshPass"
}
And private repository with credentials:
{
"name": "my-warpfleet-macros",
"url": "https://github.com/senx/my-warpfleet-macros.git",
"username": "homer",
"password": "httpPass"
}
Run it
java -jar WarpFleetSynchronizer.jar ./path/to/conf.json
Of course, you can embed it into a Docker image.
FROM openjdk:8-jre-slim
WORKDIR /ADD build/libs/WarpFleetSynchronizer.jar WarpFleetSynchronizer.jar
EXPOSE 8082
CMD java -jar WarpFleetSynchronizer /opt/conf.json
docker build -t WarpFleetSynchronizer .
docker run -d -p 8082:8082 -v /path/to/conf.json:/opt/conf.json WarpFleetSynchronizer
First run
At first run, you have to synchronize your repo. You can use the dedicated endpoint (the post-commit webhook):
http://<ip of warpfleet sync>:8082/api/sync/my-warpfleet-macros
You can test if you can reach your macro:
http://<ip of warpfleet sync>:8082/macros/my-warpfleet-macros/path/to/macro.mc2
Now setup Warp 10 ( /path/to/warp10/etc/conf.d/20-warpfleet.conf
)
warpfleet.macros.repos = http://<ip of warpfleet sync>/macros
More info about warp10.io.
Done!
Git webhook
WarpFleet Synchronizer exposes an API, especially this endpoint:
http://<ip of warpfleet sync>:8082/api/sync/my-warpfleet-macros
Use it to refresh your macros.
More info about APIs.
Roadmap
- Distribute a binary
- Provide a GUI
- Publish a Doker image
Read more
Thinking in WarpScript - Protecting Secrets
WarpFleet Gradle Plugin
Aggregate by calendar duration in WarpScript
Senior Software Engineer