Giter Site home page Giter Site logo

deps-deploy's Introduction

Clojars Project

deps-deploy

A Clojure library to deploy your stuff to clojars with clj or clojure. It's a very thin wrapper around Chas Emericks pomegranate library.

It will read your Clojars username/token from the environment variables CLOJARS_USERNAME and CLOJARS_PASSWORD, and it will get your artifact-name and version from the pom.xml

Usage

To deploy to Clojars, simply merge

{:deploy {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
          :exec-fn deps-deploy.deps-deploy/deploy
          :exec-args {:installer :remote
                       :sign-releases? true
                       :artifact "deps-deploy.jar"}}}

into your deps.edn, have a pom.xml handy (you can generate one with clj -Spom), and deploy with

$ env CLOJARS_USERNAME=username CLOJARS_PASSWORD=clojars-token clj -X:deploy

to deploy to Clojars.

It is also possible to override the default Clojars URL by supplying your own. For example:

$ env CLOJARS_URL=https://internal/repository/maven-releases CLOJARS_USERNAME=username CLOJARS_PASSWORD=password clj -A:deploy

This facilitates deploying artefacts to an internal repository - perhaps a proxy service that is running locally that is used to hold private JARs etc...

If you want to sign using another key than the default key, you can specify the signing key id:

{:deploy {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
          :exec-fn deps-deploy.deps-deploy/deploy
          :exec-args {:installer :remote
                       :sign-releases? true
                       :sign-key-id "1C33430999AA1C3C243A302689CACBAD9979E3C5"
                       :artifact "deps-deploy.jar"}}}

You can use gpg --list-secret-keys --with-subkey-fingerprints to find the key ids that are known on your system.

Deploy to private s3 buckets

To deploy to private s3 buckets, you first need to specify the :repository key in your deps.edn alias with :exec-args as:

:exec-args {:repository {"releases" {:url "s3p://my/bucket/"}}}

Then, when deploying, you need to provide credentials which is done either by:

  1. setting the env vars: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY

  2. providing them via java system properties aws.accessKeyId and aws.secretKey or

  3. via an AWS credential profile, in the file ~/.aws/credentials with the AWS_PROIFLE env var used to specify which profile to use (or the [default] profile).

[default]
aws_access_key_id = AKIAXXXXX
aws_secret_access_key = SECRET_KEY

For more details see s3-wagon-provider and if you need to know how to configure an S3 bucket see here.

A note on Clojars tokens

As of 2020-06-27, Clojars will no longer accept your Clojars password when deploying. You will have to use a token instead. Please read more about this here

Long story short, just go find yourself a token and use it in lieu of your password and you're done.

Install locally

deps-deploy also supports installing to your local .m2 repo, by invoking install instead of deploy:

{:install {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
           :exec-args {:installer :local
                       :artifact "deps-deploy.jar"}}

Signing

If you want to have your artifacts signed, add "true" as the last element of the :main-opts vector like so:

:main-opts ["-m" "deps-deploy.deps-deploy" "install"
            "path/to/my.jar" "true"]

If you don't want to use the default key for signing, you can specify the key id:

:main-opts ["-m" "deps-deploy.deps-deploy" "install"
            "path/to/my.jar" "true" "1C33430999AA1C3C243A302689CACBAD9979E3C5"]

License

Copyright © 2018-2021 Erik Assum

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

deps-deploy's People

Contributors

slipset avatar rickmoynihan avatar dharrigan avatar dcj avatar ieugen avatar puredanger avatar severeoverfl0w avatar greglook avatar liquidz avatar lread avatar mpenet avatar nnichols avatar svdo 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.