Tuesday, May 17, 2016

CentOS how to install Artifactory and Config Artifactory?

第一步:
如何在 Centos 上安装 Artifactory

1 download  Artifactory.zip

mkdir /home/tool/artifactory


cd this path, you use following command

wget --output-document=artifactory-4.4.1.zip "http://bit.ly/Hqv9aj"

---------------------------- 2016-09-14 ----------------------------

FAQ:
之前 这个源http://bit.ly/Hqv9aj是没有问题的。
但是,现在是无法获取的数据的,可能是那个哥们的服务器换地址了。那个建议你去下载一个 到你的本地。


下面教你如何将本地的文件上传到 Centos VPS

进入你下载的文件的目录里面 使用bash

scp fileName root@ip:[port]/home/root/tool/artifactory

OK, 接下里你就而已使用下面的命令了!

---------------------------- 2016-09-14 ----------------------------
mkdir artifactory


unzip artifactory-4.4.1.zip  -d artifactory

cd artifactory 
cd tomcat/conf

vim server.conf

You can do nothings. If you want to change port or else, you can
change the data!

you can find  artifactory/bin
cd bin

just input this command:
./installService.sh


Now we just change config information.


cd /etc/opt/jfrog/artifactory
vim default


you can see the path is right. If it is right you do nothings to it.
if you find wrong, just alter it for right!


Now  start Artifactory:

when I use this command, I meet this error:


# sudo service artifactory start




error info:
no java
Starting Artifactory tomcat as user artifactory...
Max number of open files: 32000
Using ARTIFACTORY_HOME: /home/tool/artifactory/artifactory/artifactory-oss-4.7.7
Using ARTIFACTORY_PID: /home/tool/artifactory/artifactory/artifactory-oss-4.7.7/run/artifactory.pid
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

** ERROR: Artifactory Tomcat server did not start. Please check the logs


I forget to config Java.
So I install java and config JAVA_HOME

yum install java
it will download the java it is so fast!

Now we config JAVA_HOME

cd ~
vim .bash_profile
add this string like this:

$JAVA_HOME=/use/lib/java-1.8.0
export $JAVA_HOME

and use this command:
source .bash_profile.

Ok , you can visit your VPS Artifactory!

just in the Browser, input  
IP:8081

Because it is first login, So it so slowly, you wait one minutes, you can get you want like this:


account:  admin
password:  password

this is default,  when you login in ,you can change it!



第二步:
如何将自己的代码发布到Artifactory

Now Our VPS has Artifactory, We can publish our code to Artifactory Repo.

工作原理,讲你的library 项目打包成 .aar 文件,让后将你的项目上传到 私有的Artifactory 项目中。
当你用的时候,只需要关联一下你的私有服务器的地址,导入你想使用的jar 包,即可!
个人感觉,仓库简直是开源世界的地位,就像是 git 的价值一样! 个人非常的庆幸,最先接触的是Android!

下面,我们开始创建的自己私有的 第三方库


Artifactory 是管理 Maven仓库的工具
为什么使用Artifactory?

  1. 清晰且有吸引力的用户界面
  2. 超快速配置
  3. Gradle插件
  4. 用户访问控制
  5. 自由和开放来源


你先 创建一个新的项目

  这个项目就是你要封装的私有的插件库代码。

在project 下的 build.grade

like this:


// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        //2  artifactory (制定版本)        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }
}

allprojects {
    repositories {
        //1  自己私有服务器的依赖库  (如果你用本地的可以不用写的)        maven { url "IP/artifactory/libs-release-local" }
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir}

然后,到你的 module的 (也就是 app目录下面的)build.gradle

在文件的顶部如下配置:

我们将需要两个新的插件:
一个准备Maven artifact maven-publish,
另一个上传archives到artifactory com.jfrog.artifactory:


apply plugin: 'com.android.library'apply plugin: 'com.jfrog.artifactory'apply plugin: 'maven-publish'

每一个Maven artifact都由以下三个参数确定:
* artifactId:库的名称
* groupId:通常库的包名
* version:区别同一artifact的不同版本

一般的,我们将在build.gradle文件顶部定义这两个变量(便于修改!)
def packageName = 'com.chow.ui'def libraryVersion = '1.0.2-release'

artifactId需要和assemblerelease任务输出的文件名相匹配。因此我们要重命名库模块或指定输出文件名。我个人比较喜欢第一种方法,可以通过下面这种方式得到artifactId:

一般可以自己定义,可以使用 project.getName()


如何发布呢?
我们需要配置  maven-publish

我们需要配置 Maven-publish,  这样就知道哪一个artifactory 将要发布到的Artifactory.
我们引用和使用的时候,应用的是 ***-release.aar 文件,他是有 assembleRelease 任务生成。请注意,我们可以通过更改 库项目的名称来修改这个名字!是可以自己配置的。


个人建议,如果不是稳定的版本,建议使用debug 作为后缀包名。 如果版本比较的稳定了,使用release 作为后缀包名!

publishing {
    publications {
        aar(MavenPublication) {
            groupId packageName
            version = libraryVersion
            artifactId project.getName()

            // Tell maven to prepare the generated "* .aar" file for publishing
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
      }
    }
}

最后: 
    我们需要配置 com.jorg.artifactory 插件, 来指定 artifactory 发布到那个 仓库的管理器(因为,你可能使用本地的仓库,你也可以使用不同的服务器的地址,自己指定)。
配置如下:


artifactory {
    contextUrl = 'IP//artifactory'    publish {
        repository {
            // The Artifactory repository key to publish to            repoKey = libraryVersion.endsWith('SNAPSHOT') ? 'libs-snapshot-local' : 'libs-release-local'
            username = artifactory_username            password = artifactory_password        }
        defaults {
            // Tell the Artifactory Plugin which artifacts should be published to Artifactory.            publications('aar')
            publishArtifacts = true
            // Properties to be attached to the published artifacts.            properties = ['qa.level': 'basic', 'dev.team': 'core']
            // Publish generated POM files to Artifactory (true by default)            publishPom = true        }
    }
}


注意:这里的
username = artifactory_username
password = artifactory_password

artifactory_username 
artifactory_password
这两个字段在  gradle.propertice  中
就是你登录 Artifactory的 用户名和密码,注意你的用户的权限奥.上传一般没什么问题!



最后一步;  部署 Artifactory

就一句命令行,很简单的。
gradle assembleRelease artifactoryPublish

如果在你的 服务器上看到:



恭喜你,成功了~





我们的私有的第三方的库,已经弄好了。下面,我们来看看怎么使用呢?

只需要两步:

在项目的 build.gradle
allprojects {
    repositories {
        maven { url "http://localhost:8081/artifactory/libs-release-local" }
    }
}

在 module   build.grade
dependencies {
    compile 'com.jeroenmols.awesomelibrary:1.0.0'
}

compile    包名:项目名:版本号码


     大功告成,现在你可以做自己的私有的服务器仓库了。哈哈。屌屌的,很开心,终于可以开始自己愉快的玩耍了。刚开始接触的时候,我并不了解Artifactory. 而且搞了几周,各种资源不足,那个时候的我,只是搭载了一个本地的。 因为没有自己的服务器,尽管搭好了Artiactory. 但是,不会用Gradle将项目上传到 Artifactory  Maven 仓库,也是白费。
   后来,我有了一些资本。自己的VPS, 更深的了解了,Gradle!
我发现了,当你遇到一个不懂的技术的时候,一定要去搞。不要害怕,一开始,你不可能完全的弄明白。但是,你只要搞了,你就会了解的更多,在此来接触的时候,你就有可能搞明白了!就是这个样子!
  我们只是对自己的无知,感到恐惧!



Thanks To:
http://geekhades.blogspot.com/2016/05/cents-how-to-install-artifactory.html



http://blog.strive-ltd.com/2016/03/308-install-artifactory-on-centos-7/



30分钟搭建一个android的私有Maven仓库






FAQ:
1  因为我的VPS使用了SSH认证,因为SSH  对于权限的问题比较敏感

如果,
当你使用:sudo service artifactory start
你遇到这种问题的时候:


你可以进图 artifactory/Tomcat dir  自己手动的开启 startup.sh  shutdown.sh


2  还有,你在卸载的时候,你可能忘记把Tomcat给Stop掉。

没有使用  sudo service artifactory stop

这个时候,当你使用 sudo service artifactory stop
是有问题的。因为Tomcat  PID 是错的,所以无法调用Tomcat stop.













No comments:

Post a Comment