Private Artifact Manager using Amazon S3
- Easy & lightweight artifact manager for Java/Scala
- Especially optimized for all-in-one package (e.g. the result of
sbt dist
orsbt assembly
)
- Especially optimized for all-in-one package (e.g. the result of
- No database or extra servers needed except Amazon S3
- Quite simple command line interface (CLI)
- Integrate your daily build & deploy tasks
- Python 2.6 / 2.7
- pytz
- python-dateutil
- GitPython >= 0.3.5
- boto >= 2.38.0
- moto (for testing)
pip
command may needsudo
Operation | Command |
---|---|
Install | pip install artifact-cli |
Upgrade | pip install --upgrade artifact-cli |
Uninstall | pip uninstall artifact-cli |
Check installed version | art --version |
Help | art -h |
The responsibility of the AWS's charge is your own.
Manage your own access key ID and secret access key to call the APIs.
Set permissions to the IAM user.
Create ~/.artifact-cli
file and write credentials for AWS like this:
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
bucket = your-bucket-name
region = your-region (e.g. ap-northeast-1, us-east-1)
You can override these settings by specifying command line options or environment variables.
- Command Line Options (will override the settings from environment variables)
Option | Description |
---|---|
--access ACCESS_KEY |
AWS access key. |
--secret SECRET_KEY |
AWS secret key. |
--bucket BUCKET_NAME |
S3 bucket name. |
--region REGION |
Region name of the S3 bucket. |
- Environment Variables
Variable Name | Description |
---|---|
AWS_ACCESS_KEY_ID |
AWS access key. |
AWS_SECRET_ACCESS_KEY |
AWS secret key. |
AWS_DEFAULT_REGION |
Region name of the S3 bucket. |
Now, you are ready for using art
command in the shell. Just list your artifacts:
$ art list GROUP_ID
[INFO] No artifacts.
Of course, there are no artifacts!
Building is outside the reach of this tool. In other words, you can build as you like.
In the builder's environment, you can upload the artifact to Amazon S3:
$ art upload GROUP_ID /path/to/your-artifact-0.0.1.jar
Specify group id and your local file path.
In this case, artifact ID is
your-artifact
, version is 0.0.1
and packaging is jar
.To view the index data, run art list
or art info
.
Login to the deployer's environment, then download the artifact from Amazon S3:
$ art download GROUP_ID /path/to/deployers/your-artifact-0.0.1.jar 1
To download the latest revision, use latest
keyword. (case-sensitive):
$ art download GROUP_ID /path/to/deployers/your-artifact-0.0.1.jar latest
Deploy the artifact any way you like!
For further information, type art -h
.
The structure of the paths is the following:
your-bucket-name
├── group.id.1 // group ID
│ ├── .meta // meta data directory for each group
│ │ ├── index-awesome-project.json // index data is written as JSON for each artifact ID
│ │ └── index-play-project.json
│ ├── awesome-project // artifact ID
│ │ ├── 0.0.1 // version
│ │ │ ├── 1 // revision (auto assigned, starting from 1)
| │ │ │ └── awesome-project-0.0.1.jar
| │ │ ├── 2
| │ │ │ └── awesome-project-0.0.1.jar
| │ │ ├── 3
| │ │ │ └── awesome-project-0.0.1.jar
| │ │ └── 4
| │ │ └── awesome-project-0.0.1.jar
│ │ └── 0.0.2-SNAPSHOT
│ │ ├── 1
| │ │ └── awesome-project-0.0.2-SNAPSHOT.jar
| │ └── 2
| │ └── awesome-project-0.0.2-SNAPSHOT.jar
│ └── play-project
│ └── 0.0.1
│ └── 1
| └── play-project-0.0.1.zip
└── group.id.2
├── .meta
│ └── index-awesome-project.json
└── awesome-project // completely separated to the group.id.1's artifact
└── 0.0.1
└── 1
└── awesome-project-0.0.1.zip
- This tool supports only artifact-id-level concurrency.
- Simultaneous uploading of the artifacts with same artifact id could let repository broken.