DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
| Info | ||
|---|---|---|
| ||
NB! As of 9 September 2021 the uploading to Artifactory is no longer available. A new CI system needs to be set up on Apache infra. |
| Table of Contents |
|---|
Fineract-CN projects depend on each other. The simplest option is to build all projects locally so artifacts are published to local maven repository and available from there.
...
- in shared.gradle (or if it doesn't exist then in build.gradle):
- If not already, add snapshots repository to list of repositories so it looks like this:
repositories {
jcenter()
mavenLocal()
maven { url 'https://mifos.jfrog.io/mifos/libs-snapshot/' }
} - Underheath jar or publishing block add instructions for the new plugin:
artifactory {
contextUrl = System.getenv("ARTIFACTORY_URL")
publish {
repository {
repoKey = project.findProperty('artifactoryRepoKey')
username = System.getenv("ARTIFACTORY_USER")
password = System.getenv("ARTIFACTORY_PASSWORD")
}
defaults {
publications ('api', 'componentTest', 'service', 'bootService') // TODO add projectnamePublification here
}
}
}
artifactoryPublish.dependsOn('clean','publishToMavenLocal')
- If not already, add snapshots repository to list of repositories so it looks like this:
- in every module build.gradle
- In list of plugins add plugin:
id "com.jfrog.artifactory" version "4.9.5" - In publishing → publications → projectnamePublification
replace (or add if not present)version project.version
with:version project.findProperty('externalVersion') ?: project.version
- If publification name is mavenJava then give it a correct name (i.e. componentTest)
- In list of plugins add plugin:
- If shared.gradle exists then add to build.gradle (after publishToMavenLocal)
task artifactoryPublish {
group 'all'
dependsOn publishToMavenLocal
dependsOn gradle.includedBuild('api').task(':artifactoryPublish')
dependsOn gradle.includedBuild('libraryservice').task(':artifactoryPublish')
dependsOn gradle.includedBuild('component-test').task(':artifactoryPublish')
// TODO add other modules found in the same file
} - Add travis banner to top of README.md (replace reponame with correct value):
[](https://travis-ci.com/apache/fineract-cn-reponame)
- Add travis.sh (copy-paste from other project that is already included)
- Add .travis.yml - travis-ci.com looks for this file
language: java
sudo: false
jdk:
- openjdk8
install: true
script: "./travis.sh"
env:
global:- BUILD_SNAPSHOTS_BRANCH=develop
- ARTIFACTORY_URL=https://mifos.jfrog.io/mifos
- ARTIFACTORY_USER=travis-ci1
- secure: "see below chapter Encrypt Artifactory password"
...
export ARTIFACTORY_URL=https://mifos.jfrog.io/mifosexport ARTIFACTORY_USER=travis-ci
export ARTIFACTORY_PASSWORD=xxx
./gradlew -PartifactoryRepoKey=libs-snapshot-local artifactoryPublish
...
- Common Maven repository configuration is used - this means:
- Snapshots are uploaded to "libs-snaptshots-local" and releases to "libs-release-local"
- There are two virutal repositories libs-snapshots (includes libs-snapshots-local) and libs-release (includes libs-release-local)
- Remote repositories are deleted (as we don't want the reposiotry to be a proxy for JCentral)
- A user "travis-ci" has been configured who has rights to upload artifacts but it has no UI access
- the password for this user is encrypted with travis public keys (travis creates a public key for each individual reposiotry) and set into .travis.yml
- Anonymous access has been enabled for anyone to download the artifacts
Troubleshooting
How to verify that the new artifact was uploaded
Let's take this pull request as an example: https://github.com/apache/fineract-cn-lang/pull/10
When this pull request was merged - new jar (and pom) should have been built and uploaded to Mifos Jfrog Artifactory. Let's check if it happened correctly.
We can check the Travis builds of fineract-cn-lang from here: https://travis-ci.com/apache/fineract-cn-lang/builds
Find the correct pull request from the list (pull request #10) and on the same line click on "develop" in the beginning of row.
Build details page (https://travis-ci.com/apache/fineract-cn-lang/builds/114688396) opens up.
Scroll to the end of the logs - you can see:
Deploying artifact: https://mifos.jfrog.io/mifos/libs-snapshot-local/org/apache/fineract/cn/lang/0.1.0-BUILD-SNAPSHOT/lang-0.1.0-BUILD-SNAPSHOT.jar
Now we can navigate to Jfrog and check if we see it from there:
Go to Artifactory (no need to log in): https://mifos.jfrog.io/mifos/
Choose "Artifact repository browser" icon from the left (icon is like pile of paper).
You will end up on this page: https://mifos.jfrog.io/mifos/webapp/#/artifacts/browse/tree/General/libs-release
Choose "libs-snapshot" from the left. You will end up here:
https://mifos.jfrog.io/mifos/webapp/#/artifacts/browse/tree/General/libs-snapshot
Click "find" icon on top and search "fineract-cn-lang".
"org" appears in search result. Expand it to org → apache → fineract → cn → lang → 0.1.0-BUILD-SNAPSHOT
In the end of list you should see the uploaded artifact (you can use the upload date to check).
In our example the uploaded artifact is this:
How to get the latest artifact
Latest artifact is available here: http://mifos.jfrog.io/mifos/libs-snapshot/org/apache/fineract/cn/lang/0.1.0-BUILD-SNAPSHOT/lang-0.1.0-BUILD-SNAPSHOT.jar
But it might not work (especially if you are using a network with a proxy server).
Each snapshot artifact in artifactory has its own filename. So in this case you might need the unique filename.
One way would be to use the Atifactory UI (https://mifos.jfrog.io/mifos ) to find it (see instructions in previous chapter). Another option would be to use Maven.
Using Maven
You have to craft a pom.xml file with the dependencies that you want. Then you run mvn package and you have the dependency updated in your local maven repo.
See Step 2, Option #1 ("You clone demo-server and let it download all dependendent fineract-cn-* libraries and projects from Artifactory to your local Maven repository") from How To Build Apache Fineract CN for an example.
Using artifactory
Get latest version (see JFrog rest api documentation for more info):
It returns something like this "0.1.0-BUILD-20190607.052703-26"
And then use it to pull latest from https://mifos.jfrog.io/mifos/libs-snapshot/org/apache/fineract/cn/lang/0.1.0-BUILD-SNAPSHOT/
like this: