Giter Club home page Giter Club logo

artipie's Introduction

EO principles respected here DevOps By Rultor.com We recommend IntelliJ IDEA

Build Status Docker Pulls License Hits-of-Code Docker Image Version (latest by date) PDD status

Artipie is an experimental binary artifact management tool, similar to Artifactory, Nexus, Archiva, ProGet, and many others. The following set of features makes Artipie unique among all others:

Quickstart

The fastest way to start using Artipie is via Docker:

docker run --rm --name artipie -p 8080:8080 --user=artipie:artipie artipie/artipie:latest

It'll start a new Docker container with latest Artipie image. A new image generates default server config if not found at /etc/artipie/artipie.yml, prints initial credentials to console and prints a link to the dashboard. If started on localhost with command above, the dashboard URI is http://localhost:8080/dashboard/artipie.

To create a new artifact repository:

  1. Go to the dashboard
  2. Enter the name of a new repository, choose a type, and click button "Add"
  3. Artipie generates standard configuration for this kind of repository, and asks for review or edit. You can ignore this step for now.
  4. Below the repository configuration, the page will have a simple configuration for your client, and usage examples, e.g. the code for pom.xml for Maven repository.

Default server configuration refers to /var/artipie/repos to look up for repository configurations. You may want to mount local configurations here to edit it manually by adding docker run mount option: -v <your-local-config-dir>:/var/artipie/repo, where <your-local-config-dir> is you local config directory.
Important: check that <your-local-config-dir> has correct permissions, it should be 2020:2021, to change it correctly use chown -R 2020:2021 <your-local-config-dir>.

More examples are here.

We recommend you read the "Architecture" section in our White Paper to fully understand how Artipie is designed.

Contents

Storage configuration

For now, we support two storage types: file system and S3 storages. To configure file system storage it is enough to set the path where Artipie will store all the items:

storage:
  type: fs
  path: /urs/local/aripie/data

S3 storage configuration requires specifying bucket and credentials:

storage:
  type: s3
  bucket: my-bucket
  region: my-region # optional
  endpoint: https://my-s3-provider.com # optional
  credentials:
    type: basic
    accessKeyId: xxx
    secretAccessKey: xxx

Storages can be configured for each repository individually in repo configuration yaml or in the _storages.yaml file along with aliases:

storages:
  default:
    type: fs
    path: ./.storage/data 

Then default storage alias can be used to configure a repository:

repo:
  type: maven
  storage: default

Repository permissions

Permissions for repository operations can be granted in the repo configuration file:

repo:
  ...
  permissions:
    jane:
      - read
      - write
    admin:
      - "*"
    /readers:
      - read

All repositories support read and write operations, other specific permissions may be supported in certain repository types.

Group names should start with /, is the example above read operation is granted for readers group and every user within the group can read from the repository, user named jane is allowed to read and write. We also support asterisk wildcard for "any operation" or "any user", user admin in the example can perform any operation in the repository.

If permissions section is absent in repo config, then any supported operation is allowed for everyone, empty permissions section restricts any operations for anyone.

Multitenancy

You may want to run Artipie for your company, which has a few teams. Each team may want to have its own repository. To do this, you create a global configuration file /etc/artipie/artipie.yml:

meta:
  layout: org
  storage:
    type: fs
    path: /tmp/artipie/data/my-docker
  credentials:
    type: file
    path: _credentials.yml

If the type is set to file, another YAML file is required in the storage, with a list of users who will be allowed to create repos (type is password format, plain and sha256 types are supported):

credentials:
  jane:
    type: plain
    pass: qwerty
    email: [email protected] # Optional
  john:
    type: sha256
    pass: xxxxxxxxxxxxxxxxxxxxxxx
    groups: # Optional
      - readers
      - dev-leads

Users can be assigned to some groups, all repository permissions granted to the group are applied to the users participating in this group.

If the type is set to env, the following environment variables are expected: ARTIPIE_USER_NAME and ARTIPIE_USER_PASS. For example, you start Docker container with the -e option:

docker run -d -v /var/artipie:/var/artipie` -p 80:80 \
  -e ARTIPIE_USER_NAME=artipie -e ARTIPIE_USER_PASS=qwerty \
  artipie/artipie:latest

Single repository on port

Artipie repositories may run on separate ports if configured. This feature may be especially useful for Docker repository, as it's API is not well suited to serve multiple repositories on single port.

To run repository on its own port port parameter should be specified in repository configuration YAML as follows:

repo:
  type: <repository type>
  port: 54321
  ...

NOTE: Artipie scans repositories for port configuration only on start, so server requires restart in order to apply changes made in runtime.

Metrics

You may enable some basic metrics collecting and periodic publishing to application log by adding metrics to meta section of global configuration file /etc/artipie/artipie.yml:

meta:
  metrics:
    type: log # Metrics type, for now only `log` type is supported
    interval: 5 # Publishing interval in seconds, default value is 5

To collect metrics via Prometheus, simply configure metrics like this :

meta :
  metrics :
    type : prometheus

Artipie REST API

Artipie provides a set of APIs to manage repositories and users. The current APIs are fully documented here.

Additional configuration

You may want configure it via environment variables:

  • SSL_TRUSTALL - trust all unknown certificates

To configure repository config files location, add to the global configuration file /etc/artipie/artipie.yml:

meta:
  repo_configs: configs

Location is the storage key relatively to the main storage, or, in file system storage terms, subdirectory where repo configs are located relatively to the storage.

Thanks to FreePik for the logo.

artipie's People

Contributors

acheshkov avatar andreoss avatar artemlazarev avatar baudoliver7 avatar brastak avatar chgen avatar dependabot-preview[bot] avatar dgarus avatar g4s8 avatar genryxy avatar hdouss avatar iaroslavscript avatar jeffzhu503 avatar marceloamadeu avatar milkysoft avatar olegmoz avatar olenagerasimova avatar paulodamaso avatar portlek avatar sammers21 avatar victornoel avatar yegor256 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.