Giter VIP home page Giter VIP logo

front's Introduction

Join our Telegramm group

Javadoc License codecov Hits-of-Code Docker Pulls Docker Image Version (latest by date)

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

Learn more about Artipie in our Wiki.

Publications about Artipie:

Quickstart

Artipie is distributed as Docker container and as fat jar. The jar file can be downloaded on the GitHub release page and here is a Wiki page describing how to start it. The fastest way to start Artipie is by using Docker container. First, make sure you have already installed Docker Engine. Then, open command line and instruct Docker Engine to run Artipie container:

docker run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest

It'll start a new Docker container with latest Artipie version, the command includes mapping of two ports: on port 8080 repositories are served and on port 8086 Artipie Rest API and Swagger documentation is provided. A new image generate default configuration, prints a list of running repositories, test credentials and a link to the Swagger documentation to console. To check existing repositories using Artipie Rest API:

  • go to Swagger documentation page http://localhost:8086/api/index.html, choose "Auth token" in "Select a definition" list,
  • generate and copy authentication token for user artipie/artipie,
  • switch to "Repositories" definition, press "Authorize" button and paste the token
  • then perform GET /api/v1/repository/list request. Response should be a json list with three default repositories:
[
  "my-bin",
  "my-docker",
  "my-maven"
]

Artipie server side (repositories) is served on 8080 port and is available on URI http://localhost:8080/{reponame}, where {reponame} is the name of the repository. Let's put some text data into binary repository:

curl -X PUT -d 'Hello world!' http://localhost:8080/my-bin/test.txt

With this request we added file test.txt containing text "Hello world!" into repository. Let's check it's really there:

curl -X GET http://localhost:8080/my-bin/test.txt

"Hello world!" should be printed in console.

To dive in deeper into Artipie configuration, features, explore repositories and storages settings, please, address our Wiki.

Default server configuration in Docker Container refers to /var/artipie/repo to look up for repository configurations. You may want to mount local configurations <your-local-config-dir> to /var/artipie/repo to check and edit it manually.

Important: for provided Artipie docker containers <your-local-config-dir> should have directory ownership set to 2021:2020. To change it correctly use sudo chown -R 2021:2020 <your-local-config-dir>.

If you have any question or suggestions, do not hesitate to create an issue or contact us in Telegram.
Artipie roadmap.

How to contribute

Fork repository, make changes, send us a pull request. We will review your changes and apply them to the master branch shortly, provided they don't violate our quality standards. To avoid frustration, before sending us your pull request please run full Maven build:

$ mvn clean install

To avoid build errors use Maven 3.2+ and please read contributing rules.

Thanks to FreePik for the logo.

How to release

Artipie service is released in several formats:

All these distributions are created by GitHub workflows. To publish release, push tag starting with v into this repository masted branch:

git tag v1.2.0
git push --tags origin

front's People

Contributors

andpopov avatar chgen avatar dependabot[bot] avatar dgarus avatar g4s8 avatar olenagerasimova avatar swizbiz avatar yuurga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

front's Issues

Dashboard: process errors

Now all the possible errors while working with dashboard are displayed in the browser as simple text: json object with error description or exception stack trace. Let's process all the errors properly by showing them on the pages in human-readable format.

Support auth from environment

Let's support auth from environment as Artipie itself does. Variables for username and password are ARTIPIE_USER_NAME, ARTIPIE_USER_PASS.

Dashboard: create repository page

"Delete" button on the page to create repository looks confusing: repository in not yet created, thus there is nothing to delete. I'd suggest to rename it to "cancel"; this "cancel" button should simply redirect to the main user page with repositories list and discard all the changes.

Parse artipie configuration file

Parse Artipie YAML configuration file from /etc/artipie/artipie.yml and create Storage instance based on these files (maybe create BlockingStorage instead of Storage).

This project needs a quick start guide

I am not a Java programmer, and just want to get/try the front end to Artipie.

Can you pleasde add a short "Getting Started" guide that outlines how to build / deploy (ideally containerised)

After more time than it should have taken I was able to build the project (mvn package) but now I have a jar file, it is not clear to me how to deploy - what is the container/web server etc?

Many Thanks

Configure service port from arguments

Docker passes port argument as --port=8080 to main, now it's not read in main. Let's parse this value from command line arguments and use as service port in Service.start() method.

[Feature] Allow SSO from openidc/keycloak

Artipie supports Keycloak authentication. However, there is currently no support to re-use existing Keycloak logins. This leads to users having to login again specifically for the Artipie dashboard.

In my use case, I have a reverse proxy that handles authorization with my Keycloak instance. So, when users reach the Artipie frontend, they are in fact already authenticated with Keycloak.

Within my reverse proxy, I have the user information and the token readily available. What would be ideal if if I can pass the token from Keycloak directly to the artipie frontend, where Artipie can directly authenticate the user with the token without having to show another login form.

I know this is probably quite some work. There are a number of other applications that already do this.

For example:
Fallenbagel/jellyseerr#184

I'm myself just an user of keycloak / openidc and I am trying to install SSO for the applications that I manage. I'm having trouble with Artipie. I just wanted to let you know that this may be something you want to support in the future :)

If there is anything I can do to clarify or help let me know!

GitHub auth: remove `github.com/` prefix

After user of authorized with github credentials and prefix github.com/, this prefix should not be used and username itself should be added to session attributes.

Dashboard: dash '-' symbol in repository name

When you edit repository name on dashbord the symbol '-' disallowed now, for example 'docker-repo' is forbedden now.
Repository name should allow to enter name containing '-' symbol.

Design a public REST API

Design public API for repositories, users, permissions and storage:

  • /repositories/{name} - for repositories
  • /users/{name} - for users
  • /permissions/{name} - for permissions
  • /storage/{name} - for storage

All APIs are REST APIs with standard resource semantic. Support GET, PUT, HEAD, DELETE methods, e.g.:

  • GET /repositories - list all repositories
  • GET /repositories/{name} - get repository details
  • PUT /repositories/{name} - creates new repository from payload (if no conflicts)
  • HEAD /repositories/{name} - check repository exist (200 or 404 status)
  • DELETE /repositories/{name} - delete repository by name

Let's start with some core design of these APIs, and then we decompose it to smaller tasks.

API integration tests

Let's add integration tests for API endpoints, goals of these tests are:

  • make sure API endpoints are available by correct paths
  • permissions/auth works as expected

Cache and reload users

We need to implement some self-reloading cache for YamlCredentials: now credentials yaml file is read on app start and never reloaded again.

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.